是否可以选择每组版本最高的记录,并将其存储为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
这是官方文件。