我想在DAT_015_X列和固定日期'01/01/2019‘之间做一个筛选
然后,我将DAT_015_X加载为chararray列。
Data_2 = FOREACH Data GENERATE
ToString(DAT_015_X,'yyyy/MM/dd) AS mydate;然后
Data_3 = FILTER Data_2 BY ((ToDate(mydate,'yyyy/MM/dd) > ToDate('01/01/2019','yyyy/MM/dd));我的原始数据看起来如下:
99991231
20200605
20190605
20200605这是全球数据的一部分
MGM_COMPTEUR;CIA_CD_CRV_CIA;CIA_DA_EM_CRV;CIA_CD_CTRL_BLCE;CIA_IDC_EXTR_RDJ;CIA_VLR_IDT_CRV_LOQ;CIA_VLR_REF_CRV;CIA_NO_SEQ_CRV;CIA_VLR_LG_ZON_RTG;CIA_HEU_CIA;CIA_TM_STP_CRE;CIA_CD_SI;CIA_VLR_1;CIA_DA_ARR_FIC;CIA_TY_ENR;CIA_CD_BTE;CIA_CD_PER;CIA_CD_EFS;CIA_CD_ETA_VAL_CRV;CIA_CD_EVE_CPR;CIA_CD_APLI_TDU;CIA_CD_STE_RTG;CIA_DA_TT_RTG;CIA_NO_ENR_RTG;CIA_DA_VAL_EVE;PSE_001;STR_002;STR_003;CPR_006_VLR;CPR_006_DCM;CPR_006_DVS;CPR_008_VLR;CPR_008_DCM;CPR_008_DVS;CPR_009_VLR;CPR_009_DCM;CPR_009_DVS;CPR_059_VLR;CPR_059_DCM;CPR_059_DVS;CPR_060_VLR;CPR_060_DCM;CPR_060_DVS;RUB_205;RUB_216;DAT_015_X;NB_005_VLR;NB_005_DCM;NB_007_VLR;NB_007_DCM;NB_012_VLR;NB_012_DCM;EUR_061_VLR;EUR_061_DCM;EUR_061_CD_DVS;EUR_062_VLR;EUR_062_DCM;EUR_062_CD_DVS
00000000000000000000;22002;20190731;9;9; ;22002 0000000001;0000000001;ZZZZZZZZZZZZZZZZZZZZ; ;2019-07-31-18.03.27.880010;002;00000000000000000001;20190731; ;2200;M;02;V;00001; ; ;ZZZZZZZZ;ZZZZZZZZZZZZZZZZZZZZ;20081112;50421451;065000;060100;+00000000000000000;02;EUR ;+00000000000000000;02;EUR ;+00000000000000000;02;EUR ;+00000000000000000;02;EUR ;+00000000000000000;02;EUR ;3 ;40 ;99991231;+00000000000000000;00;+00000000000000000;00;+00000000000000000;00;+00000000000000000;02;EUR ;+00000000000000000;02;EUR ;
00000000000000000001;22002;20190731;9;9; ;22002 0000000002;0000000002;ZZZZZZZZZZZZZZZZZZZZ; ;2019-07-31-18.03.27.880010;002;00000000000000000001;20190731; ;2200;M;02;V;00001; ; ;ZZZZZZZZ;ZZZZZZZZZZZZZZZZZZZZ;20081112;52289527;065000;060100;+00000000000000000;02;EUR ;+00000000003000000;02;EUR ;+00000000000000000;02;EUR ;+00000000000000000;02;EUR ;+00000000000000000;02;EUR ;1 ;40 ;20200605;+00000000000000000;00;+00000000000000000;00;+00000000000000000;00;+00000000003000000;02;EUR ;+00000000000000000;02;EUR ;
00000000000000000002;22002;20190731;9;9; ;22002 0000000003;0000000003;ZZZZZZZZZZZZZZZZZZZZ; ;2019-07-31-18.03.27.880010;002;00000000000000000001;20190731; ;2200;M;02;V;00001; ; ;ZZZZZZZZ;ZZZZZZZZZZZZZZZZZZZZ;20081112;52439938;065000;060100;+00000000000000000;02;EUR ;+00000000001000000;02;EUR ;+00000000000000000;02;EUR ;+00000000000000000;02;EUR ;+00000000000000000;02;EUR ;1 ;40 ;20190605;+00000000000000000;00;+00000000000000000;00;+00000000000000000;00;+00000000001000000;02;EUR ;+00000000000000000;02;EUR ;但是这会返回这个消息错误
无法推断出org.apache.pig.builtin.ToString的匹配函数为多个或不合适。请使用明确的演员阵容。
请问如何解决这个问题?
发布于 2019-09-11 20:00:43
这个问题的解决办法很简单。
实际上,我将变量DAT_015_X声明为长数据,而不是chararray。然后,我将过滤器创建为:
Data_2 = FILTER Data BY (DAT_015_X > 20190101);并给出了所需的结果。
发布于 2019-09-05 16:41:05
请注意,您缺少尾引号,即‘在格式'yyyy/MM/dd中。
Data_2 = FILTER Data BY ((ToDate(DAT_015_X,'yyyyMMdd') > ToDate('20190101','yyyyMMdd'));https://stackoverflow.com/questions/57806489
复制相似问题