首页 > 解决方案 > 迄今为止的配置单元字符串超过了引导函数

问题描述

所以伙计们,我必须将其从 PL/SQL (Oracle) 转换为 Hive 格式:

NVL(TO_CHAR(TO_DATE(SUBSTR(LEAD(DATE_TIME) OVER (PARTITION BY CU_NO ORDER BY CR_NO ,TO_NUMBER(DATE_TIME)),1,6),'YYMMDD'),'YYYYMMDD'),'99991231') END_DATE

我已经尝试过:

NVL(cast(from_unixtime(UNIX_TIMESTAMP(SUBSTR(LEAD(DATE_TIME) OVER (PARTITION BY CU_NO ORDER BY CR_NO ,TO_NUMBER(DATE_TIME)),1,6), 'yyMMdd' ),'yyyyMMdd') as string)'99991231') END_DATE

它总是返回在 'yyyyMMdd' 附近的 ')' 处缺少 EOF。什么地方出了错?

标签: hivehiveqllead

解决方案


NVL(cast(from_unixtime(UNIX_TIMESTAMP(SUBSTR(LEAD(DATE_TIME) OVER (PARTITION BY CU_NO ORDER BY CR_NO ,TO_NUMBER(DATE_TIME)),1,6), 'yyMMdd' ),'yyyyMMdd') as string) 缺少逗号, '99991231')

缩进格式:

NVL(
    cast(
        from_unixtime(
            UNIX_TIMESTAMP(
                SUBSTR(
                    LEAD(DATE_TIME) OVER (PARTITION BY CU_NO
                                          ORDER BY CR_NO, 
                                                   TO_NUMBER(DATE_TIME)
                                         ),
                    1,6
                ),
                'yyMMdd'
            ),
            'yyyyMMdd'
        ) as string
    ),
'99991231'
)

推荐阅读