TimeStream使用key:value方法存储数据。
有没有什么简单的方法可以根据维度来透视数据,例如,在一个名为度量名称的列中,获得所有可用度量的最大值?
让我们以下面的数据集为例:
| 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 |我们想要构造一个泛型请求,它将提供以下结果,而不需要任何代码转换:
| instance_id | cpu_utilization (max) | memory_utilization (max) |
|------------- |----------------------- |-------------------------- |
| A | 38.2 | 54.9 |
| B | 45.3 | 33.3 |当然,我知道通过获得以下代码(见下表),用我最喜欢的语言编写的代码很少,很容易实现pivot,但我想知道这在本机方式上是否可能实现。
| 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 |谢谢
发布于 2020-12-03 18:32:13
做一个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_idhttps://stackoverflow.com/questions/65124048
复制相似问题