使用 Amazon RedShift 透视表

2023-11-24

我在 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        

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

Amazon RedShift 基于 ParAccel,支持 PostgreSQL 8.0.2,该版本没有crosstab, unnest, pivot or unpivot.


您可以只为每个 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 默认值相反。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Amazon RedShift 透视表 的相关文章

  • SQL 多次更新与单次更新性能

    假设我有 10 000 行需要更新 什么会更快 UPDATE DB Servers SET Live 1 where name server1 UPDATE DB Servers SET Live 1 where name server2
  • SQL Server 将一个表中的所有行复制到另一个表中,即重复表

    我想保留一张桌子作为历史并用空桌子替换它 我如何通过 Management Studio 执行此操作 将您的表复制到要存档的表中 SELECT INTO ArchiveTable FROM MyTable 删除表中的所有条目 DELETE
  • 如何使用 SQL 查询在 Access 中的字段上设置验证规则?

    我正在使用 MS Access 2016 Office 365 目前遇到问题 下面是一个演示此问题的示例 这里我创建了一个表 名为节点家庭链接 由两个字段组成 NodeID 和 FamilyID 如下所示 现在 NodeID 是从另一个表
  • 检查 SELECT 子句中的另一个表中是否存在某个值

    我想查询 table1 中的名称 并查找 table2 中是否存在名称 我有以下查询 但它似乎不起作用 有什么建议我做错了什么吗 select A name CASE WHEN A name in select B name in tabl
  • 递归 SQL 给出 ORA-01790

    使用 Oracle 11g 第 2 版 以下查询给出 ORA 01790 表达式必须与相应表达式具有相同的数据类型 with intervals time interval AS select trunc systimestamp from
  • 如何将 MySQL 数据库更改为 UTC?

    我使用的是 Windows 7 对数据库方面的东西有点陌生 我尝试在 Google 上搜索如何将系统时区更改为 UTC 但文档有些高级 我不太确定如何更改此字段 在 my ini 文件的 mysqld 部分下 添加以下行 default t
  • 如何查找 PostgreSQL 数据库的上次更新时间?

    我正在使用一个批量更新的 postgreSQL 数据库 我需要知道数据库 或数据库中的表 上次更新或修改的时间 两者都可以 我看到 postgreSQL 论坛上有人建议使用日志记录并查询日志 这对我不起作用 因为我无法控制客户端代码库 你可
  • 模式更新后 jOOQ 生成的类的运行时验证?

    我用org jooq util DefaultGenerator在构建过程中生成 jOOQ 类来表示我的数据库模式 当应用程序运行时 架构预计会在应用程序不知情的情况下发生更改 此类更改可能与已生成的代码兼容 也可能不兼容 如何在运行时检测
  • 如何在 sqlalchemy 中创建基于文字的查询?

    我创建了一个函数来创建表达式 def test operator1 operation operator2 return literal column operator1 op operation operator2 现在当我用 test
  • SQLite HAVING 比较错误

    我有一个测试 SQLite 表 用于存储带有值的报告数据 CREATE TABLE IF NOT EXISTS test fact daily revenue date TEXT revenue NUMERIC product TEXT I
  • 使用两个日期之间的随机日期时间更新每一行

    我有一个专栏叫date created我希望每一行保存一个随机日期 日期距当前时间为 2 天 我正在运行以下查询 但它会更新具有相同随机日期的所有行 我希望每一行都是随机的并且不相同 update table set date create
  • 查找 PostgreSQL 中所有范围集合的所有交集

    我正在寻找一种有效的方法来查找时间戳范围集之间的所有交集 它需要与 PostgreSQL 9 2 配合使用 假设这些范围代表一个人可以见面的时间 每个人都可以有一个或多个空闲时间范围 我想找到all可以召开会议的时间段 即所有人都有空的时间
  • 为什么这会返回资源 id #2? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • 拆分列中的字符串并在列中添加值

    我有一个包含几行数据的表 如下所示 16 W 2 Work ALBO 00 Proposal ALxO Amendement 1 20091022 signed pdf 17 W 2 Work ALBO 00 Proposal Level1
  • 将 UUID 存储为 base64 字符串

    我一直在尝试使用 UUID 作为数据库键 我希望占用尽可能少的字节数 同时仍然保持 UUID 表示形式的可读性 我认为我已经使用 base64 将其减少到 22 个字节 并删除了一些尾随的 这些 对于我的目的来说似乎没有必要存储 这种方法有
  • 独立对列进行排序,使得所有空值都位于每列的最后

    这是一个名为的示例表animal name color fox brown fox red dog gold 现在 我想要的是这样的结果 fox dog brown gold red 名称应该是结果的列 不同颜色值作为行 我的第一个想法是
  • 列中差异的数量

    我想检索一列每行中有多少个字母的差异 例如 如果您有一个值 test 而另一行有一个值 testing 则 test 和 testing 之间的差异为 4 个字母 该列的数据值为 4 I have reflected about it an
  • sql server 按组排名

    问题看似简单 但我却无法理解 这是针对 sql 服务器的 what I have in a table What I need as a output cksum id cksum id 2162514679 204 2162514679
  • 如何在 PostgreSQL 中使用具有多个值的 SQL LIKE 条件?

    有没有更短的方法来查找多个匹配项 SELECT from table WHERE column LIKE AAA OR column LIKE BBB OR column LIKE CCC 这个问题适用于 PostgreSQL 9 1 但如
  • 了解 SSMS 2008 中关系的更新和删除规则

    当我们定义外键约束时 我对 SQL Server 2008 Management Studio 中的更新和删除规则的含义感到困惑 我也没有找到相关的帮助文档 例如F1帮助 这是屏幕快照 如果有人能描述它们的含义并推荐一些相关文档来阅读 我将

