将yyyymmdd字符数组转换为yyyy / mm / dd日期格式

时间:2019-09-05 13:21:55

标签: apache-pig

我想在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多个或都不适合。   请使用显式强制转换。

请问如何解决此问题?

2 个答案:

答案 0 :(得分:0)

请注意,您缺少以'yyyy / MM / dd格式结尾的引号,即'。 假设您的DAT_015_X为yyyyMMdd格式,请使用此

Data_2 = FILTER Data  BY ((ToDate(DAT_015_X,'yyyyMMdd') > ToDate('20190101','yyyyMMdd'));

答案 1 :(得分:0)

该问题的解决方案非常简单。

实际上,我将变量 DAT_015_X 声明为长数据而不是chararray。 然后,将过滤器创建为:

const VictoryZoomVoronoiContainer = createContainer('zoom', 'voronoi');

<VictoryChart
  containerComponent={
    <VictoryZoomVoronoiContainer
      zoomDimension="x"
      zoomDomain={{ x: [0, 6], y: [0, 10] }}
    />
  }
  domainPadding={10}>
  <VictoryAxis
    dependentAxis={true}
    style={{
      grid: { stroke: 'grey' },
    }}
  />
  <VictoryAxis />
  <VictoryBar
    barRatio={0.7}
    labelComponent={<VictoryTooltip />}
    labels={datum => 'Usage: ' + datum.y}
    style={{ data: { fill: 'red' } }}
    data={[
      { x: months[0], y: 2 },
      { x: months[1], y: 3 },
      { x: months[2], y: 5 },
      { x: months[3], y: 4 },
      { x: months[4], y: 8 },
      { x: months[5], y: 2 },
      { x: months[6], y: 3 },
      { x: months[7], y: 5 },
      { x: months[8], y: 9 },
      { x: months[9], y: 3 },
      { x: months[10], y: 5 },
      { x: months[11], y: 6 },
    ]}
  />
</VictoryChart>

它会提供所需的结果。