嵌套字段上的BigQuery联合

时间:2014-01-08 11:10:52

标签: union google-bigquery

我正在尝试创建一个包含3个表的联合。所有3个表都是同一个表上的子选择:每个子选择只包含一个字段,所有子选择字段的别名相同,因此生成的模式将兼容,并且联合将成功(遵循Support UNION function in BigQuery SQL中的示例)。

生成的查询会产生错误:

  

联盟导致模式不明确。 [foo]含糊不清,并且是多个字段的别名。别名字段:...

可能是因为错误与我选择的字段嵌套在多个记录和重复字段中的事实有关。

虚构查询示例:

  

从中选择*   (从样本中选择record.list1.list2.listA.foo作为foo),
  (从样本中选择record.list1.list2.listB.foo作为foo),
  (从样本中选择record.list1.list2.listC.foo作为foo)

有关具体示例,请参阅job job_eZm0F1cGA2leE37D8-N5NHNTTYU(这是一个包含我无法共享的数据的表)。

1 个答案:

答案 0 :(得分:2)

您可以使用公共数据集重现此内容:

SELECT x FROM
  (SELECT phoneNumber.areaCode x
   FROM [bigquery-samples:nested.persons_living] LIMIT 1),
  (SELECT citiesLived.numberOfYears x
   FROM [bigquery-samples:nested.persons_living] LIMIT 1);

Error: Union results in ambiguous schema.
       [x] is ambiguous and is aliasing multiple fields.
       Aliased fields: x,CitiesLived.x,

如上所述,这只发生在混合不同的多个记录和重复字段时 - 并且在查询之前有一个快速修复:FLATTEN():

SELECT x FROM
  (SELECT phoneNumber.areaCode x
   FROM [bigquery-samples:nested.persons_living] LIMIT 1),
  (SELECT citiesLived.numberOfYears x
   FROM (FLATTEN([bigquery-samples:nested.persons_living], citiesLived)) LIMIT 1);