Преобразование данных с помощью действия Script в Фабрике данных Azure или Synapse Analytics

Область применения:Фабрика данных Azure Azure Synapse Analytics

Совет

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

Действия преобразования данных в конвейере Фабрики данных или Synapse позволяют преобразовать необработанные данные в прогнозы и аналитические сведения. Действие Script — это одно из действий преобразования данных, которые поддерживает конвейер. Данная статья основана на материалах статьи о преобразовании данных, в которой приведен общий обзор преобразования данных и список поддерживаемых действий преобразования.

С помощью действия Script можно выполнять стандартные операции на языках DML и DDL. Инструкции DML, такие как INSERT, UPDATE, DELETE и SELECT, позволяют пользователям вставлять, изменять, удалять и извлекать данные в базе данных. Инструкции DDL, такие как CREATE, ALTER и DROP, позволяют диспетчеру баз данных создавать, изменять и удалять объекты базы данных, в том числе таблицы, индексы и пользователей.

С помощью действия Script можно вызвать скрипт SQL в одном из приведенных ниже хранилищ данных вашего предприятия или на виртуальной машине Azure:

  • База данных SQL Azure
  • Azure Synapse Analytics
  • База данных SQL Server. Если вы используете SQL Server, установите локальную среду выполнения интеграции на том же компьютере, на котором размещена база данных, или на отдельном компьютере, имеющем доступ к базе данных. Локальная среда выполнения интеграции — это компонент, который обеспечивает безопасное и управляемое подключение локальных источников данных или данных виртуальной машины Azure к облачным службам. Дополнительные сведения см. в статье Создание и настройка локальной среды выполнения интеграции.
  • Oracle
  • Снежинка

Скрипт может содержать одну инструкцию SQL или несколько инструкций SQL, выполняемых последовательно. Задача «Скрипт» позволяет выполнять следующее:

  • усечение таблицы в процессе подготовки для вставки данных;
  • создание, изменение и удаление объектов базы данных, таких как таблицы и представления;
  • повторное создание таблиц фактов и таблиц измерений перед загрузкой данных;
  • выполнение хранимых процедур; Если инструкция SQL вызывает хранимую процедуру, возвращающую результаты из временной таблицы, используйте параметр WITH RESULT SETS для определения метаданных набора результатов.
  • Сохранение набора строк, возвращенного запросом, в качестве выходных данных действия для дальнейшего использования.

Сведения о синтаксисе

Ниже приведен формат JSON для определения действия Script:

{ 
   "name": "<activity name>", 
   "type": "Script", 
   "linkedServiceName": { 
      "referenceName": "<name>", 
      "type": "LinkedServiceReference" 
    }, 
   "typeProperties": { 
      "scripts" : [ 
         { 
            "text": "<Script Block>", 
            "type": "<Query> or <NonQuery>", 
            "parameters":[ 
               { 
                  "name": "<name>", 
                  "value": "<value>", 
                  "type": "<type>", 
                  "direction": "<Input> or <Output> or <InputOutput>", 
                  "size": 256 
               }, 
               ... 
            ] 
         }, 
         ... 
      ],     
         ... 
         ] 
      }, 
      "scriptBlockExecutionTimeout": "<time>",  
      "logSettings": { 
         "logDestination": "<ActivityOutput> or <ExternalStore>", 
         "logLocationSettings":{ 
            "linkedServiceName":{ 
               "referenceName": "<name>", 
               "type": "<LinkedServiceReference>" 
            }, 
            "path": "<folder path>" 
         } 
      } 
    } 
} 

В следующей таблице описаны эти свойства JSON:

