google-bigquery - BigQuery:使用分片表将表插入到现有的谷歌分析中
问题描述
我在 bigquery 中有一个现有的数据集 (A),其中 ga_sessions_YYYYMMDD(按日期分片)每天都通过谷歌分析填充。我想做的是从具有相同模式的不同数据集(B)中插入数据。例如,我有 ga_sessions_20200120 及更高版本,我想从数据集 (B) 中插入日期为 ga_sessions_20191201、20191202 的数据。我如何实现这一目标?由于我的数据集 (A) 中不存在 ga_sessions_20191201 表?
谢谢
解决方案
如果您只想将一些特定的日期表从 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
推荐阅读
- javascript - 如何使用 JavaScript 将文本从对应的地址字段复制到永久地址字段?
- kubernetes - 使用 calico 的适当 coredns 配置是什么?
- firebase - Firestore 是否在每次构建页面时执行读取?
- python - 这条鳕鱼是真的,但在这个网站('hepsiburada.com')中返回 403。我该如何解决这个问题?
- c# - 带有表达式的通用存储库“查找”方法
- python - 为我托管在 herokou 上时,client.fetch_user() 不起作用
- algorithm - Scala如何为Rationals定义排序
- elasticsearch - Elasticsearch:如何使用 Java api 添加嵌套数据类型?
- javascript - 如何使用动态密钥创建 TS 接口?
- javascript - 未捕获的类型错误:无法读取 null 的属性“集合”