如何避免使用 Google App Script 将重复的行上传到 BigQuery 表中



我正在使用Google App Script从Google工作表将一些数据上传到BigQuery中。有没有办法在不上传重复行的情况下上传这些数据......

这是我目前正在使用的JobSpec:

var jobSpec = {
    configuration: {
      load: {
        destinationTable: {
          projectId: projectId,
          datasetId: 'ClientAccount',
          tableId: tableId
        },
        allowJaggedRows: true,
        writeDisposition: 'WRITE_APPEND',
        schema: {
          fields: [
        {name: 'date', type: 'STRING'},
        {name: 'Impressions', type: 'INTEGER'},
        {name: 'Clicks', type: 'INTEGER'},
          ]
        }
      }
    }
  };

所以我正在寻找类似allowDuplicates: true的东西...我想你明白了...我可以这样做...

BigQuery 加载没有任何重复

数据删除的概念,但您可以通过将所有数据加载到初始表中,然后使用重复数据删除查询将该表查询到另一个表中来有效地执行此操作。

with t as (SELECT 1 as field, [1,3,4, 4] as dupe) 
SELECT ANY_VALUE(field), dupe FROM t, t.dupe group by dupe;

在加载到 BQ 之前,您可以使用 Google 表格中的应用脚本直接对数据进行重复数据删除。

或者正如 Victor 所说,您可以将重复数据删除到 BQ 中。像这样:

SELECT
  *
FROM (
  SELECT
    *,
    ROW_NUMBER() OVER (PARTITION BY Field_to_deduplicate ORDER BY key) AS RowNr
  FROM
    YourDataset.YourTable ) AS X
WHERE
  X.RowNr = 1

最新更新