从Google Cloud自动将De-Duped数据附加到BigQuery的最简单方法

时间:2017-05-24 18:24:57

标签: sql automation google-bigquery google-cloud-platform google-cloud-dataflow

我不是开发人员所以请耐心等待。我无法在Google BigQuery - Automating a Cron Job处遵循基于PHP的回答,因此我不知道这是否与我正在寻找的内容相同。

无论如何,我使用Google Cloud存储数据,并且全天数次将数据上传到CSV中。我使用BigQuery来运行作业,用那里的数据填充BigQuery表。

由于我无法控制的原因,CSV具有重复数据。所以我想要做的就是创建一个每日ETL来将所有新数据附加到现有表中,可能每天凌晨1点运行:

  1. 识别尚未添加的新文件(例如date = today - 1)
  2. 在步骤1中的所有CSV上运行作业,将它们转换为临时BigQuery表
  3. 通过SQL对BigQuery表进行重复数据删除(我可以通过各种方式执行此操作)
  4. 将去掉的临时表插入BigQuery表。
  5. 删除临时表
  6. 所以基本上我被困在方阵1 - 我不知道如何以自动方式做任何这些。我知道BigQuery有一个API,并且有一些documentation on cron jobs,并且有一些名为Cloud Dataflow的东西,但在走下这些兔子洞之前,我希望其他人可能有过这方面的经验并且可以给我一些提示。就像我说的那样,我不是开发人员,所以如果有更简单的方法来实现这一点,那么我就更容易运行。

    感谢任何人提供的任何帮助!

2 个答案:

答案 0 :(得分:2)

有几种方法可以解决这个问题,但我建议这样做:

  1. 创建一个模板化的Dataflow管道以从GCS(源)读取并写入附加到BigQuery(接收器)。
  2. 您的管道可以直接删除重复项。请参阅herehere
  3. 创建cloud function以监控您的GCS广告资源。
  4. 当新文件到达时,您的云功能会自动触发,调用您的数据流管道开始读取新文件,重复删除并将结果写入BigQuery。

答案 1 :(得分:0)

因此格雷厄姆波利没有冒犯,但我最终采用了不同的方法。感谢这些页面(以及随机批量文件谷歌搜索和试错的TON):

  • how to get yesterday's date in a batch file
  • https://cloud.google.com/bigquery/bq-command-line-tool

    cscript // nologo C:\ Desktop \ yester.vbs> C:\ Desktop \ tempvar.txt&&

    set / p zvar =< C:\ Desktop \ tempvar.txt&&

    del C:\ Desktop \ tempvar.txt&&

    bq加载     --skip_leading_rows = 1     data.data _ %% zvar:〜0,4 %% %% zvar:〜4,2 %% %% zvar:〜6,2 %% _ 1     GS:// mybucket /数据/ %% zvar:〜0.4 %% - %% zvar:〜4.2 %% - %% zvar:〜6.2 %% * csv.gz     时间戳:TIMESTAMP,TransactionID:STRING&&

    bq query --destination_table = data.data _ %% zvar:~0,4 %% %% zvar:~4,2 %% %% zvar:~6,2 %% < em> 2“SELECT * FROM data.data %% zvar:~0,4 %% %% zvar:~4,2 %% %% zvar:~6,2% %_1分组由1,2“&amp;&amp;

    组成

    bq cp -a data.data _ %% zvar:~0,4 %% %% zvar:~4,2 %% %% zvar:~6,2 %% _ 2数据。数据&amp;&amp;

    bq rm -f data.data _ %% zvar:~0,4 %% %% zvar:~4,2 %% %% zvar:~6,2 %% _ 1&amp; &安培;

    bq rm -f data.data _ %% zvar:~0,4 %% %% zvar:~4,2 %% %% zvar:~6,2 %% _ 2

一个名为yester.vbs的VB脚本以YYYYMMDD格式打印出昨天的日期。它保存为变量,用于在GCS中搜索昨天的数据文件并输出到表中,从中创建表(通过所有列的分组)表。然后将其附加到主表,并删除两个中间表。

显示双百分号,因为它保存为.CMD文件并通过Windows任务计划程序运行。