我需要通过使用PIG实现类型1和类型维度表来执行小型POC。
类型1 - 覆盖旧值。在此方法中,不会在数据库中保留维度更改的历史记录。旧的维度值只是被新的维度覆盖。这种类型易于维护,并且通常用于由处理校正引起的数据变化(例如,删除特殊字符,纠正拼写错误)。
改变之前:
Customer_ID Customer_Name Customer_Type
1 Cust_1 Corporate
改变之后:
Customer_ID Customer_Name Customer_Type
1 Cust_1 Retail
类型2 - 创建新的附加记录。在此方法中,维度更改的所有历史记录都保存在数据库中。通过向维度表添加具有新代理键的新行来捕获属性更改。先行和新行都包含自然键(或其他持久标识符)作为属性。此方法中还使用了“生效日期”和“当前指标”列。可能只有一条记录的当前指标设置为“Y”。对于“生效日期”列,即start_date和end_date,当前记录的end_date通常设置为值9999-12-31。在类型2中引入维度模型的更改可能是非常昂贵的数据库操作,因此不建议在将来可以添加新属性的维度中使用它。
改变之前:
Customer_ID Customer_Name Customer_Type Start_Date End_Date Current_Flag
1 Cust_1 Corporate 22-07-2010 31-12-9999 Y
改变之后:
Customer_ID Customer_Name Customer_Type Start_Date End_Date Current_Flag
1 Cust_1 Corporate 22-07-2010 17-05-2012 N
2 Cust_1 Retail 18-05-2012 31-12-9999 Y
我们也可以基于这两个来实现一个小POC。
请帮助!!
答案 0 :(得分:0)
Pig不支持过度压缩现有数据,因此您无法仅使用Pig实现它。但是如果你在Hive中创建你的表,并使用Hcatalog将数据插入到表中,以便在Pig中处理数据,它应该可以工作。