【问题标题】:Create a date table in hive在 hive 中创建日期表
【发布时间】:2021-05-26 03:45:13
【问题描述】:

如何在 hive 中创建一个表,该表应包含从 2016 年 1 月 1 日到今天(01-01-2016 到 12-10-2016)的所有日期?

该表将只有一列,即日期列。

谢谢。

【问题讨论】:

标签: hive calendar hiveql date-range


【解决方案1】:

您可以自己生成这些数据。


转到 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;

您的数据表已准备就绪。

【讨论】:

    【解决方案2】:

    您可以从Kimball Group下载Excel格式的日期维度

    将 Excel 保存为 csv,放入 HDFS,在其上创建一个外部表。

    我建议您创建 date_dim 并将所有列保留在其中。日期维度应该在仓库中。您可以仅选择日期列或创建包含必要列的视图。

    您还可以在 Hive 中生成日期范围,请参阅此答案:https://stackoverflow.com/a/55440454/2700344

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    • 2017-11-17
    • 2022-10-02
    • 2020-08-23
    相关资源
    最近更新 更多