随机推荐

  • 使用推/拉更改 Bootstrap 中 col-*-12 列的顺序

    我有两列相同大小的 col xs 12 当屏幕尺寸与移动设备的尺寸相对应时 我会更改它们的位置 我会把它们按相反的顺序排列 我读过推和拉引导指令有助于实现这一点 但是是否可以使用以下类更改相同大小的两列的位置 div col xs 12 c
  • Imgur API - 即使“X-Ratelimit-Userremaining”不为 0,也会出现“请求过多”错误

    我正在通过 Imgur API 上传图像 https apidocs imgur com 但 即使前一个请求返回 X Ratelimit Userremaining 1216 我也收到 请求过多 错误 429 我的理解是 我应该能够在达到速
  • 日期分隔符问题

    我有以下代码 DateTime Now ToString MM dd yyyy 它总是给我这个输出 04 13 2011 而不是 04 13 2011 我可以知道为什么我会遇到这个奇怪的问题吗 几乎可以肯定 您所在的文化中默认的日期分隔符就
  • 检查 np.array 是否类似于日期时间的一致方法

    我正在进行一些单元测试 我需要确保函数始终返回类似 np datetime64 的对象 但是 它们可以是任何单位 年 日 纳秒等 我试过了 comp function returns datetime array inp assert is
  • Mongoose模型与Sinon的存根保存实例方法

    我正在尝试使用 Mongoose 模型测试用于保存小部件的服务功能 我想在我的模型上删除保存实例方法 但我找不到一个好的解决方案 我看过其他建议 但似乎没有一个是完整的 See this and this 这是我的模型 widget js
  • 尝试编译时出现 QT 未定义引用错误

    我在 QT 项目中添加了一个 IcecastServer 类 将头文件添加到 pro 文件中 并添加了一些代码 每次编译都会出现以下错误 release icecastserver o icecastserver cpp text 0x39
  • css3动画/过渡/变换:如何使图像变大?

    我想让我的图像高度增长到 1500px 希望宽度会自动调整大小 如果没有 我也可以轻松设置它 我正在使用 jquery animate 但它对我来说太不稳定了 我知道我可以使用 webkit transform scale 2 但我希望将其
  • 如何改变函数中变量的作用域?蟒蛇[重复]

    这个问题在这里已经有答案了 这似乎是一个非常愚蠢的问题 但我对 Python 中的范围规则感到困惑 在下面的示例中 我将两个带有值的变量 x y 发送到一个应该更改其值的函数 当我打印结果时 变量没有改变 def func1 x y x 2
  • 如果页面中有错误,则重定向到自定义错误页面

    我是新来的PHPWeb开发 我想知道 PHP 中是否有任何代码可以将我重定向到页面 我们将其命名为 myerrorpage php 页面上是否有错误 In JSP可以使用以下代码 我想知道上面有没有JSPPHP 中的代码类型 是 那么请帮忙
  • django:根据条件排除某些表单元素

    我有一些表单字段 我想根据是否满足特定条件来包含 排除这些字段 我知道如何包含和排除表单元素 但是当我希望它的元素根据函数的结果显示时 我很难做到这一点 这是我的表格 class ProfileForm ModelForm this tea
  • AWS EC2 究竟如何计算每小时成本?

    简单的问题 如果我有六个相同的 EC2 实例处理数据正好十分钟然后关闭 我会被收取六个小时还是一小时的费用 Update EC2 和 EBS 现在基于使用情况下降到第二个 旧答案变更的粒度精确到小时 来自 AWS 定价网站http aws
  • Blazor Checkbox双向绑定和更改事件

    绑定复选框并在该复选框更改时触发事件的正确方法是什么 我尝试了几种不同的方法 但都没有完全按照我的希望工作 请注意 该复选框位于组件中
  • 如何将sender参数传递给system.timers.timer

    如何将sender参数传递给system timers timer在 NET 中 timer1 timer new System Timers Timer interval timer1 timer AutoReset true timer
  • 如何使用 R 从 MATLAB 序列日期数字中提取时间?

    我有一些需要在 R 中使用的 MATLAB 序列日期号 但我必须将它们转换为正常日期 Matlab datestr 733038 6 ans 27 Dec 2006 14 24 00 你可以看到它给出了日期和时间 Now we try in
  • 如何将字符串转换回列表

    我有一个清单 ab 1 2 a b c I did strab str ab So strab现在是一个字符串 我想将该字符串转换回列表中 我怎样才能做到这一点 最简单和最安全的方法是使用ast literal eval import as
  • Firebase:提供的存储桶与 Swift 中当前实例的存储桶不匹配

    我有以下代码 let storageRef FIRStorage reference forURL gs slugbug appspot com dots intentional let imageRef storageRef child
  • React useContext() 性能,自定义钩子内的 useContext

    我使用了一个结构反应钩子 它是基于全球Context包含减速器的组合 如 Redux 中 另外 我广泛使用定制挂钩来分离逻辑 我有一个包含异步 API 请求的钩子 它变得相当麻烦 我有机会将该钩子的几乎每个函数拆分为其他钩子 但每个函数都使
  • ADB 命令切换不会保留活动开发人员选项设置,但没有实际效果

    正如标题所说 如果我发出以下命令 adb shell settings put global always finish activities 1 如果我转到 开发人员选项 我可以看到切换从 关闭 更改为 打开 还 adb shell se
  • 列出 SQL Server 2005 中哪些列具有全文索引

    如何列出数据库中具有全文索引的所有表 列 select distinct object name fic object id table name name column name from sys fulltext index colum
  • 使用 Amazon RedShift 透视表

    我在 Amazon RedShift 中有多个表 它们遵循多个维度列和一对指标名称 值列的模式 DimensionA DimensionB MetricName MetricValue dimA1 dimB1 m1 v11 dimA1 di