我正在尝试清理这名员工志愿者数据。没有办法跟踪员工是否已经注册志愿者,这样他就可以注册成为新的志愿者并获得新的VOLUNTEER_ID。我有一个数据输入到我可以将每个VOLUNTEER_ID绑定到其EMP_ID的位置。需要清理志愿者数据,以便我们弄清楚员工如何从志愿者级别转移到另一个人员以及何时。
业务逻辑是,当存在重叠日期时,我们会在start_date和end_date之间的时间范围内为员工提供最高级别。
我发布了一个输入数据样本以及输出应该是什么。
PIG脚本可以这样做吗?有人可以帮助我吗
INPUT:
EMP_ID VOLUNTEER_ID V_LEVEL STATUS START_DATE END_DATE
10001 100 1 A 1/1/2006 12/31/2007
10001 200 1 A 5/1/2006
10001 100 1 A 1/1/2008
10001 300 3 P 3/1/2008 3/1/2008
10001 300 3 A 3/2/2008 12/1/2008
10001 1001 2 A 5/1/2008 6/30/2008
10001 1001 3 A 7/1/2008
10001 300 2 A 12/2/2008
需要输出:(在输出中不需要VOLUNTEER_ID,但在下面添加以显示为输出选择了哪个ID,哪个没有)
EMP_ID VOLUNTEER_ID V_LEVEL STATUS START_DATE END_DATE
10001 100 1 A 1/1/2006 12/31/2007
10001 300 3 P 3/1/2008 3/1/2008
10001 300 3 A 3/2/2008 12/1/2008
10001 1001 2 A 5/1/2008 6/30/2008
10001 1001 3 A 7/1/2008
答案 0 :(得分:0)
您似乎希望数据中的行包含每个 PX.Objects.SO.SOOrderEntry graph = PXGraph.CreateInstance<PX.Objects.SO.SOOrderEntry>();
graph.Clear(PXClearOption.ClearAll);
PX.Objects.SO.SOOrder order = new PX.Objects.SO.SOOrder();
graph.Document.Current = order;
order.OrderType = "SO";
order = graph.Document.Insert(order);
order.OrderDate = DateTime.Now;
order.RequestDate = DateTime.Now;
order.Status = "N";
order.CustomerID = cust.BAccountID;
order.ProjectID = project.ID;
graph.Document.Update(order);
graph.Actions.PressSave();
,V_LEVEL
,STATUS
和EMP_ID
首先我们添加一个unix时间列,然后找到该列的min(这是最新版本的pig,因此您可能需要更新您的版本)。
VOLUNTEER_ID
然后将开始日期和结束日期重新加入到您的数据集中,因为它看起来似乎没有办法将unix时间转换回日期。