Вставьте фиктивные записи для отсутствующих выходных данных в MySQL / Talend - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть задание ETL, которое обрабатывает необработанный файл в БД MySQL.Проведя некоторый анализ, я понял, что мне нужны данные за все дни месяца, и в моем фиде данных есть значения только для рабочих дней.

Мне нужен способ вставки записей за пропущенные дни с данными изпоследний день.например, для субботы и воскресенья, я хотел бы использовать данные с пятницы.Для пропущенной среды я могу использовать данные со вторника.

Визуально это то, на что я смотрю:

**Day**  **Old Table**  **New Table**
Monday      Record 1    Record 1
Tuesday     Record 2    Record 2
Wednesday   Record 3    Record 3
Thursday    Record 4    Record 4
Friday      Record 5    Record 5
Saturday                Record 5
Sunday                  Record 5
Monday      Record 8    Record 8
Tuesday     Record 9    Record 9
Wednesday   Record 10   Record 10
Thursday    Record 11   Record 11
Friday      Record 12   Record 12
Saturday                Record 12
Sunday                  Record 12
Monday      Record 15   Record 15

Может кто-нибудь порекомендовать мне способ?

Мои смутные мысли сходятся вокруг работы с тремя наборами данных:

1) Набор временных данных со всеми значениями даты в нем (скажем, с начала года до конца года)

2) Исходные данные, которые содержат отсутствующие записи (dtst 1)

3) Новые данные, которые имеют все значения (dtst 2)

Я не знаю, как, но если бы я могПереберите все значения в временном наборе данных (dtst 1), извлеките значение из даты из исходных данных и вставьте его в новый набор данных (dtst 2).Если я не определяю значение в dtst 1, я использую последнюю строку, извлеченную из dtst 1, и помещаю ее в dtst 2. В конце выполнения цикла у меня будут данные для всех дат в моем dtst.2, который я позже смогу использовать для анализа.

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

tMemorizeRows - это то, что вы ищете!

tMemorizeRows временно запоминает массив входящих данных в последовательности строка за строкой и создает этот массив путем индексации каждого изколичество строк, запомненных от 0. Максимальное количество строк, которые необходимо запомнить в любой момент времени, определяется в представлении «Основные настройки».

В настройках компонента вы указываете количество строк, которые нужно запомнить, истолбцы, которые вы хотите запомнить.В tMap вы можете проверить текущее значение строки, и, если оно пустое, получить значение, которое было запомнено с помощью tMemorizeRows.
. Вы можете обратиться к столбцу как:
<columnName>_tMemorizeRows_1[0] для текущегозначение <columnName>_tMemorizeRows_1[1] для предыдущей строки .. и т. д.

0 голосов
/ 26 сентября 2018

Вы можете поместить tJavaRow перед компонентом Mysql, затем проверить наличие пустых данных в текущей строке, а также сохранить ранее переданное значение в переменной globalMap, чтобы заполнить пустое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...