首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有metric_name和metric_value列的表的名称

带有metric_name和metric_value列的表的名称
EN

Database Administration用户
提问于 2018-02-08 21:53:51
回答 1查看 145关注 0票数 3

典型的数据库表可能如下所示:

代码语言:javascript
复制
date-------geography---clicks---cost---conversions
___________________________________________________
1/1/2010---Kansas------56-------12-----1

当换位时,它看起来像这样。

代码语言:javascript
复制
date-----geography---metric_name---metric_value
____________________________________________
1/1/2010-Kansas------clicks--------56
1/1/2010-Kansas------cost----------12
1/1/2010-Kansas------conversions---1

对于收集到的度量的数量经常发生变化的一些用例,转置表工作得更好。

转换后的表中是否有这样的表的标准名称?

EN

回答 1

Database Administration用户

发布于 2018-02-08 22:05:21

不枢轴表

作为转换的乘积,这里您想要的表单被称为“Un枢轴表”。从这里开始的表单要么是规范化数据,要么是名为“枢轴”的转换本身的结果

您可以在不丢失数据的情况下对数据进行支点和撤消操作。像这样的旋转和操作出现在OLAP功能上,在那里它们是旋转的。在PostgreSQL中,我们以tablefunc模块为枢轴。我们可以很容易地用CROSS JOIN LATERALVALUES列表上解除枢轴,

代码语言:javascript
复制
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[])成语和平行不巢

代码语言:javascript
复制
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);

不管是哪种方式,

代码语言:javascript
复制
 id | cat | value 
----+-----+-------
  1 | X   |     1
  1 | Y   |     2
  1 | Z   |     3
  2 | X   |    10
  2 | Y   |    20
  2 | Z   |    30
(6 rows)

也看,

  • ( PostgreSQL中的非枢轴数据(比上面使用的方法更早)
  • Microsoft Technet docs
  • 甲骨文和Un枢轴文章
票数 8
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/197443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档