【问题标题】:BigQuery Export Multiple Files After Query Result查询结果后 BigQuery 导出多个文件
【发布时间】:2021-02-12 21:37:32
【问题描述】:

我在 BigQuery 中有一个包含两个主要列的表,如下所示:

Name,City
John,NY
Mike,NY
Spencer,LA

我想导出多个文件(一个包含每个城市的所有名称的文件)。

在前面的示例中,我会得到两个名为 NYLA 的文件,其中包含与它们相关的每个人的姓名。

我知道为了从 BigQuery 导出文件,我需要将数据存储在特定的表中。

我想知道是否有办法自动将按城市分组的每个名称列表存储在名为相应城市的表中。

如果可能,我将在 bash 中创建一个循环(使用 bq ls dataset),以便从每个 City 表中创建一个文件。

这是正确的做法吗?

谢谢

【问题讨论】:

    标签: bash google-bigquery


    【解决方案1】:

    一种方法是在 BigQuery 中使用集群方法。

    您可以根据您的主表创建一个新的聚簇表:

    bq query --use_legacy_sql=false \
      'CREATE TABLE dataset.clustered_table
       CLUSTER BY city 
       AS
       select distinct name, city from `dataset.maintable`'
    

    一旦你有了这个聚簇表,你现在可以利用你的 bash 脚本循环遍历每个城市并查询其对应的聚簇并在本地通过管道输出。

    例如:

    bq query --format=csv --max_rows=999999 --use_legacy_sql=false\
      "select name from dataset.clustered_table where city = 'NY'" > NY.csv
    

    请注意,上述查询不会扫描整个表,您只需为扫描确定为您正在查询的特定集群的一部分的行付费。

    【讨论】:

      猜你喜欢
      • 2018-11-03
      • 2016-12-22
      • 1970-01-01
      • 1970-01-01
      • 2014-02-11
      • 1970-01-01
      • 2015-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多