在配置单元中比较这两个具有不同格式的列

Compare this two columns with different format in hive

我有源 table:b_ACCOUNT.b_curreny 和目标 table account.currency。 源 table b_ACCOUNT.b_curreny 货币格式为 'c' 和 'U' 目标 table account.currency 格式为 'CAD' 和 'USD'

我使用 case 将 'c' 和 'U' 格式更改为 'CAD' 和 'USD' 并比较这两列。我使用以下查询,并且此查询仍将目标列 acc.CURRENCY (CAD) 与源列 b.b_curreny(c)'

进行比较

SELECT 计数(*) 计数 ,

案例 当 b_curreny ='C' 然后 'CAD'

当 b_curreny ='U' 然后 'USD'

否则为空结束

来自帐户帐户

在 acc.account_NUMBER=b.account_NUMBER

上加入 b_ACCOUNT b

和acc.CURRENCY <> b.b_curreny

如果我使用以下查询,我会收到错误消息 Invalid table alias or column reference 'souce_currency':

SELECT 计数(*) 计数 ,

案例 当 b_curreny ='C' 然后 'CAD'

当 b_curreny ='U' 然后 'USD'

否则为空结束assource_curreny

来自帐户帐户

在 acc.account_NUMBER=b.account_NUMBER

上加入 b_ACCOUNT b

和acc.CURRENCY <> source_curreny

你能帮我比较一下这两列不同的格式吗?

列 - source_curreny 在查询的 select 子句中创建并在查询中使用相同的查询。因此,这个错误。您可以使用外部查询来引用此别名。

如果您对不匹配计数感兴趣,可以尝试以下查询。 (我没有测试过)

SELECT sum (case WHEN b.b_curreny ='C' and acc.CURRENCY!='CAD' THEN 1 
             WHEN b_curreny ='U' and  acc.CURRENCY!='USD' THEN 1 
             ELSE 0
            END) as mismatch_count
FROM ACCOUNT acc
join b_ACCOUNT b  
on acc.account_NUMBER=b.account_NUMBER;