【问题标题】:Big Query Create View with Repeated RecordBigquery 创建具有重复记录的视图
【发布时间】:2015-11-12 20:01:25
【问题描述】:

我们有一系列包含重复记录的架构表,如下所示:

[{
    name: "field1",
    type: "RECORD",
    mode: "REPEATED",
    fields: [{type: "STRING", name: "subfield1"}, {type: "INTEGER", name: "subfield2"}]
}]

当我们创建一个包含重复记录字段的视图时,我们总是会出错:

Error in query string: Field field1 from table xxxxx is not a leaf field.

我知道使用 flatten 可能会更好,但是所有这些字段都包含我们想要测试的大部分不同的过滤器,而且我们还有许多其他非重复字段,如果扁平化将难以管理。

原来问题在于从多个表中选择重复的记录字段(不是在创建视图中)。有没有简单的方法来解决这个问题?

谢谢

【问题讨论】:

  • 你的 select 语句是什么样子的?
  • 看起来像Select field1 from (TABLE_QUERY(dataset, 'REGEXP_MATCH(table_id, xxx)'))
  • 您需要明确输入为 field1.*
  • 原来也不行:Error in query string: 0.0 - 0.0: Wildcard pattern field1.* cannot be used to refer to fields in a union
  • 我认为这两者相关,请先尝试不使用 table_query 函数

标签: google-bigquery google-cloud-platform


【解决方案1】:

如果您使用SELECT field.* from t1, t2,您将收到一个错误,即 * 不能用于引用联合中的字段(正如您在上面注意到的那样)。

您可以通过将联合包装在内部 SELECT 语句中来解决此问题,如 SELECT field.* from (SELECT * from t1, t2)

举一个具体的例子,这是可行的:

SELECT payload.pages.* 
FROM (
    SELECT *  
    FROM [publicdata:samples.github_nested],   
         [publicdata:samples.github_nested]) 

【讨论】:

    猜你喜欢
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    相关资源
    最近更新 更多