【问题标题】:Simplest Way to Automate Appending De-Duped Data to BigQuery from Google Cloud从 Google Cloud 自动将重复数据附加到 BigQuery 的最简单方法
【发布时间】:2017-05-24 18:24:56
【问题描述】:

我不是开发人员,所以请多多包涵。我无法在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. 删除临时表

所以基本上我被困在第 1 格 - 我不知道如何以自动方式执行任何这些操作。我知道 BigQuery 有一个 API,有一些 documentation on cron jobs,还有一些叫做 Cloud Dataflow,但在深入那些兔子洞之前,我希望其他人可能有这方面的经验并能给我一些提示。就像我说的,我不是开发人员,所以如果有更简单的方法来完成这件事,我会更容易运行。

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

【问题讨论】:

  • 不知道为什么这被否决了,我正在研究 Google 的文档,但没有帮助。

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


【解决方案1】:

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

  1. 创建一个模板化的 Dataflow 管道以从 GCS(源)读取并将追加写入 BigQuery(接收器)。
  2. 您的管道可以直接删除重复项。见herehere
  3. 创建一个cloud function 来监控您的 GCS 存储桶。
  4. 当新文件到达时,您的云函数会自动触发,该函数会调用您的 Dataflow 管道开始读取新文件、对其进行重复数据删除并将结果写入 BigQuery。

【讨论】:

    【解决方案2】:

    所以格雷厄姆波利没有冒犯,但我最终使用了不同的方法。感谢这些页面(以及大量随机批处理文件 Google 搜索和反复试验):

    • 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 =

      del C:\Desktop\tempvar.txt &&

      bq 负载 --skip_leading_rows=1 data.data_%%zvar:~0,4%%%%zvar:~4,2%%%%zvar:~6,2%%_1 gs://mybucket/data/%%zvar:~0,4%%-%%zvar:~4,2%%-%%zvar:~6,2%%*.csv.gz 时间戳:TIMESTAMP,TransactionID:STRING &&

      bq 查询 --destination_table=data.data_%%zvar:~0,4%%%%zvar:~4,2%%%%zvar:~6,2%%2 "SELECT * FROM data.data%%zvar:~0,4%%%%zvar:~4,2%%%%zvar:~6,2% %_1 按 1,2" &&

      分组

      bq cp -a data.data_%%zvar:~0,4%%%%zvar:~4,2%%%%zvar:~6,2%%_2 数据。数据&&

      bq rm -f data.data_%%zvar:~0,4%%%%zvar:~4,2%%%%zvar:~6,2%%_1 &&

      bq rm -f data.data_%%zvar:~0,4%%%%zvar:~4,2%%%%zvar:~6,2%%_2 p>

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

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

    【讨论】:

      猜你喜欢
      • 2016-12-26
      • 1970-01-01
      • 1970-01-01
      • 2022-08-20
      • 1970-01-01
      • 2012-09-13
      • 2013-05-24
      • 2013-02-10
      相关资源
      最近更新 更多