典型的数据库表可能如下所示:
date-------geography---clicks---cost---conversions
___________________________________________________
1/1/2010---Kansas------56-------12-----1当换位时,它看起来像这样。
date-----geography---metric_name---metric_value
____________________________________________
1/1/2010-Kansas------clicks--------56
1/1/2010-Kansas------cost----------12
1/1/2010-Kansas------conversions---1对于收集到的度量的数量经常发生变化的一些用例,转置表工作得更好。
转换后的表中是否有这样的表的标准名称?
发布于 2018-02-08 22:05:21
作为转换的乘积,这里您想要的表单被称为“Un枢轴表”。从这里开始的表单要么是规范化数据,要么是名为“枢轴”的转换本身的结果
您可以在不丢失数据的情况下对数据进行支点和撤消操作。像这样的旋转和操作出现在OLAP功能上,在那里它们是旋转的。在PostgreSQL中,我们以tablefunc模块为枢轴。我们可以很容易地用CROSS JOIN LATERAL在VALUES列表上解除枢轴,
SELECT id, cat, value
FROM ( VALUES (1,1,2,3), (2,10,20,30) ) AS t1(id,x,y,z)
CROSS JOIN LATERAL ( VALUES ('X',x), ('Y',y), ('Z',z) )
AS t2(cat, value);或者,虽然速度较慢,但我们使用了unnest(ARRAY[])成语和平行不巢
SELECT id, cat, value
FROM ( VALUES (1,1,2,3), (2,10,20,30) ) AS t1(id,x,y,z)
CROSS JOIN LATERAL unnest(ARRAY['X','Y','Z'], ARRAY[x,y,z])
AS t2(cat, value);不管是哪种方式,
id | cat | value
----+-----+-------
1 | X | 1
1 | Y | 2
1 | Z | 3
2 | X | 10
2 | Y | 20
2 | Z | 30
(6 rows)也看,
https://dba.stackexchange.com/questions/197443
复制相似问题