Apache pig 用PIG生成维度表

Apache pig 用PIG生成维度表,apache-pig,Apache Pig,我已经生成了一个简单的维度表,其层次结构如下所示 产品光盘->产品类别光盘->产品类别光盘 当然,我们还需要每个代码的标签 为了生成这个维度表,我编写了以下PIG代码 // get all unique combinations of product_cd, cat_cd and class_cd X1 = FOREACH PRODUCT GENERATE PRODUCT_CD, PRODUCT_CAT_CD, PRODUCT_CLASS_CD; X2 = DISTINCT X1; // no

我已经生成了一个简单的维度表,其层次结构如下所示

产品光盘->产品类别光盘->产品类别光盘

当然,我们还需要每个代码的标签

为了生成这个维度表,我编写了以下PIG代码

// get all unique combinations of product_cd, cat_cd and class_cd
X1 = FOREACH PRODUCT GENERATE PRODUCT_CD, PRODUCT_CAT_CD, PRODUCT_CLASS_CD;
X2 = DISTINCT X1;

// now lookup the labels for codes
X3 = JOIN X2 BY PRODUCT_CD, CODE_VALUE BY CODE_VALUE;
X4 = FOREACH X3 GENERATE PRODUCT_CD, DISPLAY AS PRODUCT_CD_NAME,PRODUCT_CAT_CD, PRODUCT_CLASS_CD;

// now lookup the labels for cat_cd
X5 = JOIN X4 BY PRODUCT_CAT_CD, CODE_VALUE BY CODE_VALUE;
X6 = FOREACH X5 GENERATE PRODUCT_CD, PRODUCT_CD_NAME, PRODUCT_CAT_CD, DISPLAY AS PRODUCT_CAT_NAME, PRODUCT_CLASS_CD;

// now lookup the label for class_cd
X7 = JOIN X6 BY PRODUCT_CLASS_CD, CODE_VALUE BY CODE_VALUE;
DimProduct = FOREACH X7 GENERATE PRODUCT_CD, PRODUCT_CD_NAME, PRODUCT_CAT_CD, PRODUCT_CAT_NAME, PRODUCT_CLASS_CD, DISPLAY AS PRODUCT_CLASS_NAME;

// write out the dimension
DUMP DimProduct;
它起作用了,我得到了一个有6列的维度表。但似乎我写的代码太多了

我能用更少的代码行实现我想要的吗?否则,随着我维度中属性数量的增加,这段代码将变得非常混乱


我还需要引入一个名为DimProduct_id的列,它类似于维度表中的行号。我该怎么做?

为什么每次加入后都要进行foreach?我认为没有必要这样做,如果您想查看结果的模式是什么,请添加descripe X4