Параметризованный поток данных 2-го поколения

Замечание

В этой статье рассматривается архитектура решения из архитектуры решений CI/CD и ALM (управление жизненным циклом приложений) для потока данных 2-го поколения, которая зависит от функции общедоступного режима параметров и применима только к потоку данных 2-го поколения с поддержкой CI/CD.

Параметры в Потоке данных Fabric 2-го поколения позволяют определять многократно используемые входные данные, которые формируют структуру потока данных, и с режимом общедоступных параметров эти входные данные можно задать во время выполнения с помощью конвейеров или API. Он делает один поток данных очень гибким и универсальным, так как вы можете повторно использовать одну логику во многих сценариях, просто передав разные значения, позволяя динамическим, автоматизированным рабочим процессам без необходимости переписать или дублировать преобразования.

В этом руководстве описан пример, в который показано, как:

  • Параметризация источника: использование Lakehouse с примером набора данных WideWorldImpoters в качестве источника
  • Параметризация логики: использование входных мини-приложений, доступных во всем интерфейсе потока данных
  • Параметризация назначения: использование хранилища в качестве назначения
  • Отправка запроса на выполнение с параметрами: передача значений параметров через интерфейс активности потока данных в конвейере Fabric

Схема параметризованной архитектуры решения потока данных в Dataflow 2-го поколения.

Замечание

Основные понятия, представленные в этой статье, являются универсальными для потока данных 2-го поколения и применимы к другим источникам и назначениям за пределами указанных здесь.

Сценарий

Снимок экрана: запрос с именем dimension_city для сценария внутри Dataflow Gen2.

Поток данных, используемый в этом сценарии, прост, но основные принципы, описанные в этом сценарии, применяются ко всем типам потоков данных. Он подключается к таблице с именем dimension_city из примера набора данных Wide World Importers, хранящегося в Lakehouse. Он фильтрует строки, где столбец SalesTerritory равен юго-востоку, и загружает результат в новую таблицу с именем City в хранилище. Все компоненты — Lakehouse, Warehouse и Dataflow — находятся в одной рабочей области. Чтобы сделать поток данных динамическим, параметризуете исходную таблицу, значение фильтра и целевую таблицу. Эти изменения позволяют потоку данных выполняться с определенными значениями вместо жестко закодированных.

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

Снимок экрана диалогового окна параметров в Dataflow Gen2 с разделом «Параметры», показывающим настройку «Разрешить обнаружение и переопределение для выполнения».

Параметризация источника

При использовании любого соединителя Fabric , например Lakehouse, Warehouse или Fabric SQL, они все следуют одной структуре навигации и используют один и тот же формат входных данных. В этом сценарии ни один из соединителей не требует ручного ввода для установления подключения. Однако каждый из них показывает, к какой рабочей области и элементу он подключается с помощью шагов навигации в запросе. Например, первый шаг навигации включает идентификатор рабочей области, к которому подключается запрос.

Снимок экрана: шаг навигации 1 со значением workspaceId в строке формул для запроса dimension_city.

Цель состоит в том, чтобы заменить жестко закодированные значения в строке формул параметрами. В частности, необходимо создать один параметр для WorkspaceId и другой для LakehouseId. Чтобы создать параметры, перейдите на вкладку "Главная " на ленте, выберите "Управление параметрами", а затем выберите "Создать параметр " в раскрывающемся меню.

Снимок экрана: запись во вкладке

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

Снимок экрана: параметр LakehouseId, созданный в диалоговом окне

После создания обоих параметров можно обновить скрипт запроса, чтобы использовать их вместо жестко закодированных значений. Это включает в себя ручное замена исходных значений в строке формул на ссылки на параметры идентификатора рабочей области и параметров Lakehouse ID. Исходный скрипт запроса выглядит следующим образом:

let
  Source = Lakehouse.Contents([]),
  #"Navigation 1" = Source{[workspaceId = "8b325b2b-ad69-4103-93ae-d6880d9f87c6"]}[Data],
  #"Navigation 2" = #"Navigation 1"{[lakehouseId = "2455f240-7345-4c8b-8524-c1abbf107d07"]}[Data],
  #"Navigation 3" = #"Navigation 2"{[Id = "dimension_city", ItemKind = "Table"]}[Data],
  #"Filtered rows" = Table.SelectRows(#"Navigation 3", each ([SalesTerritory] = "Southeast")),
  #"Removed columns" = Table.RemoveColumns(#"Filtered rows", {"ValidFrom", "ValidTo", "LineageKey"})
in
  #"Removed columns"

После обновления ссылок на шаги навигации новый обновленный скрипт может выглядеть следующим образом:

let
  Source = Lakehouse.Contents([]),
  #"Navigation 1" = Source{[workspaceId = WorkspaceId]}[Data],
  #"Navigation 2" = #"Navigation 1"{[lakehouseId = LakehouseId]}[Data],
  #"Navigation 3" = #"Navigation 2"{[Id = "dimension_city", ItemKind = "Table"]}[Data],
  #"Filtered rows" = Table.SelectRows(#"Navigation 3", each ([SalesTerritory] = "Southeast")),
  #"Removed columns" = Table.RemoveColumns(#"Filtered rows", {"ValidFrom", "ValidTo", "LineageKey"})
in
  #"Removed columns"

