我正在使用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