【发布时间】:2021-05-26 03:45:13
【问题描述】:
如何在 hive 中创建一个表,该表应包含从 2016 年 1 月 1 日到今天(01-01-2016 到 12-10-2016)的所有日期?
该表将只有一列,即日期列。
谢谢。
【问题讨论】:
-
在 Hive 中生成日期表:stackoverflow.com/a/55440454/2700344
标签: hive calendar hiveql date-range
如何在 hive 中创建一个表,该表应包含从 2016 年 1 月 1 日到今天(01-01-2016 到 12-10-2016)的所有日期?
该表将只有一列,即日期列。
谢谢。
【问题讨论】:
标签: hive calendar hiveql date-range
您可以自己生成这些数据。
转到 Hive shell 并执行:
CREATE TABLE tbl1 (col1 date)
hive 中日期类型的默认格式:YYYY-MM-DD。所以我们会生成这种格式的数据。
现在使用shell script 生成数据。打开终端并开火:
gedit /tmp/test.sh
复制此代码:
#!/bin/bash
DATE=2016-01-01
for i in {0..285}
do
NEXT_DATE=$(date +%Y-%m-%d -d "$DATE + $i day")
echo "$NEXT_DATE"
done
你默认没有执行权限,使用:
chmod 777 /tmp/test.sh
现在开火:
/tmp/test.sh >/tmp/test.csv
您在test.csv 中获得了数据
2016-01-01
2016-01-02
2016-01-03
2016-01-04
........
现在回到蜂巢壳和火:
load data local inpath '/tmp/test.csv' into table tbl1;
您的数据表已准备就绪。
【讨论】:
您可以从Kimball Group下载Excel格式的日期维度
将 Excel 保存为 csv,放入 HDFS,在其上创建一个外部表。
我建议您创建 date_dim 并将所有列保留在其中。日期维度应该在仓库中。您可以仅选择日期列或创建包含必要列的视图。
您还可以在 Hive 中生成日期范围,请参阅此答案:https://stackoverflow.com/a/55440454/2700344
【讨论】: