将TO_CHAR, IS_DATE转换为hive查询



我想将特定数据转换为Hive。Oracle中的功能不能在Hive中使用。我怎么解决这个问题?所应用的转换规则如下:

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

对于DECODE,证实可以用IF处理。但是我找不到改变IS_DATE函数和TO_CHAR函数的方法。

Oracle没有IS_DATE函数。您确定这不是用户定义的函数吗?如果是这样,那么你需要查看源代码,检查它是做什么的,并在Hive中复制它。

DECODE(a, b, c, d)可以重写为CASE表达式:

CASE WHEN a = b THEN c ELSE d END

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

CASE
WHEN CAST(columnname AS STRING FORMAT 'YYYYMMDD') IS NOT NULL
THEN 'YYYYMMDD'
ELSE NULL
END

或者更简单:

CASE
WHEN columnname IS NOT NULL
THEN 'YYYYMMDD'
ELSE NULL
END

相关内容

  • 没有找到相关文章

最新更新