Dear All,
for the later versions impala or new version odbc for impala ? If new version for impala have a big problem for deploy on my produciton!!!! Best Regards, Siksit Santirojanakul (Eak) IT - CIS Customer Delivery / Campaign True Info Tech Co., Ltd. Tel. 02-699-7428 From: Tim Armstrong <tarmstr...@cloudera.com> To: user@impala.incubator.apache.org Cc: u...@impala.apache.org, user-subscr...@impala.incubator.apache.org Date: 24/09/2016 06:46 Subject: Re: COUNT(DISTINCT col) returns wrong results: Impala ODBC: Error It's probably one of the multiple bugs along this line that have been fixed in later versions of Impala. E.g. https://issues.cloudera.org/browse/IMPALA-2216?filter=11799 On Thu, Sep 22, 2016 at 8:44 PM, <siksit_...@truecorp.co.th> wrote: retry Best Regards, Siksit Santirojanakul (Eak) IT - CIS Customer Delivery / Campaign True Info Tech Co., Ltd. Tel. 02-699-7428 From: Siksit Santirojanakul/True Corp To: user@impala.incubator.apache.org Date: 21/09/2016 14:54 Subject: Fw: COUNT(DISTINCT col) returns wrong results: Impala ODBC: Error Dear All, Have problem from impala Impala 2.2.2 , odbc driver for Impala 2.05.28.1008. Error msg "Exception: DBD[Cloudera][ImpalaODBC] (110) Error while excuting a query in Impala: [HY000]: illegalState: Illegal reference to no-materialized slot: tid=0 sid=5 State: S1000" My Sql Query: with a1 as ( SELECT TO_DATE(L.INSERT_DATE) AS LUCKY_DATE , COUNT(DISTINCT L.AUDIENCEKEY) AS TOTAL_MSISDN , SUM(CASE WHEN CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '20' THEN 1 ELSE 0 END) AS TOPUP_COUNT_20 , SUM(CASE WHEN CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '30' THEN 1 ELSE 0 END) AS TOPUP_COUNT_30 , SUM(CASE WHEN CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '50' THEN 1 ELSE 0 END) AS TOPUP_COUNT_50 , SUM(CASE WHEN CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '100' THEN 1 ELSE 0 END) AS TOPUP_COUNT_100 , SUM(CASE WHEN CDR_TYPE = 1 THEN 1 ELSE 0 END) AS TOPUP_COUNT , SUM(CASE WHEN CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '20' THEN TOPUP_AMOUNT ELSE 0 END) AS TOPUP_AMOUNT_20 , SUM(CASE WHEN CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '30' THEN TOPUP_AMOUNT ELSE 0 END) AS TOPUP_AMOUNT_30 , SUM(CASE WHEN CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '50' THEN TOPUP_AMOUNT ELSE 0 END) AS TOPUP_AMOUNT_50 , SUM(CASE WHEN CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '100' THEN TOPUP_AMOUNT ELSE 0 END) AS TOPUP_AMOUNT_100 , SUM(CASE WHEN CDR_TYPE = 1 THEN TOPUP_AMOUNT ELSE 0 END) AS TOPUP_AMOUNT , SUM(CASE WHEN CDR_TYPE = 2 THEN 1 ELSE 0 END) AS FIRSTCALL_COUNT , COUNT(*) AS LUCKYCODE_COUNT , SUM(CASE WHEN trim(PROVISION_ID) <> '' THEN BONUS_AMOUNT ELSE 0 END) AS REDEEM_AMOUNT , SUM(CASE WHEN trim(PROVISION_ID) <> '' AND CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '20' THEN 1 ELSE 0 END) AS REDEEM_TRAN_20 , SUM(CASE WHEN trim(PROVISION_ID) <> '' AND CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '30' THEN 1 ELSE 0 END) AS REDEEM_TRAN_30 , SUM(CASE WHEN trim(PROVISION_ID) <> '' AND CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '50' THEN 1 ELSE 0 END) AS REDEEM_TRAN_50 , SUM(CASE WHEN trim(PROVISION_ID) <> '' AND CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '100' THEN 1 ELSE 0 END) AS REDEEM_TRAN_100 , SUM(CASE WHEN trim(PROVISION_ID) <> '' AND CDR_TYPE = 1 THEN 1 ELSE 0 END) AS REDEEM_TRAN , SUM(CASE WHEN CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '20' THEN 1 ELSE 0 END) AS TOPUP_TRAN_20 , SUM(CASE WHEN CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '30' THEN 1 ELSE 0 END) AS TOPUP_TRAN_30 , SUM(CASE WHEN CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '50' THEN 1 ELSE 0 END) AS TOPUP_TRAN_50 , SUM(CASE WHEN CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '100' THEN 1 ELSE 0 END) AS TOPUP_TRAN_100 , SUM(CASE WHEN CDR_TYPE = 1 THEN 1 ELSE 0 END) AS TOPUP_TRAN , SUM(CASE WHEN trim(PROVISION_ID) <> '' THEN 1 ELSE 0 END) AS REDEEM_COUNT , SUM(CASE WHEN CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '20' THEN BONUS_AMOUNT ELSE 0 END) AS BONUS_AMOUNT_20 , SUM(CASE WHEN CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '30' THEN BONUS_AMOUNT ELSE 0 END) AS BONUS_AMOUNT_30 , SUM(CASE WHEN CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '50' THEN BONUS_AMOUNT ELSE 0 END) AS BONUS_AMOUNT_50 , SUM(CASE WHEN CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '100' THEN BONUS_AMOUNT ELSE 0 END) AS BONUS_AMOUNT_100 , SUM(CASE WHEN CDR_TYPE = 1 THEN BONUS_AMOUNT ELSE 0 END) AS TOTAL_BONUS_AMOUNT , SUM(CASE WHEN CDR_TYPE = 1 AND trim(PROVISION_ID) <> '' AND F.PROVISIONPARAM4 = '20'THEN BONUS_AMOUNT ELSE 0 END) AS REDEEM_AMOUNT_20 , SUM(CASE WHEN CDR_TYPE = 1 AND trim(PROVISION_ID) <> '' AND F.PROVISIONPARAM4 = '30'THEN BONUS_AMOUNT ELSE 0 END) AS REDEEM_AMOUNT_30 , SUM(CASE WHEN CDR_TYPE = 1 AND trim(PROVISION_ID) <> '' AND F.PROVISIONPARAM4 = '50'THEN BONUS_AMOUNT ELSE 0 END) AS REDEEM_AMOUNT_50 , SUM(CASE WHEN CDR_TYPE = 1 AND trim(PROVISION_ID) <> '' AND F.PROVISIONPARAM4 = '100'THEN BONUS_AMOUNT ELSE 0 END) AS REDEEM_AMOUNT_100 FROM unica.BM_LUCKYDRAW L INNER JOIN unica.BM_FULFILLMENT F ON F.TREATMENTCODE = L.TREATMENTCODE AND F.AUDIENCELEVEL = L.AUDIENCELEVEL AND F.AUDIENCEKEY = L.AUDIENCEKEY WHERE L.CAMPAIGNCODE IN('C000000301') GROUP BY TO_DATE(INSERT_DATE) ) ,a2 as ( SELECT TO_DATE(L.INSERT_DATE) AS LUCKY_DATE ,COUNT(DISTINCT CASE WHEN CDR_TYPE = 1 THEN L.AUDIENCEKEY ELSE NULL END) AS TOPUP_MSISDN FROM unica.BM_LUCKYDRAW L INNER JOIN unica.BM_FULFILLMENT F ON F.TREATMENTCODE = L.TREATMENTCODE AND F.AUDIENCELEVEL = L.AUDIENCELEVEL AND F.AUDIENCEKEY = L.AUDIENCEKEY WHERE L.CAMPAIGNCODE IN('C000000301') GROUP BY TO_DATE(INSERT_DATE) ) ,a3 as ( SELECT TO_DATE(L.INSERT_DATE) AS LUCKY_DATE ,COUNT(DISTINCT CASE WHEN trim(PROVISION_ID) <> '' THEN L.AUDIENCEKEY ELSE '' END) AS REDEEM_MSISDN FROM unica.BM_LUCKYDRAW L INNER JOIN unica.BM_FULFILLMENT F ON F.TREATMENTCODE = L.TREATMENTCODE AND F.AUDIENCELEVEL = L.AUDIENCELEVEL AND F.AUDIENCEKEY = L.AUDIENCEKEY WHERE L.CAMPAIGNCODE IN('C000000301') GROUP BY TO_DATE(INSERT_DATE) ) ,a4 as ( SELECT TO_DATE(L.INSERT_DATE) AS LUCKY_DATE ,COUNT(DISTINCT CASE WHEN trim(PROVISION_ID) <> '' AND CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '20' THEN L.AUDIENCEKEY ELSE null END) AS REDEEM_MSISDN_20 FROM unica.BM_LUCKYDRAW L INNER JOIN unica.BM_FULFILLMENT F ON F.TREATMENTCODE = L.TREATMENTCODE AND F.AUDIENCELEVEL = L.AUDIENCELEVEL AND F.AUDIENCEKEY = L.AUDIENCEKEY WHERE L.CAMPAIGNCODE IN('C000000301') GROUP BY TO_DATE(INSERT_DATE) ) ,a5 as ( SELECT TO_DATE(L.INSERT_DATE) AS LUCKY_DATE ,COUNT(DISTINCT CASE WHEN trim(PROVISION_ID) <> '' AND CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '30' THEN L.AUDIENCEKEY ELSE null END) AS REDEEM_MSISDN_30 FROM unica.BM_LUCKYDRAW L INNER JOIN unica.BM_FULFILLMENT F ON F.TREATMENTCODE = L.TREATMENTCODE AND F.AUDIENCELEVEL = L.AUDIENCELEVEL AND F.AUDIENCEKEY = L.AUDIENCEKEY WHERE L.CAMPAIGNCODE IN('C000000301') GROUP BY TO_DATE(INSERT_DATE) ) ,a6 as ( SELECT TO_DATE(L.INSERT_DATE) AS LUCKY_DATE ,COUNT(DISTINCT CASE WHEN trim(PROVISION_ID) <> '' AND CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '50' THEN L.AUDIENCEKEY ELSE null END) AS REDEEM_MSISDN_50 FROM unica.BM_LUCKYDRAW L INNER JOIN unica.BM_FULFILLMENT F ON F.TREATMENTCODE = L.TREATMENTCODE AND F.AUDIENCELEVEL = L.AUDIENCELEVEL AND F.AUDIENCEKEY = L.AUDIENCEKEY WHERE L.CAMPAIGNCODE IN('C000000301') GROUP BY TO_DATE(INSERT_DATE) ) ,a7 as ( SELECT TO_DATE(L.INSERT_DATE) AS LUCKY_DATE ,COUNT(DISTINCT CASE WHEN trim(PROVISION_ID) <> '' AND CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '100' THEN L.AUDIENCEKEY ELSE null END) AS REDEEM_MSISDN_100 FROM unica.BM_LUCKYDRAW L INNER JOIN unica.BM_FULFILLMENT F ON F.TREATMENTCODE = L.TREATMENTCODE AND F.AUDIENCELEVEL = L.AUDIENCELEVEL AND F.AUDIENCEKEY = L.AUDIENCEKEY WHERE L.CAMPAIGNCODE IN('C000000301') GROUP BY TO_DATE(INSERT_DATE) ) ,a8 as ( SELECT TO_DATE(L.INSERT_DATE) AS LUCKY_DATE ,COUNT(DISTINCT CASE WHEN CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '20' THEN L.AUDIENCEKEY ELSE null END) AS TOPUP_MSISDN_20 FROM unica.BM_LUCKYDRAW L INNER JOIN unica.BM_FULFILLMENT F ON F.TREATMENTCODE = L.TREATMENTCODE AND F.AUDIENCELEVEL = L.AUDIENCELEVEL AND F.AUDIENCEKEY = L.AUDIENCEKEY WHERE L.CAMPAIGNCODE IN('C000000301') GROUP BY TO_DATE(INSERT_DATE) ) ,a9 as ( SELECT TO_DATE(L.INSERT_DATE) AS LUCKY_DATE ,COUNT(DISTINCT CASE WHEN CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '30' THEN L.AUDIENCEKEY ELSE null END) AS TOPUP_MSISDN_30 FROM unica.BM_LUCKYDRAW L INNER JOIN unica.BM_FULFILLMENT F ON F.TREATMENTCODE = L.TREATMENTCODE AND F.AUDIENCELEVEL = L.AUDIENCELEVEL AND F.AUDIENCEKEY = L.AUDIENCEKEY WHERE L.CAMPAIGNCODE IN('C000000301') GROUP BY TO_DATE(INSERT_DATE) ) ,a10 as ( SELECT TO_DATE(L.INSERT_DATE) AS LUCKY_DATE ,COUNT(DISTINCT CASE WHEN CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '50' THEN L.AUDIENCEKEY ELSE null END) AS TOPUP_MSISDN_50 FROM unica.BM_LUCKYDRAW L INNER JOIN unica.BM_FULFILLMENT F ON F.TREATMENTCODE = L.TREATMENTCODE AND F.AUDIENCELEVEL = L.AUDIENCELEVEL AND F.AUDIENCEKEY = L.AUDIENCEKEY WHERE L.CAMPAIGNCODE IN('C000000301') GROUP BY TO_DATE(INSERT_DATE) ) ,a11 as ( SELECT TO_DATE(L.INSERT_DATE) AS LUCKY_DATE ,COUNT(DISTINCT CASE WHEN CDR_TYPE = 1 AND F.PROVISIONPARAM4 = '100' THEN L.AUDIENCEKEY ELSE null END) AS TOPUP_MSISDN_100 FROM unica.BM_LUCKYDRAW L INNER JOIN unica.BM_FULFILLMENT F ON F.TREATMENTCODE = L.TREATMENTCODE AND F.AUDIENCELEVEL = L.AUDIENCELEVEL AND F.AUDIENCEKEY = L.AUDIENCEKEY WHERE L.CAMPAIGNCODE IN('C000000301') GROUP BY TO_DATE(INSERT_DATE) ) SELECT COALESCE(a1.LUCKY_DATE, a12.LUCKY_DATE) as LUCKY_DATE, COALESCE(a12.TOTAL_REGISTED, last_value(a12.TOTAL_REGISTED) OVER (order by COALESCE(a1.LUCKY_DATE, a12.LUCKY_DATE) ASC)) AS TOTAL_REGISTED, COALESCE(a12.TODAY_REGISTED, 0) AS TODAY_REGISTED, COALESCE(a1.TOTAL_MSISDN, 0) AS TOTAL_MSISDN, COALESCE(a1.TOPUP_AMOUNT_20, 0) AS TOPUP_AMOUNT_20,COALESCE(a1.TOPUP_AMOUNT_30, 0) AS TOPUP_AMOUNT_30, COALESCE(a1.TOPUP_AMOUNT_50, 0) AS TOPUP_AMOUNT_50, COALESCE(a1.TOPUP_AMOUNT_100, 0) AS TOPUP_AMOUNT_100, COALESCE(a1.TOPUP_AMOUNT, 0) AS TOPUP_AMOUNT, COALESCE(a1.FIRSTCALL_COUNT, 0) AS FIRSTCALL_COUNT, COALESCE(a1.LUCKYCODE_COUNT, 0) AS LUCKYCODE_COUNT, COALESCE(a1.BONUS_AMOUNT_20, 0) AS BONUS_AMOUNT_20,COALESCE(a1.BONUS_AMOUNT_30, 0) AS BONUS_AMOUNT_30,COALESCE(a1.BONUS_AMOUNT_50, 0) AS BONUS_AMOUNT_50, COALESCE(a1.BONUS_AMOUNT_100, 0) AS BONUS_AMOUNT_100, COALESCE(a1.TOTAL_BONUS_AMOUNT, 0) AS TOTAL_BONUS_AMOUNT, COALESCE(a1.REDEEM_AMOUNT_20, 0) AS REDEEM_AMOUNT_20,COALESCE(a1.REDEEM_AMOUNT_30, 0) AS REDEEM_AMOUNT_30, COALESCE(a1.REDEEM_AMOUNT_50, 0) AS REDEEM_AMOUNT_50, COALESCE(a1.REDEEM_AMOUNT_100, 0) AS REDEEM_AMOUNT_100, COALESCE(a1.REDEEM_AMOUNT, 0) AS REDEEM_AMOUNT, COALESCE(a4.REDEEM_MSISDN_20, 0) AS REDEEM_MSISDN_20,COALESCE(a5.REDEEM_MSISDN_30, 0) AS REDEEM_MSISDN_30,COALESCE(a6.REDEEM_MSISDN_50, 0) AS REDEEM_MSISDN_50,COALESCE(a7.REDEEM_MSISDN_100, 0) AS REDEEM_MSISDN_100, COALESCE(a3.REDEEM_MSISDN, 0) AS REDEEM_MSISDN, COALESCE(a1.REDEEM_TRAN_20, 0) AS REDEEM_TRAN_20,COALESCE(a1.REDEEM_TRAN_30, 0) AS REDEEM_TRAN_30,COALESCE(a1.REDEEM_TRAN_50, 0) AS REDEEM_TRAN_50,COALESCE(a1.REDEEM_TRAN_100, 0) AS REDEEM_TRAN_100, COALESCE(a1.REDEEM_TRAN, 0) AS REDEEM_TRAN, COALESCE(a1.TOPUP_COUNT_20, 0) AS TOPUP_COUNT_20,COALESCE(a1.TOPUP_COUNT_30, 0) AS TOPUP_COUNT_30,COALESCE(a1.TOPUP_COUNT_50, 0) AS TOPUP_COUNT_50,COALESCE(a1.TOPUP_COUNT_100, 0) AS TOPUP_COUNT_100, COALESCE(a1.TOPUP_COUNT, 0) AS TOPUP_COUNT, COALESCE(a8.TOPUP_MSISDN_20, 0) AS TOPUP_MSISDN_20,COALESCE(a9.TOPUP_MSISDN_30, 0) AS TOPUP_MSISDN_30,COALESCE(a10.TOPUP_MSISDN_50, 0) AS TOPUP_MSISDN_50,COALESCE(a11.TOPUP_MSISDN_100, 0) AS TOPUP_MSISDN_100, COALESCE(a2.TOPUP_MSISDN, 0) AS TOPUP_MSISDN, COALESCE(a1.TOPUP_TRAN_20, 0) AS TOPUP_TRAN_20, COALESCE(a1.TOPUP_TRAN_30, 0) AS TOPUP_TRAN_30, COALESCE(a1.TOPUP_TRAN_50, 0) AS TOPUP_TRAN_50, COALESCE(a1.TOPUP_TRAN_100, 0) AS TOPUP_TRAN_100, COALESCE(a1.TOPUP_TRAN , 0) AS TOPUP_TRAN, COALESCE(a13.TODAY_REGISTED_SUCC, 0) TODAY_REGISTED_SUCC, COALESCE(a14.REDEEM_SUCC, 0 ) AS REDEEM_SUCC, COALESCE(a14.REDEEM_FAIL, 0 ) AS REDEEM_FAIL, COALESCE(a15.sum_input, 0 ) aS SUM_INPUT, COALESCE(a15.sum_output, 0 ) aS sum_output from a1 FULL OUTER JOIN unica.v_Today_Reg a12 on a1.LUCKY_DATE = a12.LUCKY_DATE FUll OUTER JOIN unica.v_Today_Reg_Succ a13 on a1.LUCKY_DATE= a13.LUCKY_DATE FUll OUTER JOIN unica.V_Redeem a14 on a1.LUCKY_DATE= a14.LUCKY_DATE FULL JOIN unica.V_Eligible a15 on a1.LUCKY_DATE = a15.PROCESS_DATE FULL JOIN a2 on a1.LUCKY_DATE = a2.LUCKY_DATE FULL JOIN a3 on a1.LUCKY_DATE = a3.LUCKY_DATE FULL JOIN a4 on a1.LUCKY_DATE = a4.LUCKY_DATE FULL JOIN a5 on a1.LUCKY_DATE = a5.LUCKY_DATE FULL JOIN a6 on a1.LUCKY_DATE = a6.LUCKY_DATE FULL JOIN a7 on a1.LUCKY_DATE = a7.LUCKY_DATE FULL JOIN a8 on a1.LUCKY_DATE = a8.LUCKY_DATE FULL JOIN a9 on a1.LUCKY_DATE = a9.LUCKY_DATE FULL JOIN a10 on a1.LUCKY_DATE = a10.LUCKY_DATE FULL JOIN a11 on a1.LUCKY_DATE = a11.LUCKY_DATE where cast(a1.LUCKY_DATE as timestamp) = cast('2016-09-09' as timestamp) Best Regards, Siksit Santirojanakul (Eak) IT - CIS Customer Delivery / Campaign True Info Tech Co., Ltd. Tel. 02-699-7428 Important Confidentiality: This Information is intended for the above-named person and may contain confidential and/or legally privileged material. Any opinions expressed in this information are not necessarily those of the company. If it has come to you in error you must take no action based on it, nor must you copy or show it to anyone; please delete/destroy and inform the sender immediately. Monitoring/Viruses True Corporation and subsidiaries reserves the right to monitor all incoming and outgoing emails via True Corporation and subsidiaries's systems. Although we have security program to monitor and eliminate virus, we also advise that in keeping with good computing practice the recipient should ensure they are actually virus free. Important Confidentiality: This Information is intended for the above-named person and may contain confidential and/or legally privileged material. Any opinions expressed in this information are not necessarily those of the company. If it has come to you in error you must take no action based on it, nor must you copy or show it to anyone; please delete/destroy and inform the sender immediately. Monitoring/Viruses True Corporation and subsidiaries reserves the right to monitor all incoming and outgoing emails via True Corporation and subsidiaries's systems. Although we have security program to monitor and eliminate virus, we also advise that in keeping with good computing practice the recipient should ensure they are actually virus free.