时间流 - 每个维度的透视数据

Flo*_*rck 6 sql amazon-timestream

TimeStream 使用键:值方法存储数据。

是否有任何简单的方法可以根据维度对数据进行透视以获取例如名为度量名称的列中所有可用度量的最大值?

让我们举个例子,使用以下数据集:

| time                              | instance_id   | measure_name          | measure_value::double     | measure_value::bigint     |
|-------------------------------    |-------------  |--------------------   |-----------------------    |-----------------------    |
| 2019-12-04 19:00:00.000000000     | A             | cpu_utilization       | 35                        | null                      |
| 2019-12-04 19:00:01.000000000     | A             | cpu_utilization       | 38.2                      | null                      |
| 2019-12-04 19:00:02.000000000     | B             | cpu_utilization       | 45.3                      | null                      |
| 2019-12-04 19:00:00.000000000     | A             | memory_utilization    | 54.9                      | null                      |
| 2019-12-04 19:00:01.000000000     | A             | memory_utilization    | 42.6                      | null                      |
| 2019-12-04 19:00:02.000000000     | B             | memory_utilization    | 33.3                      | null                      |
Run Code Online (Sandbox Code Playgroud)

我们想要构建一个通用请求,无需任何代码转换即可提供以下结果:

| instance_id   | cpu_utilization (max)     | memory_utilization (max)  |
|-------------  |-----------------------    |-------------------------- |
| A             | 38.2                      | 54.9                      |
| B             | 45.3                      | 33.3                      |
Run Code Online (Sandbox Code Playgroud)

当然,我知道通过获得以下内容(见下表),用我最喜欢的语言编写的代码很少,很容易进行枢轴,但我想知道这是否可以在本地方式上实现。

| instance_id   | measure_name          | max(measure_value)    |
|-------------  |--------------------   |--------------------   |
| A             | cpu_utilization       | 38.2                  |
| B             | cpu_utilization       | 45.3                  |
| A             | memory_utilization    | 54.9                  |
| B             | memory_utilization    | 33.3                  |
Run Code Online (Sandbox Code Playgroud)

谢谢

jar*_*rlh 1

做一个GROUP BY. 使用case表达式进行条件聚合

select instance_id, 
       max(case when measure_name = 'cpu_utilization' then measure_value end),
       max(case when measure_name = 'memory_utilization' then measure_value end)
from tablename
group by instance_id
Run Code Online (Sandbox Code Playgroud)