PLSQL 到 Hive 查询函数的对话

Posted

技术标签:

【中文标题】PLSQL 到 Hive 查询函数的对话【英文标题】:PLSQL to Hive Query Function Conversation 【发布时间】:2021-03-15 15:46:13 【问题描述】:

我们正在尝试将 greenplum(postgresql) 迁移到 hive 和以下 plsql 查询需要转换为 hiveSQL。请帮帮我。

Greenplum函数查询语句。

select extract(days from ((date_trunc('MONTH', column1::date) + INTERVAL '1 MONTH - 1 day')::date)))::dec,2)::numeric daily;

select extract(year from column1)::character varying;

select extract(month from column2)::character varying;

注意:从 hive 中提取的天数不可用。请帮助我们。

我们需要转换 HiveSQL。

【问题讨论】:

【参考方案1】:

extract 在 hive 2.2 及更高版本中可用。 你可以看到下面的sql的输出。

select extract(day from current_date) dy,extract(month from current_date) mon, 
extract(year from current_date) yr

现在回答您的问题,

select extract(days from ((date_trunc('MONTH', column1::date) + INTERVAL '1 MONTH - 1 day')::date)))::dec,2)::numeric daily;

我认为这是一个月的最后一天。您可以使用 extract(day from last_day(column1))

select extract(year from column1)::character varying;

您可以使用cast ( extract(year from column1) as string)

请注意 hive 对数据类型非常敏感,在这两种情况下我都假定列为日期时间。

【讨论】:

cast(extract(day from (cast(date_add(add_months(trunc(cast('2021-03-16'as date),'MM'),1),-1) as date) )) 作为十进制) 作为 bigint) daily_tgt -- 这不起作用 您好,我们使用的是 2.1.1-cdh6.3.2 版本的 hive,请帮助我们。 一些演员表似乎没有必要。你能告诉我逻辑和例子吗? 我试过但需要验证请检查这个查询是否正确? select extract(days from ((date_trunc('MONTH', column1::date) + INTERVAL '1 MONTH - 1 day')::date)))::dec,2)::numeric daily; ====>>> cast(day(date_add(add_months(from_unixtime(unix_timestamp(cast('2021-02-12' as date),'yyyy-MM'),'yyyy-MM-dd'),1) , -1)) as int) daily_tgt

以上是关于PLSQL 到 Hive 查询函数的对话的主要内容,如果未能解决你的问题,请参考以下文章

如何查询历史sql

在plsql中输出SQL语句

[Hive]格式化输出 Hive 查询结果到 Excel

模态对话框上的 Oracle Apex 设置页面项

VC TAB控件子对话框如何使用主对话框的成员函数.

JAVA连接数据库后 ,如何窗口或者弹出对话框输出查询结果。在线等!原查询代码如下。