我刚刚发现RAND()函数虽然没有文档,但在BigQuery中有效.我能够使用以下方法从莎士比亚数据集中生成一个(看似)10个单词的随机样本:
SELECT word FROM
(SELECT rand() as random,word FROM [publicdata:samples.shakespeare] ORDER BY random)
LIMIT 10
Run Code Online (Sandbox Code Playgroud)
我的问题是:使用这种方法代替参考手册"高级示例"部分中定义的HASH()方法有什么缺点吗?https://developers.google.com/bigquery/query-reference
假设我在BigQuery中有一个包含2列的表.第一列表示名称,第二列是任意长度的分隔值列表.例:
Name | Scores
-----+-------
Bob |10;20;20
Sue |14;12;19;90
Joe |30;15
Run Code Online (Sandbox Code Playgroud)
我想转换为第一个是名称的列,第二个是单个得分值,如下所示:
Name,Score
Bob,10
Bob,20
Bob,20
Sue,14
Sue,12
Sue,19
Sue,90
Joe,30
Joe,15
Run Code Online (Sandbox Code Playgroud)
这可以单独在BigQuery中完成吗?
今天早上关于新表通配符功能的好消息!有没有办法在包含日期但没有前缀的表上使用TABLE_DATE_RANGE()?
我有一个数据集,其中包含名为YYYYMMDD(无前缀)的表.通常我会这样查询:
SELECT foo
FROM [mydata.20140319],[mydata.20140320],[mydata.20140321]
LIMIT 100
Run Code Online (Sandbox Code Playgroud)
我尝试了以下但是我收到了一个错误:
SELECT foo
FROM
(TABLE_DATE_RANGE(mydata.,
TIMESTAMP('2014-03-19'),
TIMESTAMP('2015-03-21')))
LIMIT 100
Run Code Online (Sandbox Code Playgroud)
以及:
SELECT foo
FROM
(TABLE_DATE_RANGE(mydata,
TIMESTAMP('2014-03-19'),
TIMESTAMP('2015-03-21')))
LIMIT 100
Run Code Online (Sandbox Code Playgroud) 有没有一种简单的方法在BigQuery查询语言中进行URL解码?我正在使用一个包含某些值中包含URL编码字符串的列的表.例如:
http://xyz.com/example.php?url=http%3A%2F%2Fwww.example.com%2Fhello%3Fv%3D12345&foo=bar&abc=xyz
Run Code Online (Sandbox Code Playgroud)
我像这样提取"url"参数:
SELECT REGEXP_EXTRACT(column_name, "url=([^&]+)") as url
from [mydataset.mytable]
Run Code Online (Sandbox Code Playgroud)
这给了我:
http%3A%2F%2Fwww.example.com%2Fhello%3Fv%3D12345
Run Code Online (Sandbox Code Playgroud)
我想做的是:
SELECT URL_DECODE(REGEXP_EXTRACT(column_name, "url=([^&]+)")) as url
from [mydataset.mytable]
Run Code Online (Sandbox Code Playgroud)
从而返回:
http://www.example.com/hello?v=12345
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我想避免使用多个REGEXP_REPLACE()语句(替换%20,%3A等...).
想法?
我们正在尝试使用BigQuery来分析我们的软件应用程序生成的用户数据.
我们的工作表包含数亿行,每行代表一个唯一的用户"会话".每个包含时间戳,UUID和其他字段,描述用户在该会话期间与我们的产品的交互.我们目前每天生成大约2GB的数据(~10M行).
我们经常会对整个数据集运行查询(现在大约需要2个月,并且还在增长),但是典型的查询只会跨越一天,一周或一个月.我们发现随着表格的增长,我们的单日查询变得越来越昂贵(正如我们所期望的那样,给予BigQuery架构)
查询我们数据子集的最佳方法是什么?我能想到的一种方法是按天(或周,月等)将数据"分区"到单独的表中,然后在联合中一起查询它们:
SELECT foo from
mytable_2012-09-01,
mytable_2012-09-02,
mytable_2012-09-03;
有没有比这更好的方法???
我正在将批处理文件加载到表中。
我想在表中添加一个时间戳列,以便可以知道记录中的插入时间。我正在以附加模式加载,因此并非所有记录都同时插入。
不幸的是,我在大型查询中找不到解决方法。当将文件加载到表中时,我没有找到用其他列添加填充填充的选项。我只想在代码中计算时间戳并将其作为所有插入过程的常量字段。
我现在正在执行的解决方案是加载到临时表,然后将表+新时间戳字段查询到目标表中。它可以工作,但是这是另一步骤,我要进行多次加载,由于另一步骤的延迟,整个过程会花费太多时间。
有人知道只有一步之遥的另一种解决方案吗?
这个查询:
SELECT payload.pages FROM FLATTEN([publicdata:samples.github_nested] , payload)
ORDER BY created_at
LIMIT 1000
Run Code Online (Sandbox Code Playgroud)
结果出现此错误:
Error: Field payload.pages from table publicdata:samples.github_nested is not a leaf field.
Run Code Online (Sandbox Code Playgroud)
这是一个错误还是我做错了什么?
我有一个数据框,其中一列包含以空格分隔的字符代码列表:
"Ab B C"
""
"X C"
"N Ab F S"
:
Run Code Online (Sandbox Code Playgroud)
我想将其转换为多个列,每个列对应一个不同的值,指示(在1或0中)该值在列表中找到.以上示例给出了期望的结果:
df$Ab = 1,0,0,1
df$B = 1,0,0,0
df$C = 1,0,1,0
df$F = 0,0,0,1
df$N = 0,0,0,1
Run Code Online (Sandbox Code Playgroud)
做这个的最好方式是什么?
我有一个表"事件"由2列组成:
userId | eventDate
-------+-------------------
s234124| 2015-01-01
a2s3166| 2015-01-02
c216782| 2015-01-03
z312235| 2015-01-04
Run Code Online (Sandbox Code Playgroud)
userId是用户标识.eventDate表示该用户发生事件的日期.
我想每天计算在该日期结束的30(或7或60等)日期间的活动唯一身份用户数.活动的唯一用户被定义为在给定窗口期间至少具有一个事件的userId.
我读过这篇文章,它描述了一个类似的问题,但我很难适应我的用例.