hadoop 将TO_CHAR、IS_DATE转换为配置单元查询

gg58donl  于 2022-11-21  发布在  Hadoop
关注(0)|答案(1)|浏览(227)

我想将特定的数据转换成Hive,但是Oracle中的函数在Hive中不能使用,如何解决这个问题?应用的转换规则如下:

  1. DECODE(TRUE, IS_DATE(TO_CHAR(columnname , 'YYYYMMDD')), 'YYYYMMDD',NULL)

DECODE的情况下,已经确认可以用IF处理,但是我找不到改变IS_DATE函数和TO_CHAR函数的方法。

kxkpmulp

kxkpmulp1#

Oracle没有IS_DATE函数。是否确定这不是用户定义的函数?如果是,则需要查看源代码并检查它的功能,然后在配置单元中复制该函数。
DECODE(a, b, c, d)可以重写为CASE表达式:

  1. CASE WHEN a = b THEN c ELSE d END

因此,您的代码(假设columnnameDATE,您使用TO_CHAR将其转换为字符串,然后IS_DATE检查它是否是有效日期,这似乎毫无意义,因为只有当columnnameNULL时,它才不是有效日期)将转换为:

  1. CASE
  2. WHEN CAST(columnname AS STRING FORMAT 'YYYYMMDD') IS NOT NULL
  3. THEN 'YYYYMMDD'
  4. ELSE NULL
  5. END

或者更简单地说:

  1. CASE
  2. WHEN columnname IS NOT NULL
  3. THEN 'YYYYMMDD'
  4. ELSE NULL
  5. END
展开查看全部

相关问题