根据Google Big Query GUI,我有一张表格,其中包含353340737871 rows
(约3530亿)和以下架构:
Field name Type Mode Description
TS TIMESTAMP REQUIRED
QR STRING REQUIRED
RCDS RECORD REPEATED
RCDS. COL1 STRING REQUIRED
RCDS. COL2 STRING REQUIRED
RCDS. COL3 STRING REQUIRED
RCDS. COL4 STRING REQUIRED
现在,如果我跑步:
SELECT
COUNT(*)
FROM
my_dataset.my_table
,UNNEST(RCDS)
它将返回1495670921285 rows
(约1.5万亿美元)。
如果表的集合被展平,可以安全地假设所有数据都存在吗?
还有另一种验证方法吗?
答案 0 :(得分:0)
这取决于您认为是扁平化的:如果数组为空该怎么办?您是否要保留该行?
如果要保留它,则必须url
-如果要删除它,可以将其保留为LEFT JOIN
或,
的版本。
CROSS JOIN
的一个更好表现的版本是对数组长度求和:
cross join
对于左连接,您必须确保在array_length返回0的情况下将总和加1。
答案 1 :(得分:0)
当RCDS为空时,您的查询缺少数据行。 LEFT JOIN给您更多行,其中RCDS。*为NULL。
SELECT
COUNT(*)
FROM
my_dataset.my_table
LEFT JOIN UNNEST(RCDS)