首页 > 解决方案 > BigQuery:使用分片表将表插入到现有的谷歌分析中

问题描述

我在 bigquery 中有一个现有的数据集 (A),其中 ga_sessions_YYYYMMDD(按日期分片)每天都通过谷歌分析填充。我想做的是从具有相同模式的不同数据集(B)中插入数据。例如,我有 ga_sessions_20200120 及更高版本,我想从数据集 (B) 中插入日期为 ga_sessions_20191201、20191202 的数据。我如何实现这一目标?由于我的数据集 (A) 中不存在 ga_sessions_20191201 表?

谢谢

标签: google-bigquery

解决方案


如果您只想将一些特定的日期表从 dataset_b 复制到 dataset_a,您可以使用脚本中的bq命令,如下所示Bash

d="20170708"
until [[ $d > 20170720 ]];
    do bq cp <dataset_b>.ga_sessions_$d <dataset_a>.ga_sessions_$s;
    d=$(date +'%Y%m%d' -d "$d + 1 day")
done

d此脚本将从您在变量中定义的日期开始迭代日期,直到您在until子句中定义的日期。在每次迭代中,bq 命令都会将该日期的 ga_sessions 表从一个数据集复制到另一个数据集。

更新:

如果要根据涉及其字段的条件复制表,可以使用bq query为查询结果设置目标表:

date="20170708"
until [[ $date > 20170720 ]];
    do
    sql="SELECT "*" FROM <dataset_b>.ga_$date WHERE <your_condition>"
    dest="<dataset_a>.ga_sessions_${date}"
    bq query --destination_table $dest -n=0 --use_legacy_sql=false "$sql";
    date=$(date +'%Y%m%d' -d "$date + 1 day")
done

推荐阅读