Может ли функция md5 передавать динамический список столбцов через параметр - PullRequest
0 голосов
/ 30 октября 2019

В Azure Data Factory v2 я вызываю поток данных сопоставления из конвейера. Соединения источника и приемника в потоке данных параметризованы, поэтому я могу повторно использовать конвейер / поток данных для нескольких комбинаций источник / цель. Однако я хочу создать производный столбец в потоке данных, который представляет собой хэш md5 соответствующих столбцов для этой конкретной комбинации источника и цели. Поэтому я хочу передать список столбцов в функцию md5 (), которая может быть оценена при выполнении потока данных, и для каждой строки данных может быть сгенерировано соответствующее значение хеш-функции. В настоящее время я не могу найти способ заставить его работать.

У меня есть параметр потока данных (pColumnList) типа string (нет опции типа для массива). Конвейер передает список имен столбцов, разделенных запятыми, например, Col1, Col2, Col3, а производный столбец (ROW_HASH) имеет код / ​​выражение md5($pColumnList). В настоящий момент проблема заключается в том, что функция хэширует строковое значение 'Col1, Col2, Col3 'и, следовательно, каждая строка имеет одно и то же значение хеша, а не хеш, рассчитываемый для каждой строки. Я также попытался разбить строку на массив, чтобы увидеть, будет ли функция интерпретировать отдельные элементы как столбцы, например md5(split($pColumnList,',')), но это приводит к ошибке, так как я не думаю, что функция md5 принимает массив.

Проблема в том, что, поскольку источник является динамическим, в потоке данных нет определенной схемы, на которую выражение может явно ссылаться во время разработки. Мне просто интересно, просто ли это просто невозможно сделать в потоках данных, отображающих adf, и на самом деле нам потребуется отдельное создание потока данных для каждого конкретного источника, чтобы нацелиться на процесс с явными исходными и целевыми соединениями, создаваемыми с соответствующей видимой схемой. ,(или, альтернативно, хеш, созданный как вычисляемый столбец в целевой таблице).

1 Ответ

0 голосов
/ 01 ноября 2019

Мы не разрешаем значения массива в этих функциях сегодня.

Вы хотите создать хеш / отпечаток для всей строки?

Если это ваша цель, вам понадобитсяиспользовать один из этих методов:

  1. Использовать toString (byPosition (1)) + toString (byPositiong (2)) + ... в производном столбце и объединять каждый столбец в новыйстолбца, затем хэшируйте этот новый столбец.

  2. Если источником является файл, используйте исходный набор данных без разделителя, который просто считывает всю строку как одну строку. Таким образом, у вас будет вся строка в виде одной строки (т. Е. Col_1), которую вы можете хэшировать.

...