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

ПРИМЕНИМО К: Фабрика данных Azure Azure Synapse Analytics

Совет

Data Factory в Microsoft Fabric — это следующее поколение Фабрика данных Azure с более простой архитектурой, встроенным ИИ и новыми функциями. Если вы не знакомы с интеграцией данных, начните с Fabric Data Factory. Существующие рабочие нагрузки ADF могут обновляться до Fabric для доступа к новым возможностям в области обработки и анализа данных, аналитики в режиме реального времени и отчетов.

Совет

Эквивалентную активность в Data Factory в Microsoft Fabric см. раздел Script activity.

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

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

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

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

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

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

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

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

{ 
   "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:

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

Выходные данные операции

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

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

Примечание.

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

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

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

Снимок экрана: пользовательский интерфейс для настройки встроенного скрипта.

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

Совет

При определении параметров в Script-активности необходимо явно ссылаться на каждый параметр в тексте запроса, чтобы передать его во время выполнения.

Рассмотрим пример.

{
  "type": "Script",
  "typeProperties": {
    "scripts": [
      {
        "type": "Query",
        "text": "EXEC dbo.my_procedure @param1 = @param1",
        "parameters": [
          {
            "name": "param1",
            "type": "String",
            "value": {
              "value": "@pipeline().parameters.myValue",
              "type": "Expression"
            },
            "direction": "Input"
          }
        ]
      }
    ]
  }
}

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

Снимок экрана: пользовательский интерфейс для параметров ведения журнала для скрипта.

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

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

Примечание.

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

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