如何验证(嵌套)巨大的嵌套表的行数?

时间:2019-10-21 12:22:02

标签: google-bigquery

根据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万亿美元)。

如果表的集合被展平,可以安全地假设所有数据都存在吗?

还有另一种验证方法吗?

2 个答案:

答案 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)