И вы заметили, что он по-прежнему правильно оценивает предварительный просмотр данных в редакторе потока данных.

Параметризация логики

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

Снимок экрана: параметр

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

Снимок экрана виджета ввода в диалоговом окне

После выбора параметра "Выбрать параметр", раскрывающийся список будет отображать все доступные параметры, соответствующие требуемому типу данных. В этом списке можно выбрать только что созданный параметр "Территория".

Снимок экрана параметра

После нажатия кнопки "ОК" обратите внимание, что представление схемы уже создало связь между вновь созданным параметром и используемым запросом. Не только это, но и предварительная версия данных теперь показывает сведения о территории Mideast .

Снимок экрана: представление диаграммы, параметры запроса и предварительный просмотр данных для запроса dimension_city с данными для Mideast SalesTerritory.

Параметризация назначения

Замечание

Рекомендуется ознакомиться с понятием назначения данных в Dataflow 2-го поколения и как его скрипт mashup создается из статьи о назначениях данных и управляемых параметрах.

Последним компонентом для параметризации в этом сценарии является назначение. Для этого вы используете функцию расширенного редактирования для запросов назначения данных , которая позволяет изменять скрипт целевого запроса непосредственно в редакторе потока данных с помощью кода Power Query M.

Снимок экрана: всплывающий элемент, содержащий параметры назначения данных для запроса dimension_city.

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

Включение расширенного редактирования для запросов назначения данных

Чтобы изменить целевой запрос непосредственно в редакторе потока данных, сначала необходимо включить функцию расширенного редактирования:

  1. Выберите "Параметры " на вкладке "Главная " на ленте.

  2. В диалоговом окне "Параметры" прокрутите вниз до раздела "Назначения данных ".

  3. Установите флажок для включения расширенного редактирования для запросов назначения данных.

  4. Появится диалоговое окно предупреждения, объясняющее, что изменение целевых запросов может привести к непредвиденному поведению или прерыванию потока данных. Внимательно прочтите предупреждение и нажмите кнопку "ОК ", чтобы подтвердить.

  5. Нажмите кнопку "ОК ", чтобы закрыть диалоговое окно "Параметры".

Изменение целевого запроса

После включения расширенного редактирования вы можете получить доступ к запросу назначения и изменить его для места назначения данных.

  1. На панели "Запросы" найдите раздел назначения данных, показывающий настроенные назначения.

  2. Щелкните правой кнопкой мыши целевой запрос с именем dimension_city.

  3. В контекстном меню выберите расширенный редактор.

Целевой запрос выглядит следующим образом:

let
  Pattern = Fabric.Warehouse([HierarchicalNavigation = null, CreateNavigationProperties = false]),
  Navigation_1 = Pattern{[workspaceId = "8b325b2b-ad69-4103-93ae-d6880d9f87c6"]}[Data],
  Navigation_2 = Navigation_1{[warehouseId = "527ba9c1-4077-433f-a491-9ef370e9230a"]}[Data],
  TableNavigation = Navigation_2{[Item = "City", Schema = "dbo"]}?[Data]?
in
  TableNavigation

Так же, как и в скрипте источника для Lakehouse, этот сценарий для назначения имеет аналогичный шаблон, в котором жестко задаются идентификаторы workspaceId и warehouseId. Замените эти фиксированные значения идентификаторами параметров, и скрипт выглядит следующим образом:

let
  Pattern = Fabric.Warehouse([HierarchicalNavigation = null, CreateNavigationProperties = false]),
  Navigation_1 = Pattern{[workspaceId = WorkspaceId]}[Data],
  Navigation_2 = Navigation_1{[warehouseId = WarehouseId]}[Data],
  TableNavigation = Navigation_2{[Item = "City", Schema = "dbo"]}?[Data]?
in
  TableNavigation

Нажмите кнопку "ОК ", чтобы сохранить изменения в расширенном редакторе.

Это важно

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

Вы можете убедиться в правильности всех изменений, проверив назначение данных и все добавленные ранее ссылки на параметры. Это завершает всё параметрирование вашего потока данных, и теперь можно приступить к запуску вашего потока данных, передавая значения параметров для его выполнения.

Выполнение запроса со значениями параметров

Вы можете использовать Fabric REST API для отправки запроса выполнения с пользовательскими полезными данными, содержащими значения параметров для конкретной операции выполнения. Также вы можете использовать REST API, чтобы выявить параметры потока данных и понять ожидания потока данных, чтобы он смог запустить выполнение. В этом руководстве вы будете использовать опыт, найденный в действии Dataflow для конвейеров Fabric. Начните с создания конвейера и добавления нового действия потока данных на холст. В параметрах действия найдите рабочую область, в которой находится поток данных, а затем выберите поток данных из раскрывающегося списка.

Снимок экрана: действие потока данных с параметрами внутри конвейера.

Раздел параметров потока данных можно развернуть, чтобы отобразить все доступные параметры в потоке данных и их значения по умолчанию. Здесь можно заменить любые значения, а переданные значения будут использоваться для определения источников, логики и назначения для оценки выполнения потока данных. Вы также можете попробовать новые сценарии, создав новое хранилище и изменив WarehouseId на новый для оценки или используя этот шаблон в потоке развертывания, где WorkspaceId и другие параметры должны быть переданы, чтобы указать на правильные элементы в соответствующей среде.