案例:
TestCompany Corporation每个月都会在csv文件中向我们发送支出数据。数据是每个serviceId
的日期 - 支出值对。在月度文件中也可能对前几个月发送的数据进行更正。更新文件中的值更具真实价值。我们必须设计一个摄取过程,其中包含详细的数据模型和数据流图,以及如何存储每个serviceId
的日期和支出,同时牢记记录的可追溯性。下一个文件可能包含更新。
2)输入:具有以下结构的CSV文件:
Sr No. Header
Column 1 serviceId
Column 2 month
Column 3 d1
Column 4 d2
Column 5 d3
Column 6 d4
Column 7 d5
Column 8 d6
Column 9 d7
Column 10 d8
Column 11 d9
Column 12 d10
Column 13 d11
Column 14 d12
Column 15 d13
Column 16 d14
Column 17 d15
Column 18 d16
Column 19 d17
Column 20 d18
Column 21 d19
Column 22 d20
Column 23 d21
Column 24 d22
Column 25 d23
Column 26 d24
Column 27 d25
Column 28 d26
Column 29 d27
Column 30 d28
Column 31 d29
Column 32 d30
Column 33 d31
注意:
示例输入:
serviceId,month,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31
FEUSA0002V,200107,,,,,,,,,,,,,,,,,26.2866666667,,,,,,,25.5166666667,25.3333333333,25.7,25.8333333333,,,25.8333333333,26.1666666667
月份栏代表月份,例如201707代表2017-07。每天的值由列号表示(201707的d1是2017 - 07 - 01,201707的d2是2017-07-02,依此类推。)
4)问题陈述:
一个。对于每个serviceId,找出缺少值数据的日期,并准备一个“|”分隔的日期列表,以便我们可以恢复从TestCompany Corporation获取数据。
湾存储5.b中给出的转换数据。总数是所有可用值的总和。
5)所需的输出CSV:
一个。
serviceId,missing_dates
FEUSA0002V, 2001-07-18|2001-07-19|2001-07-20|2001-07-21|2001-07-22|2001-07-23
湾
serviceId,StartDate,EndDate,Total
FEUSA0002V, 2017-07-01,2017-10-31,369.1458
INPUT FEED示例(具有相同serviceid的多行)
ServiceId,month,d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,d21,d22,d23,d24,d25,d26,d27,d28,d29,d30,d31
F0CAN062AH,201706,,31.55,,,31.48,31.39,31.42,31.42,31.46,,,31.29,,31.12,31.13,,,,31.33,,31.31,,31.6,,,31.65,31.46,31.64,31.34,,
F0CAN062AH,201707,,,,31.31,,,,,,31.09,,,31.43,,,,31.23,,,31.39,,,,,31.29,31.1,31.0,30.88,,,30.87
FEUSA04ABQ,200304,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,26.98,
F0CAN05N3F,201612,,,,,,,,,,,,,,,,,,,,24.78,24.77,24.8,24.82,,,,,,,,
F0CAN05N3F,201701,,,24.75,,24.96,24.93,,,,24.9,24.96,,24.91,,,24.94,,,24.93,25.12,,,25.0,25.1,,,,,,,25.23
F0CAN05N3F,201702,25.29,25.22,25.27,,,25.29,25.35,,,25.8,,,25.87,,26.02,,,,,,,26.3,,25.93,,,25.77,,,,
答案 0 :(得分:0)
问题a:
执行此操作的一种方法是normalize
csv文件,以便生成的流为4列:ServiceId,month,day和value。如果你没有“Get fields
按钮的帮助,下面图片中的参数会非常烦人。
然后您必须从月份和d#字段计算日期。我会在Javascript
步骤中执行此操作,该步骤允许同时将日期设置为ISO格式。 Javascript是
var date = new Date(month.substr(0,4),month.substr(5,2)-1,substr(day,1));
然后filter
具有非空值的ServiceId和日期。
如果您需要按ServiceId排序日期:Sort
,日期
Group
ServiceId流程,Concatenate strings separated by
“|”,subject
=日期,name
结果“missing_dates”。
答案 1 :(得分:0)