选择每组的最后一条记录作为材料化视图bq



是否可以选择每组版本最高的记录,并将其存储为bigquery中的实体化视图?

源表

version name value
1       a    100
1       b    200
1       c    300
2       c    400

我只想得到每组的最后一条记录(按版本分组(,所以输出应该是这样的:

version name value
1       a    100
1       b    200
2       c    400

已尝试,答案来自:https://stackoverflow.com/a/1313293/5839247,得到一个错误:Materialized views do not support analytic functions or WITH OFFSET.尝试从这个答案的方法:https://stackoverflow.com/a/7745635/5839247,得到Unsupported operator in materialized view: Join.

文件:https://cloud.google.com/bigquery/docs/materialized-views#supported_mvs

目前,BigQuery的物化视图不支持OFFSET。因此,您必须创建另一个视图才能使用OFFSET

1.使用ARRAY_AGG创建物化视图

CREATE MATERIALIZED VIEW dataset.mv_name AS
SELECT
name, 
ARRAY_AGG(version ORDER BY version DESC) as versions,
ARRAY_AGG(value ORDER BY version DESC) as values
FROM
base_table
GROUP BY
name

2.然后,使用OFFSET创建另一个视图

CREATE VIEW dataset.v_name AS
SELECT
name,
versions[OFFSET(0)] as last_version,
values[OFFSET(0)] as last_value
FROM
dataset.mv_name

这是官方文件。

最新更新