Запускайте конвейер фабрики данных Azure во вторую пятницу с конца месяца, а также во вторник, среду и четверг той же недели

Мне нужен конвейер для запуска на неделе Monthend (вторник, среда, четверг и пятница) месяца.

Monthend определяется как "Last but one" Friday или Second Friday from the end of the month.

Например, для июня 2021 года 18-е число - это Monthend (оранжевый цвет, как показано на изображении) Изображение календаря

Если это только в Monthend, то есть во вторую пятницу с конца календарного месяца, это легко. Просто используйте Происшествие как -2 и день как Пятницу в триггере по расписанию и добавьте в конвейер для запуска,

"schedule": {
                    "monthlyOccurrences": [
                        {
                            "day": "Friday",
                            "occurrence": -2
                        }
                    ]
                }

но мне также нужно бегать по вторникам, средам и четвергам той же недели, что мне сложно, так как эти дни недели могут быть вторыми или третьими с конца календарного месяца. Например: в июне 2021 года, как показано на изображении, мне также нужно бежать 15-го числа (третий вторник с конца календарного месяца), 16-го (третья среда с конца календарного месяца), 17-го (второй четверг с конца календарного месяца). календарного месяца).

Не могли бы вы сообщить мне, можно ли это реализовать с помощью триггеров фабрики данных Azure? Если нет, то каковы другие способы реализации? Благодарю вас!


person nareshDE    schedule 25.04.2021    source источник


Ответы (1)


Сам по себе запланированный триггер не поддерживает эту логику (по состоянию на 2021-05-04). Самым простым решением было бы использовать какое-нибудь другое приложение для планирования.

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

Детали реализации и пример кода

Логика:

  1. Найдите последний день месяца (первое число следующего месяца минус 1 день).
  2. Вычтите неделю, и вы перейдете на предпоследнюю неделю.
  3. Переберите [0, -1, -2, -3, -4, -5, -6] как количество дней, которое нужно добавить к дате. Это производит даты каждого дня недели.
  4. Используйте функцию dayOfWeek, чтобы изменить дату, на которую этот день недели
  5. Отфильтруйте дату пятницы
  6. Спросите, находится ли сегодня между датой пятницы и датой пятницы - 3 дня
person MartinJaffer-MSFT    schedule 04.05.2021