【问题标题】:Iterate over multiple ga_sessions_[date] tables in BigQuery迭代 BigQuery 中的多个 ga_sessions_[date] 表
【发布时间】:2019-01-25 19:57:19
【问题描述】:

是否可以在 BigQuery 中迭代多个 ga_sessions 表?

我不是在问如何查询多个 ga_sessions 表。 这可以在标准 SQL 中使用:select * from 'a:b.c.ga_sessions_*' where _TABLE_SUFFIX between '20180501' and '20180505' 完成。

我问的是使用带日期的循环,例如While loop over tables 中的答案使用变量并声明游标。

原因是使用Querying Multiple Tables Using a Wildcard Table方法只能查询有限数量的表。

我怀疑只能使用 Python 之类的编程语言,但想检查一下。

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    你可以使用:

    SELECT * 
    FROM `bigquery-public-data.google_analytics_sample.ga_sessions_*`
    

    或者

    SELECT * 
    FROM `bigquery-public-data.google_analytics_sample.*` 
    WHERE _TABLE_SUFFIX IN (SELECT table_id 
      FROM `bigquery-public-data.google_analytics_sample.__TABLES_SUMMARY__`
      WHERE table_id 
      LIKE 'ga_session_%')
    

    遍历数据集中的所有表。可能适用的限制适用于 query job(每个查询引用 1000 个表)和当前的 wildcard table queries limitations,它不限制表的数量。

    【讨论】:

      【解决方案2】:

      原因是你只能查询有限数量的表 使用 Querying Multiple Tables Using a Wildcard Table 方法。

      你在说什么限制?我没有看到这样的limitation

      不管怎样,你可以UNION几个带通配符的查询结果,例如

      SELECT * 
      FROM `a:b.c.ga_sessions_*`
      WHERE _TABLE_SUFFIX between '20180501' and '20180531' # MAY
      UNION ALL 
      SELECT * 
      FROM `a:b.c.ga_sessions_*`
      WHERE _TABLE_SUFFIX between '20180601' and '20180630' # JUNE
      # and more ...
      

      【讨论】:

      • 我已经添加了限制的图像。最多 100 张桌子。
      猜你喜欢
      • 2021-05-12
      • 2019-05-05
      • 2021-06-21
      • 2018-12-15
      • 2017-11-17
      • 1970-01-01
      • 2014-01-13
      • 1970-01-01
      • 2019-04-30
      相关资源
      最近更新 更多