【发布时间】:2017-07-21 11:05:30
【问题描述】:
我想在 BigQuery 中创建一个允许执行以下操作的视图:
- 记录的去重
- 将 _PARTITIONTIME 公开为用于过滤的列,以允许分区修剪
我知道执行重复数据删除的建议查询是:
SELECT
* EXCEPT(row_number)
FROM (
SELECT *
,ROW_NUMBER()
OVER (PARTITION BY fct.KeyColumn ORDER BY fct.CreatedDatetime DESC) row_number
FROM `my-project.my_dataset.fact_table` fct)
WHERE
row_number = 1
关于如何查询分区表的建议方法是:
SELECT
*
FROM
`my-project.my_dataset.fact_table`
WHERE
_PARTITIONTIME BETWEEN TIMESTAMP('2016-01-01')
AND TIMESTAMP('2016-01-02');
如何将这两者结合起来以提供一个经过重复数据删除的 BigQuery 视图,并提供一个列以允许在视图的 where 子句中使用 _PARTITIONTIME。如果使用子选择等,我了解了分区修剪的限制,这就是为什么我想知道这是否可能。
为了给您一些背景信息,此视图位于正在流式传输到的表的顶部,因此重复数据删除必须即时进行。
【问题讨论】:
标签: google-bigquery