【发布时间】:2021-12-19 18:26:48
【问题描述】:
我在 Bigquery 中对特征(或属性)进行建模。这是模型的示例
uid string, link to owner id
uuid string, unique among all rows
trait_name string, name of the trait
trait_value string
added_at timestamp, when the trait was added
我正在尝试构建一个物化视图,该视图包含每个 uid 的每个特征的最新特征。我可以通过这个查询得到结果:
WITH traits AS (
SELECT 'u1' uid, 'uu1' uuid, 't1' trait_name, 't1v1' trait_value, timestamp("2021-10-01 10:00:00") as added_at UNION ALL
SELECT 'u1' uid, 'uu2' uuid, 't1' trait_name, 't1v2' trait_value, timestamp("2021-10-02 10:00:00") as added_at UNION ALL
SELECT 'u1' uid, 'uu3' uuid, 't2' trait_name, 't2v1' trait_value, timestamp("2021-10-03 10:00:00") as added_at UNION ALL
SELECT 'u1' uid, 'uu4' uuid, 't2' trait_name, 't2v2' trait_value, timestamp("2021-10-04 10:00:00") as added_at UNION ALL
SELECT 'u2' uid, 'uu5' uuid, 't1' trait_name, 't1v1' trait_value, timestamp("2021-10-05 10:00:00") as added_at UNION ALL
SELECT 'u2' uid, 'uu6' uuid, 't1' trait_name, 't1v2' trait_value, timestamp("2021-10-06 10:00:00") as added_at UNION ALL
SELECT 'u2' uid, 'uu7' uuid, 't2' trait_name, 't2v1' trait_value, timestamp("2021-10-07 10:00:00") as added_at UNION ALL
SELECT 'u2' uid, 'uu8' uuid, 't2' trait_name, 't2v2' trait_value, timestamp("2021-10-08 10:00:00") as added_at
)
SELECT * FROM (
SELECT *,
MAX(added_at) OVER (PARTITION BY uid, trait_name) as latest_added_at FROM traits
) WHERE latest_added_at = added_at
# Row uid uuid trait_name trait_value added_at latest_added_at
# 1 u1 uu2 t1 t1v2 2021-10-02 10:00:00 UTC 2021-10-02 10:00:00 UTC
# 2 u1 uu4 t2 t2v2 2021-10-04 10:00:00 UTC 2021-10-04 10:00:00 UTC
# 3 u2 uu6 t1 t1v2 2021-10-06 10:00:00 UTC 2021-10-06 10:00:00 UTC
# 4 u2 uu8 t2 t2v2 2021-10-08 10:00:00 UTC 2021-10-08 10:00:00 UTC
但我不能将它用于物化视图,因为它们不支持它:
物化视图不支持分析函数或 WITH OFFSET。
我也尝试过使用连接
SELECT * FROM traits t
JOIN (
SELECT
uid,
trait_name,
MAX(added_at) AS max_added_at
FROM traits GROUP BY uid, trait_name
) grouped
ON t.uid = grouped.uid
AND t.trait_name = grouped.trait_name
AND t.added_at = grouped.max_added_at
但它们也不支持
物化视图查询不能多次引用同一个表。多次看到表格特征。
有没有办法将其作为物化视图来实现?
【问题讨论】:
标签: sql google-bigquery