Дело:
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
Примечание:
- a.Дата, соответствующая первому ненулевому значению, должна рассматриваться как начальная дата.
- б.Дата, соответствующая последнему ненулевому значению, должна рассматриваться как дата закрытия.
- с.Значение NULL в CSV между датой начала и закрытия должно рассматриваться как 0,00 только для целей расчета.
Пример ввода:
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.Значение каждого дня представлено номером столбца (d1 из 201707 - 2017-07-01, d2 из 201707 - 2017-07-02 и т. Д.).
4) Постановка задачи:
a.Для каждого идентификатора службы найдите даты, для которых отсутствуют данные о значении, и подготовьте '|'отдельный список дат, чтобы мы могли вернуться к получению данных из TestCompany Corporation.
b.Сохраните преобразованные данные, как указано в 5.b.Сумма - это сумма всех доступных значений.
5) Требуемый выход CSV:
a.
serviceId,missing_dates
FEUSA0002V, 2001-07-18|2001-07-19|2001-07-20|2001-07-21|2001-07-22|2001-07-23
b.
serviceId,StartDate,EndDate,Total
FEUSA0002V, 2017-07-01,2017-10-31,369.1458
Образец INPUT FEED (несколько строк с одинаковым идентификатором обслуживания)
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,,,,