Имя свойства Description Обязательное поле
name Имя действия. Да
type Тип действия. Значение — "Script". Да
typeProperties Укажите свойства для настройки действия Script. Да
linkedServiceName Целевая база данных, в которой выполняется скрипт. Это должна быть ссылка на связанную службу. Да
Скрипты Массив объектов, представляющих скрипт. No
scripts.text Обычный текст блока запросов. No
scripts.type Тип блока запросов. Может иметь значение Query или NonQuery. Значение по умолчанию: Query. No
scripts.parameter Массив параметров скрипта. No
scripts.parameter.name Имя параметра. No
scripts.parameter.value Значение параметра . No
scripts.parameter.type Тип данных параметра. Тип является логическим и соответствует сопоставлению типов для каждого соединителя. No
scripts.parameter.direction Направление параметра. Возможные значения: Input, Output, InputOutput. Значение игнорируется, если задано направление Output. Тип ReturnValue не поддерживается. Установите возвращаемое значение SP для параметра вывода, чтобы получать его. No
scripts.parameter.size Максимальный размер параметра. Применяется только к параметру направления Output и InputOutput типа string или byte[]. No
scriptBlockExecutionTimeout Время ожидания завершения операции выполнения блока скрипта до истечения времени ожидания. No
logSettings Параметры для хранения журналов вывода. Если не указан, то журнал скриптов отключен. No
logSettings.logDestination Назначение выходных данных журнала. Возможные значения: ActivityOutput или ExternalStore. Значение по умолчанию: ActivityOutput. No
logSettings.logLocationSettings Параметры целевого расположения, если logDestination имеет значение ExternalStore. No
logSettiongs.logLocationSettings.linkedServiceName Связанная служба целевого расположения. Поддерживается только хранилище BLOB-объектов. No
logSettings.logLocationSettings.path Путь к папке, в которой будут храниться журналы. No

Выходные данные действия

Образец вывода:

{ 
    "resultSetCount": 2, 
    "resultSets": [ 
        { 
            "rowCount": 10, 
            "rows":[ 
                { 
                    "<columnName1>": "<value1>", 
                    "<columnName2>": "<value2>", 
                    ... 
                } 
            ] 
        }, 
        ... 
    ], 
    "recordsAffected": 123, 
    "outputParameters":{ 
        "<parameterName1>": "<value1>", 
        "<parameterName2>": "<value2>" 
    }, 
    "outputLogs": "<logs>", 
    "outputLogsLocation": "<folder path>", 
    "outputTruncated": true, 
    ... 
} 
Имя свойства Description Условие
resultSetCount Число результирующих наборов, возвращаемых скриптом. Всегда
resultSets Массив, содержащий все результирующие наборы. Всегда
resultSets.rowCount Общее число строк в результирующем наборе. Всегда
resultSets.rows Массив строк в результирующем наборе. Всегда
recordsAffected Число строк, затронутых скриптом. Если значение scriptType не NonQuery.
outputParameters Выходные параметры скрипта. Если параметр имеет тип Output или InputOutput.
outputLogs Журналы, записываемые скриптом (например, инструкцией PRINT). Если соединитель поддерживает инструкцию LOG, enableScriptLogs имеет значение true, а logLocationSettings не указан.
outputLogsPath Полный путь к файлу журнала. Если enableScriptLogs имеет значение true и указан logLocationSettings.
outputTruncated Индикатор того, что выходные данные превышают предельные значения и они будут усечены. Если выходные данные превышают предельные значения.

Примечание.

  • Выходные данные собираются при каждом выполнении блока скрипта. Окончательные выходные данные — это объединенный результат всех выходных данных блока скрипта. Параметр вывода таким же именем в другом блоке скрипта будет перезаписан.
  • Так как выходные данные имеют ограничение размера и строк, они усекаются в следующем порядке: журналы > параметры > строки. Обратите внимание на то, что это относится к одному блоку скрипта. Это означает, что выходные строки следующего блока скрипта не приведут к исключению предыдущих журналов.
  • Любая ошибка, вызванная журналом, не приведет к сбою действия.
  • Использование выходных данных resultSets действия в нисходящем действии описывается в документации по действию Lookup.
  • Используйте outputLogs при использовании инструкций PRINT для ведения журнала. Если запрос возвращает результирующий набор, он будет доступен в выходных данных действия и будет ограничен 5000 строк/ 4 МБ ограничение размера.

Настройка действия Script с помощью пользовательского интерфейса

Встроенный скрипт

Screenshot showing the UI to configure an inline script.

Встроенные скрипты хорошо интегрируются с операциями CI/CD конвейера, так как скрипт сохраняется как часть метаданных конвейера.

Ведение журнала

Screenshot showing the UI for the logging settings for a script.

Параметры ведения журнала:

  • Disable (Отключить) — выходные данные выполнения не регистрируются.
  • Выходные данные действия — выходные данные выполнения скрипта добавляются к выходным данным действия. Их можно использовать в нисходящих действиях. Размер выходных данных ограничен 4 МБ.
  • Внешнее хранилище — сохраняет выходные данные в хранилище. Используйте этот параметр, если размер выходных данных превышает 2 МБ или вы хотите явно сохранить выходные данные в учетной записи хранения.

Примечание.

Выставление счетов — действие Script будет оплачиваться как действия конвейера.

Ознакомьтесь со следующими ссылками, в которых описаны способы преобразования данных другими способами: