Hive:查询中没有显示任何结果
Hive: No results are displayed from the query
我正在对此 table 编写查询以获取所有目录的大小总和,按目录分组,日期是昨天。我没有从以下查询中得到任何输出。
test.id test.path test.size test.date
1 this/is/the/path1/fil.txt 232.24 2019-06-01
2 this/is/the/path2/test.txt 324.0 2016-06-01
3 this/is/the/path3/index.txt 12.3 2017-05-01
4 this/is/the/path4/test2.txt 134.0 2019-03-23
5 this/is/the/path1/files.json 2.23 2018-07-23
6 this/is/the/path1/code.java 1.34 2014-03-23
7 this/is/the/path2/data.csv 23.42 2016-06-23
8 this/is/the/path3/test.html 1.33 2018-09-23
9 this/is/the/path4/prog.js 6.356 2019-06-23
4 this/is/the/path4/test2.txt 134.0 2019-04-23
SELECT regexp_replace(path,'[^/]+$',''), sum(cast(size as decimal))
from test WHERE date > date_sub(current_date, 1) GROUP BY path,size;
你可能想要 WHERE date >= '2019-01-01'
。在匹配字符串中使用 %
,例如您的 2019%
,仅适用于 LIKE,不适用于不等式匹配。
你给出的例子看起来你想要 2019 日历年的所有行。
昨天,你想要
WHERE date >= DATE_SUB(current_date, -1)
AND date < current_date
即使您的 date
列包含时间戳,这仍然有效。
你不能group by size
,只能regexp_replace(path,'[^/]+$','')
。
另外,既然你只想要昨天的行,为什么要使用 WHERE date > '2019%
?
您可以使用 date_sub(current_date, 1)
:
获取昨天的日期
select
regexp_replace(path,'[^/]+$',''),
sum(cast(size as decimal))
from test
where date = date_sub(current_date, 1)
group by regexp_replace(path,'[^/]+$','');
我正在对此 table 编写查询以获取所有目录的大小总和,按目录分组,日期是昨天。我没有从以下查询中得到任何输出。
test.id test.path test.size test.date
1 this/is/the/path1/fil.txt 232.24 2019-06-01
2 this/is/the/path2/test.txt 324.0 2016-06-01
3 this/is/the/path3/index.txt 12.3 2017-05-01
4 this/is/the/path4/test2.txt 134.0 2019-03-23
5 this/is/the/path1/files.json 2.23 2018-07-23
6 this/is/the/path1/code.java 1.34 2014-03-23
7 this/is/the/path2/data.csv 23.42 2016-06-23
8 this/is/the/path3/test.html 1.33 2018-09-23
9 this/is/the/path4/prog.js 6.356 2019-06-23
4 this/is/the/path4/test2.txt 134.0 2019-04-23
SELECT regexp_replace(path,'[^/]+$',''), sum(cast(size as decimal))
from test WHERE date > date_sub(current_date, 1) GROUP BY path,size;
你可能想要 WHERE date >= '2019-01-01'
。在匹配字符串中使用 %
,例如您的 2019%
,仅适用于 LIKE,不适用于不等式匹配。
你给出的例子看起来你想要 2019 日历年的所有行。
昨天,你想要
WHERE date >= DATE_SUB(current_date, -1)
AND date < current_date
即使您的 date
列包含时间戳,这仍然有效。
你不能group by size
,只能regexp_replace(path,'[^/]+$','')
。
另外,既然你只想要昨天的行,为什么要使用 WHERE date > '2019%
?
您可以使用 date_sub(current_date, 1)
:
select
regexp_replace(path,'[^/]+$',''),
sum(cast(size as decimal))
from test
where date = date_sub(current_date, 1)
group by regexp_replace(path,'[^/]+$','');