当前位置: 首页 > 面试题库 >

使用Amazon RedShift旋转表格

鲜于渊
2023-03-14
问题内容

我在Amazon RedShift中有几个表,这些表遵循几个维度列和一对指标名称/值列的模式。

DimensionA  DimensionB  MetricName  MetricValue
----------  ----------  ----------  -----------
dimA1       dimB1       m1          v11
dimA1       dimB2       m1          v12
dimA1       dimB2       m2          v21
dimA2       dimB2       m1          v13
dimA3       dimB1       m2          v22

我正在寻找一种很好的方法来将数据展开/旋转为每个唯一维度集一行的形式,例如:

DimensionA  DimensionB  m1   m2 
----------  ----------  ---  ---
dimA1       dimB1       v11
dimA1       dimB2       v12  v21
dimA2       dimB2       v13
dimA3       dimB1            v22

生成将执行此展开的查询的良好模式是什么?

亚马逊红移是基于ParAccel和支持PostgreSQL的8.0.2,它不具有crosstabunnestpivotunpivot


问题答案:

您可以只为每个MetricName创建一个CASE语句,但是还必须使用聚合来使GROUP BY工作。

SELECT dimension_a
      ,dimension_b
      ,MAX(CASE WHEN metric_name = 'm1' THEN metric_value ELSE NULL END) m1
      ,MAX(CASE WHEN metric_name = 'm2' THEN metric_value ELSE NULL END) m2
  FROM my_table
 GROUP BY dimension_a
         ,dimension_b
;

值得注意的是,Redshift对象名称从不区分大小写,但列内容始终是区分大小写的,这与SQL Server默认设置相反。



 类似资料:
  • 我刚开始使用PDFBox。我需要的是将图像旋转添加到退出的PDF中!我知道如何添加图像,但我的问题是如何旋转图像!我看到了一些关于AffineTransform和Matrix的信息,但我不知道那是什么以及它是如何工作的! 我真的很感谢通过一些样本代码,并提前感谢你! 致敬

  • 问题内容: 我想在Oracle 11g中旋转一个表。枢纽选项需要汇总。这是我的原始表: 旋转后,表格应如下所示: 现在,如您所见,分组应该在项目列上进行。无需折叠或计算值。只需旋转即可。那么,枢轴选择正确的事情了吗? 问题答案: 是的,我想是这样。使用汇总很容易进行这样的枢轴操作: 否则,您必须在max聚合内执行case语句。像这样: 这几乎和做。但我宁愿做在..

  • 问题内容: 我上课了。在这个类中,我有一个类型的变量。更重要的是,我有WorldMap重写功能的类: 函数看起来像这样: 它只需要1)旋转飞机(飞机对象内部的BufferedImage)2)画他。 我的Airplane.rotateAirplane()函数如下所示: 我运行我的程序时,ofc仅绘制对象。当我删除此车道时 我也有我的飞机,但是没有旋转。 问题答案: 主要的问题(我可以看到)是上下文的

  • 我需要使一个人字形旋转180deg,当点击它的父元素,以指示一个节是展开还是折叠到一个现有的(非引导)手风琴。 目前,所有部分都默认显示展开(绿色)。单击.blacktitleexp_top_style div时,header部分关闭,而div的bg-color变为浅绿色,表示该部分已折叠。 理想情况下,当头部变为灰色时,人字形也应旋转180度,以使其指向下方,表示该区段已关闭。 理想情况下,我希

  • 我正在构建一个应用程序,它依赖于显示从相机拍摄的许多位图图像。我希望所有图像都以90度(纵向)的方向显示,我知道如何使用每个图像提供的EXIF信息来实现这一点。在拍摄图像后立即旋转图像的位图以满足我的需要,然后将其发送到我的服务器,这对我来说是一个更好的主意,还是应该在不旋转图像的情况下将图像发送到我的服务器,然后每当我下拉图像时,使用图像附带的EXIF旋转来旋转我正在显示的图像视图?我需要一个高

  • 同时研究。net,我碰到了SpinLock和SpinWait。从表面上看,在我看来,SpinWait将永远是一条出路..当线程实际上必须等待来自线程外部的信号时,为什么还要继续忙碌等待而不放弃CPU呢?在这些空闲等待中花费的周期可能已经被线程使用,该线程可能会发出信号并释放正在忙碌等待的线程。 为什么会存在SpinLock?它与使用while循环的简单忙等待有什么不同?在什么情况下会想使用Spin