如何在Big Query中展平表格的正确性?

时间:2019-05-31 11:08:21

标签: google-bigquery flatten

我有下表:

Table 1 Table 2

在表2(黄色字段)中,第一个字段是以下内容的一部分:

name1                       RECORD      NULLABLE    
name1. name2                RECORD      REPEATED    
name1.name2. date_inserted  TIMESTAMP   NULLABLE

您会看到第25行的最后一个(子行?)是灰色的,因为它是重复记录name1.name2的一部分

我试图将表2与表1(橙色字段)连接到另一个字段。我有0条记录或重复记录的经验,但是使用FLATTEN()设法加入了这些记录。

问题是,我注意到联接后的第二个日期开始返回NULL,尽管之前没有任何NULL。因此,由于我无法弄清楚什么是灰色单元格,因此我想我做错了。

所有这些总结为:如何完全展平我要使用的所有表,以便根本没有任何记录,因此可以使用简单的SQL语句遍历数据?请提供一个例子。寻找通用的东西。

1 个答案:

答案 0 :(得分:0)

  

我怎样才能完全平整我要使用的所有表,以便根本没有任何记录,以便可以使用简单的SQL语句遍历数据?

这实际上取决于您使用的架构。您可以对其进行预处理,展平数组并重命名structs字段,然后将其用作基本表以使用简单的SQL语句

对于您的情况,您可以像这样将表2(name2列)展平

SELECT
  name2.date_inserted -- Add additional fields you want on the result
FROM table2, table2.name1.name2

您可以进行CROSS JOIN和LEFT JOIN来进一步调整结果。

  

也请提供示例。寻找通用的东西。

我不确定通用方法,因为每种模式可能都有不同的要求。关键概念是要知道如何flatten arrays以及如何查询struct with arraysarrays of structs

您可以在该文档中找到很多示例