Превратите 1 строку в несколько строк в потоках данных Azure

У меня есть набор данных по строкам:

Account No P01_Ind P02_Ind P03_Ind
1 Y Y N
2 Y N Y
3 N Y N

Есть ли способ добавить преобразование в потоки данных Azure, чтобы каждая строка превращалась в одну или несколько строк в зависимости от этих столбцов индикатора? В этом примере мой набор данных будет выглядеть следующим образом:

Account No Indicator
1 P01
1 P02
2 P01
2 P03
3 P02

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


person SmallFry    schedule 23.03.2021    source источник


Ответы (2)


Вы можете использовать преобразование ConditionalSplit, а затем добавить Indicator столбец к каждому условию с помощью преобразования DerivedColumn. Наконец, используйте преобразование Union и Select в соответствии с вашими потребностями (при необходимости вы можете отсортировать выходные данные преобразования Select).

Шаги:

  1. создайте набор данных и его данные, такие как предоставленные вами.

введите описание изображения здесь

  1. используйте преобразование ConditionalSplit для разделения данных в разные потоки.

введите описание изображения здесь

  1. добавить Indicator столбец в каждый поток.

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

  1. союз три потока

введите описание изображения здесь

  1. используйте преобразование «Выбрать», чтобы удалить столбцы P01_Ind, P02_Ind, P03_Ind. введите описание изображения здесь

  2. отсортировать вывод Select преобразования. введите описание изображения здесь

Предварительный просмотр данных «Сортировка»:  введите описание изображения здесь

person Steve Zhao    schedule 24.03.2021
comment
Блестяще! Спасибо за такой исчерпывающий и хорошо иллюстрированный ответ. Очень признателен. - person SmallFry; 25.03.2021

Это так же просто, как выполнить unpivot, который предоставит вам строки с 'Y' / 'N' в качестве другого столбца, а затем отфильтрует остальные для значений 'N'.

Ты получишь

 1 P01_Ind Y
 2 P02_Ind Y
 3 P03_Ind N
 .....

Его можно масштабировать, когда в следующий раз у вас будет 10 столбцов вместо 3.

person Kiran-MSFT    schedule 26.03.2021
comment
Привет. Можете ли вы предоставить более подробную информацию по этому поводу, пожалуйста? Спасибо - person SmallFry; 28.03.2021
comment
Введите это в редакторе сценария DSL в потоке данных. Это говорит само за себя. Замените фильмы на имя входного потока `movies unpivot (output (Product_Name as string, Indicator as boolean), ungroupBy (Account_No), lateral: true, ignoreNullPivots: true) ~› unPivoted unPivoted filter (Indicator) ~ ›filterProducts` - person Kiran-MSFT; 29.03.2021