Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop 查看在查询结果中将行计数为列_Hadoop_Hive - Fatal编程技术网

Hadoop 查看在查询结果中将行计数为列

Hadoop 查看在查询结果中将行计数为列,hadoop,hive,Hadoop,Hive,首先,我能够以一种方式获取数据。我的目的是提高查询结果的可读性。我正在寻找是否可能 我有一张由设备供电的桌子。我想得到每小时发送的数据数量,这些数据由两个相同的列组成。需要将这两列分组以确定一种设备类型。 表结构如下所示: | identifier-1 | identifier-2 | day | hour | data_name | data_value | |--------------|--------------|------------|------|----------

首先,我能够以一种方式获取数据。我的目的是提高查询结果的可读性。我正在寻找是否可能

我有一张由设备供电的桌子。我想得到每小时发送的数据数量,这些数据由两个相同的列组成。需要将这两列分组以确定一种设备类型。 表结构如下所示:

| identifier-1 | identifier-2 | day        | hour | data_name | data_value |
|--------------|--------------|------------|------|-----------|------------|
|  type_1      | subType_4    | 2016-08-25 | 0    | Key-30    | 4342       |
|--------------|--------------|------------|------|-----------|------------|
|  type_3      | subType_2    | 2016-08-25 | 0    | Key-50    | 96         |
|--------------|--------------|------------|------|-----------|------------|
|  type_6      | subType_2    | 2016-08-25 | 1    | Key-44    | 324        |
|--------------|--------------|------------|------|-----------|------------|
|  type_2      | subType_1    | 2016-08-25 | 1    | Key-26    | 225        |
|--------------|--------------|------------|------|-----------|------------|
我将使用一个由所有设备发送的特定数据名,获取该数据名的计数将为我提供每小时发送的数据。可以按标识符-1、标识符-2、日期和小时将数字分成24行。但是,它们将对每种设备类型重复

| identifier-1 | identifier-2 | day        | hour | count |
|--------------|--------------|------------|------|-------|
|  type_6      | subType_2    | 2016-08-25 | 0    |  340  |
|--------------|--------------|------------|------|-------|
|  type_6      | subType_2    | 2016-08-25 | 1    |  340  |
|--------------|--------------|------------|------|-------|
|--------------|--------------|------------|------|-------|
|  type_1      | subType_4    | 2016-08-25 | 0    |  32   |
|--------------|--------------|------------|------|-------|
|  type_1      | subType_4    | 2016-08-25 | 1    |  30   |
|--------------|--------------|------------|------|-------|
|--------------|--------------|------------|------|-------|
|--------------|--------------|------------|------|-------|
我想这样查看结果:

| identifier-1 | identifier-2 | day        | count_of_0 | count_of_1 |
|--------------|--------------|------------|------------|------------|
|  type_6      | subType_2    | 2016-08-25 | 340        |  340       |
|--------------|--------------|------------|------------|------------|
|  type_1      | subType_4    | 2016-08-25 | 32         |  30        |
|--------------|--------------|------------|------------|------------|
|--------------|--------------|------------|------------|------------|
在SQL中,可以在结果中获取子查询和列,但在配置单元上不可能。我想这就是所谓的相关子查询

这个问题的答案对我不起作用


您有什么想法或建议吗?

您可以使用条件聚合:

select identifier1, identifier2, day,
       sum(case when hour = 0 then data_value else 0 end) as cnt_0,
       sum(case when hour = 1 then data_value else 0 end) as cnt_1
from t
where data_name = ??
group by identifier1, identifier2, day
order by identifier1, identifier2, day

可以使用条件聚合执行此操作:

select identifier1, identifier2, day,
       sum(case when hour = 0 then data_value else 0 end) as cnt_0,
       sum(case when hour = 1 then data_value else 0 end) as cnt_1
from t
where data_name = ??
group by identifier1, identifier2, day
order by identifier1, identifier2, day

谢谢你编辑我的问题:)谢谢你编辑我的问题:)这给了我想要的确切视图。再次感谢:-)这给了我想要的确切的视图。再次感谢:-)