Установите переменную из исходного результата в Azure фабрика данных - PullRequest
0 голосов
/ 07 апреля 2020

Я пытался сделать это. Из источника данных, указывающего на мою первую базу данных, я хотел бы иметь ссылку на дату и время, которую я затем использую в другом источнике в другой базе данных в качестве параметра для ограничения количества регистров.

Я буду что-то вроде этого:

Source_1: реализовать следующий код и сохранить результат в переменной @ dateRef.

SELECT IIF(UpdateDtm > CreatedDtm, UpdateDtm, COALESCE(CreatedDtm,UpdateDtm, cast('1900-01-01' as smalldatetime))) as dateRef
FROM 
(
    SELECT MAX(UpdatedDtm) as UpdateDtm, MAX(CreatedDtm) as  CreatedDtm
    FROM schema.table
) max_value

Source_2: использовать @dateRef в моем операторе select.

select  Client, location
from schema.table
where date >= @dateRef

Я новичок в Data Factory, последние годы я работал с Pentaho, где я мог выполнять такие операции, но меня это немного смущает. Я искал несколько примеров. Тем не менее, кажется, ничего не показывает сценарий, который я хочу реализовать.

С уважением,

1 Ответ

0 голосов
/ 07 апреля 2020

Чтобы удовлетворить ваши потребности, я думаю, вы могли бы рассмотреть возможность использования Azure Функция Activity для выполнения выше sql:

SELECT IIF(UpdateDtm > CreatedDtm, UpdateDtm, COALESCE(CreatedDtm,UpdateDtm, cast('1900-01-01' as smalldatetime))) as dateRef FROM  (
    SELECT MAX(UpdatedDtm) as UpdateDtm, MAX(CreatedDtm) as  CreatedDtm
    FROM schema.table ) max_value

Затем вы выводите результат из функции Azure, чтобы вы могли использовать его в следующем шаге. Нет необходимости устанавливать его в переменной. Вы можете сослаться на значение с помощью @activity('Azure Function1').output

Следующим шагом будет использование вышеприведенного вывода в sql, вы не можете просто записать @activity('Azure Function1').output в sql. Вам нужно использовать метод @concat(). Например:

@concat('select  Client, location
from schema.table
where date >=', activity('Azure Function1').output)
...