Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google bigquery 展平列名中包含点(.)的重复字段_Google Bigquery - Fatal编程技术网

Google bigquery 展平列名中包含点(.)的重复字段

Google bigquery 展平列名中包含点(.)的重复字段,google-bigquery,Google Bigquery,我不熟悉重复的字段,对它们很难处理,特别是因为它们在数据库中用一个点保存,这不允许我将表本身连接起来。Online.TypeA、Online.TypeB和Online.TypeC列是重复字段 这是我应该得到的: 这就是我得到的: 这是我编写的SQL公式,用于获得结果: SELECT Id, Online.TypeA, Online.TypeB, Online.TypeC FROM FLATTEN(FLATTEN(FLATTEN([database.kind_table1],Online.Typ

我不熟悉重复的字段,对它们很难处理,特别是因为它们在数据库中用一个点保存,这不允许我将表本身连接起来。Online.TypeA、Online.TypeB和Online.TypeC列是重复字段

这是我应该得到的:

这就是我得到的:

这是我编写的SQL公式,用于获得结果:

SELECT Id, Online.TypeA, Online.TypeB, Online.TypeC 
FROM FLATTEN(FLATTEN(FLATTEN([database.kind_table1],Online.TypeA),Online.TypeB),Online.TypeC)
GROUP BY Id, Online.TypeA, Online.TypeB, Online.TypeC  
ORDER BY Id, Online.TypeA, Online.TypeB, Online.TypeC 
我做错了什么

我试图展平一列,然后通过展平下一列,将同一个表重命名为A和B,将表连接到自身,但在将列名写入A.Online.TypeA时,我遇到了一个错误。在列名中包含一个点时,这种情况从未发生过,但我被迫使用两个点,因为数据库中的列是如何命名和保存的


由于加入表本身似乎是不可能的,而且可能不是最有效的解决方案,我想知道我在编写SQL公式时犯了什么错误,这个问题有点模糊,因此下面是基于我对它的解释,并且是针对BigQuery标准SQL的

标准SQL 选择 身份证件 结构类型A、类型B、类型C在线 从“project.dataset.table”开始, UNNESTOnline.TypeA带有偏移位置的TypeA, UNNESTOnline.TypeB TypeB带有偏移位置B, UNNESTOnline.TypeC带偏移位置的TypeC 其中,posA=posB,posA=posC 这应该给你一个想法

您可以使用下面的虚拟数据来测试/使用它,这些数据有望和表的模式匹配

project.dataset.table中的数据

行id Online.TypeA Online.TypeB Online.TypeC 1 365个单一Url链接1 单一Pdf链接2 单一Pdf链接3 单一Pdf链接4 质疑

标准SQL 将'project.dataset.table'作为 选择365 id, 结构 ['Single'、'Single'、'Single'、'Single']、['Url'、'Pdf'、'Pdf'、'Pdf']、['Link1'、'Link2'、'Link3'、'Link4'] 在线 的 选择 身份证件 结构类型A、类型B、类型C在线 从“project.dataset.table”开始, UNNESTOnline.TypeA带有偏移位置的TypeA, UNNESTOnline.TypeB TypeB带有偏移位置B, UNNESTOnline.TypeC带偏移位置的TypeC 其中,posA=posB,posA=posC 结果如下

行id Online.TypeA Online.TypeB Online.TypeC 1 365个单一Url链接1 2365单一Pdf链接2 3 365单个Pdf链接3 4365单个Pdf链接4
这里有一个假设,即所有三个重复字段都有相同数量的项目,并且它们根据数组中的位置相互匹配

原始数据是什么样子的?-提供模式!它将Id显示为可为空的整数,其他三列显示为重复字段。有一个名为Online的列,该列已注册为记录类型,无法提取。这就是为什么此记录下的所有列都命名为Online.TypeA、Online.TypeB、Online.TypeC等等。这回答了你的问题吗?不是真的!如果您可以检查BQ UI中表的模式选项卡-并将其放入您的问题中-这会有所帮助-您在上面描述它的方式-仍然不够模糊,并且可以用几种不同的方式解释SID-String-Nullable;在线-记录-可为空;Online.TypeA-字符串-重复;Online.TypeB-字符串-重复;Online.TypeC-字符串-重复