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

时间:2017-10-06 21:46:55

标签: google-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这样的东西...我想你明白了......我可以这样做......

2 个答案:

答案 0 :(得分:1)

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;

答案 1 :(得分:0)

您可以直接在Google表格中使用Apps脚本对数据进行重复数据删除,然后再加载到BQ。

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

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