我有一个表,其中包含两列 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');
非常感谢任何帮助。谢谢!