如何在 PrestoSQL 中提取给定列中键值对的基数

问题描述 投票:0回答:0

我有一个表,其中包含两列 metric 和 dimensionName=dimensionValue 键值对,因此数据存储为:

公制 尺寸
A {x=1, y=2, z=3}
A {x=1, y=2, z=3}
A {x=2, y=2, z=3}
A {x=2, y=3, z=3}
A {x=3, y=4, z=3}

我想获得此表中涉及维度 x 和 y 的所有唯一组合,即我想将 x=1、y=2 视为第 1 行和第 2 行中的相同组合,因此最终涉及 x 和 y 的键值对的基数在此表中将是 4,因为将有 4 个 x 和 y 值的唯一组合 (x=1,y=2)、(x=2,y=2)、(x=2,y=3) 和 (x =3,y=4).

到目前为止,我尝试使用 unnest 但它给了我两列 dimensionName 和 dimensionValue 但我不确定如何获得 x 和 y 值在不同行中的唯一组合

SELECT dimension_name, dimension_value FROM "metrics" CROSS JOIN UNNEST(dimensions) AS dimension_map(dimension_name, dimension_value) WHERE metric='A' AND dimension_name IN ('x', 'y');

非常感谢任何帮助。谢谢!

sql database presto
© www.soinside.com 2019 - 2024. All rights reserved.