我有下表:
在表2(黄色字段)中,第一个字段是以下内容的一部分:
name1 RECORD NULLABLE
name1. name2 RECORD REPEATED
name1.name2. date_inserted TIMESTAMP NULLABLE
您会看到第25行的最后一个(子行?)是灰色的,因为它是重复记录name1.name2的一部分
我试图将表2与表1(橙色字段)连接到另一个字段。我有0条记录或重复记录的经验,但是使用FLATTEN()设法加入了这些记录。
问题是,我注意到联接后的第二个日期开始返回NULL,尽管之前没有任何NULL。因此,由于我无法弄清楚什么是灰色单元格,因此我想我做错了。
所有这些总结为:如何完全展平我要使用的所有表,以便根本没有任何记录,因此可以使用简单的SQL语句遍历数据?请提供一个例子。寻找通用的东西。
答案 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 arrays和arrays of structs
您可以在该文档中找到很多示例