我查看了Google大查询数据类型的文档,检查了TimeStamp与Datetime数据类型之间的差异.
据我了解,主要区别是:
与Timestamps不同,DATETIME对象不会及时引用绝对实例.相反,它是民用时间,或用户在手表或日历上看到的时间.
那我什么时候应该使用Timestamp/Datetime?
谢谢
碰巧我在BigQuery的字段中有一个字符串化数组
'["a","b","c"]'
Run Code Online (Sandbox Code Playgroud)
我想将它转换为BigQuery理解的数组.我希望能够在标准SQL中执行此操作:
with k as (select '["a","b","c"]' as x)
select x from k, unnest(x) x
Run Code Online (Sandbox Code Playgroud)
我已经尝试过,JSON_EXTRACT('["a","b","c"]','$')而且我可以在网上找到其他所有东西.
有任何想法吗?
我需要一些帮助来理解 bigquery 标准 sql 中的连接。我想做一个左连接,保留 table1 中的所有列,如果 2 个字段匹配或不同的 2 个字段匹配,则连接到 table2。这应该在我的例子中更好地解释。
表格1:
id1 id2 column1
1 a first
2 b second
3 c third
4 d fourth
5 e fifth
6 f sixth
Run Code Online (Sandbox Code Playgroud)
表 2:
id3 id4 column2
1 5674 alpha
2 4535 bravo
345 a charlie
341 b delta
Run Code Online (Sandbox Code Playgroud)
如果 id1 = id3 OR id2 = id4,我想保留 table1 中的所有行和 table2 中的所有行,结果表将如下所示:
结果:
id1 id2 column1 id3 id4 column2
1 a first 1 5674 alpha
1 a first 345 …Run Code Online (Sandbox Code Playgroud) 当我环顾四周的时候,我没有找到任何简单的答案,所以我想我会把它放在这里,以防任何人遇到与我相同的问题本来应该是一个微不足道的问题.
我在Google的BigQuery中使用ReDash分析,并在数据源设置中启用了标准SQL.出于我的查询的目的,我需要将时间戳 - 以毫秒为单位的unix时间(作为字符串)转换为Date格式,以便我可以使用DATE_DIFF方法.
作为一个例子...... "1494865480000"来"2017-05-15"
困难在于转换和转换过于严格,似乎没有足够的方法来解析它.请参阅下面的答案!(虽然让我知道一些SQL sensei是否知道更有说服力的方式!)
我正在查询 BigQuery 上的表,该表具有“DATE”格式的字段。我想以“TIMESTAMP”格式阅读此内容。我尝试将 DATE 转换为整数,然后转换为 TIMESTAMP,但似乎不起作用。
我有一个包含两列的表:id和score。我想创建第三列,等于个人score落入的分位数。我想在 BigQuery 的标准 SQL 中执行此操作。
这是my_table:
+----+--------+
| id | score |
+----+--------+
| 1 | 2 |
| 2 | 13 |
| 3 | -2 |
| 4 | 7 |
+----+--------+
Run Code Online (Sandbox Code Playgroud)
然后我想要下表(示例显示为四分位数,但我对四分位数/五分位数/十分位数感兴趣)
+----+--------+----------+
| id | score | quaRtile |
+----+--------+----------+
| 1 | 2 | 2 |
| 2 | 13 | 4 |
| 3 | -2 | 1 |
| 4 | 7 | 3 | …Run Code Online (Sandbox Code Playgroud) 我正在使用标准SQL,即使它是基本查询,它仍然会引发错误。任何建议请
SELECT
fullVisitorId,
CONCAT(CAST(fullVisitorId AS string),CAST(visitId AS string)) AS session,
date,
visitStartTime,
hits.time,
hits.page.pagepath
FROM
`XXXXXXXXXX.ga_sessions_*`,
UNNEST(hits) AS hits
WHERE
_TABLE_SUFFIX BETWEEN "20160801"
AND "20170331"
ORDER BY
fullVisitorId,
date,
visitStartTime
Run Code Online (Sandbox Code Playgroud) 是否可以在BigQuery中基于现有表的JOIN表上执行UPDATE?
当我在以下数据库(https://bigquery.cloud.google.com/dataset/pfamdb:pfam31)上尝试此语句时,
UPDATE pfam31.uniprot
SET uniprot.auto_architecture = uniprot_architecture.auto_architecture
INNER JOIN
pfam31.uniprot_architecture using(uniprot_acc)
Run Code Online (Sandbox Code Playgroud)
我收到与有关的错误INNER JOIN,而WHERE不是预期的错误。我应该怎么做(如果可能的话)?
我在 BigQuery 中匹配正则表达式时遇到问题。我有以下代码行试图识别用户代理:
when regexp_contains((cs_user_agent), '^AppleCoreMedia\/1\.(.*)iPod') then "iOS App - iPod"
Run Code Online (Sandbox Code Playgroud)
但是,由于某种原因,BigQuery 似乎不喜欢转义序列,并且出现了我无法弄清楚的错误:
Syntax error: Illegal escape sequence: \/ at [4:63]
Run Code Online (Sandbox Code Playgroud)
这段代码在我使用的正则表达式验证器中运行良好,但 BigQuery 对它不满意,我不知道为什么。在此先感谢您的帮助
我有按插入时间划分的BQ表。我正在尝试从表中删除重复项。这些是真正的重复项:对于2个重复的行,所有列均相等-当然,使用唯一键可能会有所帮助:-(
最初,我尝试使用SELECT查询来枚举重复项并将其删除:
SELECT
* EXCEPT(row_number)
FROM (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY id_column) row_number
FROM
`mytable`)
WHERE
row_number = 1
Run Code Online (Sandbox Code Playgroud)
这将导致唯一的行,但会创建一个不包含分区数据的新表-不好。
我在这里看到了这个答案,它说明了保留分区的唯一方法是通过上述查询一个一个地遍历它们并保存到特定的目标表分区。
我真正想做的是使用DML DELETE删除适当的重复行。我尝试了类似于此答案建议的内容:
DELETE
FROM `mytable` AS d
WHERE (SELECT ROW_NUMBER() OVER (PARTITION BY id_column)
FROM `mytable ` AS d2
WHERE d.id = d2.id) > 1;
Run Code Online (Sandbox Code Playgroud)
但是接受的答案无效,并导致BQ错误:
Error: Correlated subqueries that reference other tables are not supported unless they can be de-correlated, such as by transforming them into an efficient JOIN …