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

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

Совет

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

В этой статье описано, как копировать данные в Azure Synapse Analytics и обратно с помощью действия копирования в Фабрике данных Azure или конвейеров Synapse, а также как преобразовывать данные в Azure Data Lake Storage 2-го поколения с помощью Потока данных. Дополнительные сведения о Фабрике данных Azure см. во вводной статье.

Поддерживаемые возможности

Этот соединитель Azure Synapse Analytics поддерживается для следующих возможностей.

Поддерживаемые возможности IR Управляемая частная конечная точка
Действие копирования (источник/приемник) (1) (2)
Поток данных для сопоставления (источник/приемник) (1)
Действие поиска (1) (2)
Действие получения метаданных в Фабрике данных Azure (1) (2)
Действие скрипта (1) (2)
Действие хранимой процедуры (1) (2)

① Среда выполнения интеграции Azure ② Локальная среда выполнения интеграции

Для действия копирования этот соединитель Azure Synapse Analytics поддерживает следующие функции:

  • Скопируйте данные с помощью проверки подлинности SQL и проверки подлинности маркера приложения Microsoft Entra с помощью субъекта-службы или управляемых удостоверений для ресурсов Azure.
  • извлечение данных с использованием SQL-запроса или хранимой процедуры (в качестве источника); Можно также выбрать параллельное копирование из источника Azure Synapse Analytics. Дополнительные сведения см. в разделе Параллельное копирование из Azure Synapse Analytics.
  • В дополнение к этому загружайте данные с помощью инструкции COPY, PolyBase либо массовой вставки. Для повышения производительности копирования рекомендуется использовать инструкцию COPY или PolyBase. Соединитель также поддерживает автоматическое создание целевой таблицы с параметром DISTRIBUTION = ROUND_ROBIN, если она не существует в исходной схеме.

Внимание

Если копирование данных выполняется с использованием среды Azure Integration Runtime, настройте правила брандмауэра на уровне сервера таким образом, чтобы службам Azure был доступен логический SQL Server. При копировании данных с помощью локальной среды выполнения интеграции настройте брандмауэр таким образом, чтобы разрешить соответствующий диапазон IP-адресов. В этот диапазон входит IP-адрес компьютера, который используется для подключения к Azure Synapse Analytics.

Начать

Совет

Чтобы добиться максимальной производительности, загружайте данные в Azure Synapse Analytics с помощью PolyBase или инструкцией COPY. Подробные сведения см. в разделах Использование PolyBase для загрузки данных в Azure Synapse Analytics и Использование инструкции COPY для загрузки данных в Azure Synapse Analytics. Пошаговое руководство и пример использования см. в статье Загрузка 1 ТБ в Azure Synapse Analytics в течение 15 минут с помощью Фабрики данных Azure.

Чтобы выполнить действие копирования с конвейером, можно воспользоваться одним из приведенных ниже средств или пакетов SDK:

Создание связанной службы Azure Synapse Analytics с помощью пользовательского интерфейса

Следуйте приведенным ниже инструкциям, чтобы создать связанную службу Azure Synapse Analytics с помощью пользовательского интерфейса на портале Azure.

  1. Перейдите на вкладку "Управление" в рабочей области Фабрики данных Azure или Synapse и выберите "Связанные службы", после чего нажмите "Создать":

  2. Выполните поиск по ключевому слову “Synapse“ и выберите соединитель Azure Synapse Analytics.

    Снимок экрана: соединитель Azure Synapse Analytics.

  3. Настройте сведения о службе, проверьте подключение и создайте связанную службу.

    Снимок экрана: конфигурация связанной службы Azure Synapse Analytics.

Сведения о конфигурации соединителя

В следующих разделах содержатся описания свойств, которые определяют сущности Фабрики данных или конвейера Synapse, относящиеся к соединителю Azure Synapse Analytics.

Свойства связанной службы

Эти общие свойства поддерживаются для связанной службы Azure Synapse Analytics:

Свойство Описание: Обязательное поле
type Для свойства type необходимо задать значение AzureSqlDW. Да
connectionString В свойстве connectionString указываются сведения, необходимые для подключения к экземпляру Azure Synapse Analytics.
Пометьте это поле как SecureString для безопасного хранения. Вы также можете поместить ключ субъекта-службы и пароль в Azure Key Vault и в случае аутентификации SQL получить конфигурацию password из строки подключения. Ознакомьтесь с примером JSON под таблицей и с подробными сведениями в статье Хранение учетных данных в Azure Key Vault.
Да
azureCloudType Для проверки подлинности субъекта-службы укажите тип облачной среды Azure, в которой зарегистрировано приложение Microsoft Entra.
Допустимые значения — AzurePublic, AzureChina, AzureUsGovernment и AzureGermany. По умолчанию используется облачная среда Фабрики данных Azure или конвейера Synapse.
No
connectVia Среда выполнения интеграции, используемая для подключения к хранилищу данных. Вы можете использовать среду выполнения интеграции Azure или локальную среду IR (если хранилище данных расположено в частной сети). Если не указано другое, по умолчанию используется интегрированная среда выполнения Azure. No

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

Совет

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

  1. В поле Метод выбора учетной записи выберите Ввести вручную.
  2. Вставьте полное доменное имя бессерверной конечной точки. Его можно найти на странице обзора портала Azure для рабочей области Synapse в свойствах в разделе Бессерверная конечная точка SQL. Например, myserver-ondemand.sql-azuresynapse.net.
  3. В поле Имя базы данных укажите имя базы данных в бессерверном пуле SQL.

Совет

Если вы получили ошибку с кодом ошибки UserErrorFailedToConnectToSqlServer и сообщение типа "Предел сеанса для базы данных — XXX, и он был достигнут", добавьте Pooling=false в строку подключения и повторите попытку.

Проверка подлинности SQL

Чтобы использовать тип проверки подлинности SQL, укажите общие свойства, описанные в предыдущем разделе.

Пример использования проверки подлинности SQL в связанной службе

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Пароль в Azure Key Vault.

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30",
            "password": {
                "type": "AzureKeyVaultSecret",
                "store": {
                    "referenceName": "<Azure Key Vault linked service name>",
                    "type": "LinkedServiceReference"
                },
                "secretName": "<secretName>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Аутентификация субъекта-службы

Чтобы использовать проверку подлинности субъекта-службы, в дополнение к универсальным свойствам, описанным в предыдущем разделе, укажите следующие свойства:

Свойство Описание: Обязательное поле
servicePrincipalId Укажите идентификатора клиента приложения. Да
servicePrincipalKey Укажите ключ приложения. Пометьте это поле как SecureString, чтобы безопасно хранить его, или добавьте ссылку на секрет, хранящийся в Azure Key Vault. Да
tenant Укажите сведения о клиенте (доменное имя или идентификатор клиента), в котором находится приложение. Его можно получить, наведя указатель мыши на правый верхний угол страницы портала Azure. Да

Вам также необходимо выполнить следующие шаги:

  1. Создайте приложение Microsoft Entra из портал Azure. Запишите имя приложения и следующие значения, которые используются для определения связанной службы:

    • Application ID
    • ключ приложения.
    • Идентификатор клиента
  2. Подготовьте администратора Microsoft Entra для сервера в портал Azure, если вы еще этого не сделали. Администратор Microsoft Entra может быть пользователем Microsoft Entra или группой Microsoft Entra. Если вы предоставляете группе с управляемым удостоверением роль администратора, пропустите шаги 3 и 4. Администратор будет иметь полный доступ к базе данных.

  3. Создайте пользователей автономной базы данных для субъекта-службы. Подключение в хранилище данных или из которого требуется скопировать данные с помощью таких средств, как SSMS, с удостоверением Microsoft Entra, которое имеет по крайней мере разрешение ALTER ANY USER. Выполните следующий код T-SQL:

    CREATE USER [your_application_name] FROM EXTERNAL PROVIDER;
    
  4. Предоставьте субъекту-службе необходимые разрешения точно так же, как вы предоставляете разрешения пользователям SQL или другим пользователям. Выполните следующий код или посмотрите другие варианты здесь. Если вы хотите загружать данные с помощью PolyBase, изучите необходимые разрешения базы данных.

    EXEC sp_addrolemember db_owner, [your application name];
    
  5. Настройте связанную службу Azure Synapse Analytics в Фабрике данных Azure или рабочей области Synapse.

Пример использования аутентификации на основе субъекта-службы в связанной службе

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;Connection Timeout=30",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalKey": {
                "type": "SecureString",
                "value": "<service principal key>"
            },
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Использование назначаемых системой управляемых удостоверений для проверки подлинности ресурсов Azure

Фабрика данных или рабочая область Synapse может быть связана с назначаемым системой управляемым удостоверением для ресурсов Azure, которое представляет ресурс. Это управляемое удостоверение можно использовать для проверки подлинности Azure Synapse Analytics. Используя этот идентификатор, назначенный ресурс может получить доступ к данным и скопировать их из вашего хранилища данных или в него.

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

  1. Подготовьте администратора Microsoft Entra для сервера на портал Azure, если вы еще этого не сделали. Администратор Microsoft Entra может быть пользователем Microsoft Entra или группой Microsoft Entra. Если вы предоставляете группе с управляемым удостоверением, назначаемым системой, роль администратора, пропустите шаги 3 и 4. Администратор будет иметь полный доступ к базе данных.

  2. Создайте пользователей автономной базы данных для управляемого удостоверения, назначаемого системой. Подключение в хранилище данных или из которого требуется скопировать данные с помощью таких средств, как SSMS, с удостоверением Microsoft Entra, которое имеет по крайней мере разрешение ALTER ANY USER. Выполните следующую инструкцию T-SQL.

    CREATE USER [your_resource_name] FROM EXTERNAL PROVIDER;
    
  3. Предоставьте управляемому удостоверению, назначаемому системой, необходимые разрешения точно так же, как вы предоставляете разрешения пользователям SQL и другим пользователям. Выполните следующий код или посмотрите другие варианты здесь. Если вы хотите загружать данные с помощью PolyBase, изучите необходимые разрешения базы данных.

    EXEC sp_addrolemember db_owner, [your_resource_name];
    
  4. Настройте связанную службу Azure Synapse Analytics.

Пример:

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;Connection Timeout=30"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Проверка подлинности с помощью назначаемого пользователем управляемого удостоверения

Фабрика данных или рабочая область Synapse может быть связана с назначаемым пользователем управляемым удостоверением, которое представляет ресурс. Это управляемое удостоверение можно использовать для проверки подлинности Azure Synapse Analytics. Используя этот идентификатор, назначенный ресурс может получить доступ к данным и скопировать их из вашего хранилища данных или в него.

Чтобы использовать назначаемую пользователем проверку подлинности с управляемым удостоверением, в дополнение к общим свойствам, описанным в предыдущем разделе, укажите следующие свойства:

Свойство Описание: Обязательное поле
учетные данные Укажите назначаемое пользователем управляемое удостоверение в качестве объекта учетных данных. Да

Вам также необходимо выполнить следующие шаги:

  1. Подготовьте администратора Microsoft Entra для сервера на портал Azure, если вы еще этого не сделали. Администратор Microsoft Entra может быть пользователем Microsoft Entra или группой Microsoft Entra. Если вы предоставляете группе с управляемым удостоверением, назначаемым пользователем, роль администратора, пропустите шаг 3. Администратор будет иметь полный доступ к базе данных.

  2. Создайте пользователей автономной базы данных для управляемого удостоверения, назначаемого пользователем. Подключение в хранилище данных или из которого требуется скопировать данные с помощью таких средств, как SSMS, с удостоверением Microsoft Entra, которое имеет по крайней мере разрешение ALTER ANY USER. Выполните следующую инструкцию T-SQL.

    CREATE USER [your_resource_name] FROM EXTERNAL PROVIDER;
    
  3. Создайте одно или несколько управляемых удостоверений, назначаемых пользователем, и предоставьте этим удостоверениям необходимые разрешения, как пользователям SQL и прочим пользователям. Выполните следующий код или посмотрите другие варианты здесь. Если вы хотите загружать данные с помощью PolyBase, изучите необходимые разрешения базы данных.

    EXEC sp_addrolemember db_owner, [your_resource_name];
    
  4. Присвойте одно или несколько управляемых удостоверений, назначаемых пользователем, фабрике данных и создайте учетные данные для каждого подобного удостоверения.

  5. Настройте связанную службу Azure Synapse Analytics.

Пример:

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;Connection Timeout=30",
            "credential": {
                "referenceName": "credential1",
                "type": "CredentialReference"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Свойства набора данных

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

Для набора данных Azure Synapse Analytics поддерживаются следующие свойства.

Свойство Описание: Обязательное поле
type Свойство type для набора данных должно иметь значение: AzureSqlDWTable. Да
schema Имя схемы. "Нет" для источника, "Да" для приемника
table Имя таблицы или представления. "Нет" для источника, "Да" для приемника
tableName Имя таблицы или представления со схемой. Это свойство поддерживается только для обеспечения обратной совместимости. Для новой рабочей нагрузки используйте schema и table. "Нет" для источника, "Да" для приемника

Пример свойств набора данных

{
    "name": "AzureSQLDWDataset",
    "properties":
    {
        "type": "AzureSqlDWTable",
        "linkedServiceName": {
            "referenceName": "<Azure Synapse Analytics linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, retrievable during authoring > ],
        "typeProperties": {
            "schema": "<schema_name>",
            "table": "<table_name>"
        }
    }
}

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

Полный список разделов и свойств, используемых для определения действий, см. в статье Конвейеры и действия в фабрике данных Azure. В этом разделе содержится список свойств, поддерживаемых Azure Synapse Analytics как источником и как приемником.

Azure Synapse Analytics как источник

Совет

Чтобы эффективно загружать данные из Azure Synapse Analytics с использованием секционирования данных, изучите дополнительные сведения в разделе Параллельное копирование из Azure Synapse Analytics.

Чтобы скопировать данные из Azure Synapse Analytics, задайте для свойства type в источнике действия копирования значение SqlDWSource. В разделе source действия копирования поддерживаются следующие свойства:

Свойство Описание: Обязательное поле
type Свойство type источника действия копирования должно иметь значение SqlDWSource. Да
sqlReaderQuery Используйте пользовательский SQL-запрос для чтения данных. Пример: select * from MyTable. No
sqlReaderStoredProcedureName Имя хранимой процедуры, которая считывает данные из исходной таблицы. Последней инструкцией SQL должна быть инструкция SELECT в хранимой процедуре. No
storedProcedureParameters Параметры для хранимой процедуры.
Допустимые значения: пары имен или значений. Имена и регистр параметров должны совпадать с именами и регистром параметров хранимой процедуры.
No
isolationLevel Задает режим блокировки транзакций для источника данных SQL. Допустимые значения: ReadCommitted, ReadUncommitted, RepeatableRead, Serializable, Snapshot. Если значение не указано, используется уровень изоляции базы данных по умолчанию. Дополнительные сведения см. в разделе system.data.isolationlevel. No
partitionOptions Задает параметры секционирования данных, используемые для загрузки данных из Azure Synapse Analytics.
Допустимые значения: Нет (по умолчанию), PhysicalPartitionsOfTable и DynamicRange.
Если параметр секционирования включен (любое значение, кроме None), то степень параллелизма для параллельной загрузки данных из Azure Synapse Analytics управляется параметром parallelCopies в действии копирования.
No
partitionSettings Позволяет указать группу параметров для секционирования данных.
Применяется, если параметр секционирования имеет значение, отличное от None.
No
В разделе partitionSettings:
partitionColumnName Укажите имя исходного столбца в виде целого числа или типа date/datetime (int, smallint, bigint, date, smalldatetime, datetime, datetime2 или datetimeoffset), которое будет использоваться для секционирования по диапазонам при параллельном копировании. Если значение не указано, то индекс или первичный ключ таблицы определяется автоматически и используется в качестве столбца секционирования.
Применяется, если параметр секции имеет значение DynamicRange. Если для получения исходных данных используется запрос, подключите ?AdfDynamicRangePartitionCondition в предложении WHERE. Пример можно найти в разделе Параллельное копирование из базы данных SQL.
No
partitionUpperBound Максимальное значение столбца секционирования для разделения диапазона секций. Это значение используется для выбора шага секционирования, а не для фильтрации строк в таблице. Все строки в таблице или результатах запроса будут секционированы и скопированы. Если значение не указано, действие копирования автоматически определяет значение.
Применяется, если параметр секции имеет значение DynamicRange. Пример можно найти в разделе Параллельное копирование из базы данных SQL.
No
partitionLowerBound Минимальное значение столбца секционирования для разделения диапазона секций. Это значение используется для выбора шага секционирования, а не для фильтрации строк в таблице. Все строки в таблице или результатах запроса будут секционированы и скопированы. Если значение не указано, действие копирования автоматически определяет значение.
Применяется, если параметр секции имеет значение DynamicRange. Пример можно найти в разделе Параллельное копирование из базы данных SQL.
No

Обратите внимание на следующие моменты.

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

Пример. Использование SQL-запроса

"activities":[
    {
        "name": "CopyFromAzureSQLDW",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Azure Synapse Analytics input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlDWSource",
                "sqlReaderQuery": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Пример. Использование хранимой процедуры

"activities":[
    {
        "name": "CopyFromAzureSQLDW",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Azure Synapse Analytics input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlDWSource",
                "sqlReaderStoredProcedureName": "CopyTestSrcStoredProcedureWithParameters",
                "storedProcedureParameters": {
                    "stringData": { "value": "str3" },
                    "identifier": { "value": "$$Text.Format('{0:yyyy}', <datetime parameter>)", "type": "Int"}
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Пример хранимой процедуры:

CREATE PROCEDURE CopyTestSrcStoredProcedureWithParameters
(
    @stringData varchar(20),
    @identifier int
)
AS
SET NOCOUNT ON;
BEGIN
    select *
    from dbo.UnitTestSrcTable
    where dbo.UnitTestSrcTable.stringData != stringData
    and dbo.UnitTestSrcTable.identifier != identifier
END
GO

Azure Synapse Analytics в качестве приемника

Фабрика данных Azure и конвейеры Synapse поддерживают три способа загрузки данных в Azure Synapse Analytics.

Наиболее быстрым и масштабируемым способом загрузки данных является использование инструкции COPY или PolyBase.

Чтобы скопировать данные в Azure Synapse Analytics, задайте тип приемника SqlDWSink в действии копирования. В разделе sink действия копирования поддерживаются следующие свойства:

Свойство Описание: Обязательное поле
type Свойство type приемника действия копирования должно иметь значение SqlDWSink. Да
allowPolyBase Указывает, следует ли использовать PolyBase для загрузки данных в Azure Synapse Analytics. Свойства allowCopyCommand и allowPolyBase не могут одновременно иметь значение true.

Подробные сведения и ограничения см. в разделе Загрузка данных в Azure Synapse Analytics с помощью PolyBase.

Допустимые значения: true и false (по умолчанию).

Применяется при использовании PolyBase.
polyBaseSettings Группа свойств, которые можно задать, если свойство allowPolybase имеет значение true.
Применяется при использовании PolyBase.
allowCopyCommand Указывает, следует ли использовать инструкцию COPY для загрузки данных в Azure Synapse Analytics. Свойства allowCopyCommand и allowPolyBase не могут одновременно иметь значение true.

Подробные сведения и ограничения приведены в разделе Загрузка данных в Azure Synapse Analytics с помощью инструкции COPY.

Допустимые значения: true и false (по умолчанию).

Применяется при использовании инструкции COPY.
copyCommandSettings Группа свойств, которые можно задать, если свойство allowCopyCommand имеет значение TRUE.
Применяется при использовании инструкции COPY.
writeBatchSize Число строк для вставки в таблицу SQL в одном пакете.

Допустимое значение: целое число (количество строк). По умолчанию эта служба динамически определяет соответствующий размер пакета в зависимости от размера строки.

Применяется при использовании массовой вставки.
writeBatchTimeout Время ожидания операции вставки, upsert и хранимой процедуры до истечения времени ожидания.
Допустимые значения приведены для интервала времени. Например, 00:30:00 (30 минут). Если значение не указано, время ожидания по умолчанию равно "00:30:00".

Применяется при использовании массовой вставки.
preCopyScript Укажите SQL-запрос для действия копирования, выполняемый перед записью данных в Azure Synapse Analytics при каждом выполнении. Это свойство используется для очистки предварительно загруженных данных. No
tableOption Указывает, следует ли автоматически создавать таблицу приемника, если она не существует, на основе исходной схемы. Допустимые значения: none (по умолчанию), autoCreate. No
disableMetricsCollection Служба собирает такие метрики, как DWU Azure Synapse Analytics, с целью оптимизации производительности копирования и предоставления рекомендаций, что предоставляет дополнительный доступ к главной базе данных. Если вас не устраивает такое поведение, укажите true, чтобы отключить его. Нет (значение по умолчанию — false)
 maxConcurrent Подключение ions Верхний предел одновременных подключений, установленных для хранилища данных при выполнении действия. Указывайте значение только при необходимости ограничить количество одновременных подключений.  Без
WriteBehavior Укажите режим записи для действия копирования, чтобы загрузить данные в Базу данных SQL Azure.
Допустимые значения: Insert и Upsert. По умолчанию служба использует режим Insert для загрузки данных.
No
upsertSettings Укажите группу параметров для режима записи.
Применяется, если параметр WriteBehavior имеет значение Upsert.
No
В разделе upsertSettings:
клиентом Укажите имена столбцов для уникальной идентификации строк. Можно использовать один ключ или ряд ключей. Если значение не указано, то используется первичный ключ. No
interimSchemaName Укажите промежуточную схему для создания промежуточной таблицы. Примечание. Пользователь должен иметь разрешение на создание и удаление таблиц. По умолчанию промежуточная таблица будет использовать ту же схему, что и таблица приемника. No

Пример 1. Приемник Azure Synapse Analytics

"sink": {
    "type": "SqlDWSink",
    "allowPolyBase": true,
    "polyBaseSettings":
    {
        "rejectType": "percentage",
        "rejectValue": 10.0,
        "rejectSampleValue": 100,
        "useTypeDefault": true
    }
}

Пример 2. Операция Upsert с данными

"sink": {
    "type": "SqlDWSink",
    "writeBehavior": "Upsert",
    "upsertSettings": {
        "keys": [
             "<column name>"
        ],
        "interimSchemaName": "<interim schema name>"
    },
}

Параллельное копирование из Azure Synapse Analytics

Соединитель Azure Synapse Analytics в действии копирования обеспечивает встроенное секционирование данных для параллельного копирования данных. Параметры секционирования данных можно найти на вкладке Источник действия Copy.

Снимок экрана с параметрами секционирования

Если включено копирование с секционированием, то выполнение действия копирования отправляет параллельные запросы к источнику Azure Synapse Analytics для загрузки данных по секциям. Степень параллелизма определяется с помощью параметра parallelCopies для действия копирования. Например, если parallelCopies имеет значение 4, то служба будет создавать и выполнять четыре запроса с указанным способом и параметрами секционирования, где каждый запрос будет извлекать часть данных из Azure Synapse Analytics.

Рекомендуется включить параллельное копирование с секционированием данных, особенно при загрузке большого объема данных из Azure Synapse Analytics. Ниже приведены рекомендуемые конфигурации для разных сценариев. Если данные копируются в файловое хранилище данных, то рекомендуется сохранять данные в папку несколькими файлами (указывая только имя папки), так как производительность в таком случае будет выше, чем при записи в один файл.

Сценарий Предлагаемые параметры
Полная загрузка из большой таблицы с физическими секциями. Параметр секционирования. Физические секции таблицы.

Во время выполнения служба автоматически определяет физические секции и копирует данные по секциям.

Чтобы проверить, имеет ли таблица физическую секцию, выполните следующий запрос.
Полная загрузка из большой таблицы без физических секций, когда таблица содержит столбец целочисленного типа или типа даты и времени для секционирования данных. Параметры секции: секция динамического диапазона.
Столбец секционирования (необязательно). Укажите столбец для секционирования данных. Если значение не указано, то используется столбец с индексом или первичным ключом.
Верхняя граница секционирования и Нижняя граница секционирования (необязательно). Указывайте, если необходимо определить шаг секционирования. Эти значения не предназначены для фильтрации строк в таблице. Все строки в таблице будут секционированы и скопированы. Если значения не указаны, действие Copy автоматически определяет эти значения.

К примеру, если ваш столбец раздела "Идентификатор" имеет диапазон значений от 1 до 100 и вы установили нижнюю границу как 20, а верхнюю границу как 80 с параллельным копированием как 4, служба извлекает данные по 4 разделам — идентификаторы в диапазоне <=20, [21, 50], [51, 80] и >=81 соответственно.
Загрузка большого объема данных пользовательским запросом без использования физических секций, однако с использованием столбца целочисленного типа или типа даты/даты и времени для секционирования данных. Параметры секции: секция динамического диапазона.
Запрос: SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>.
Столбец секционирования: укажите столбец, используемый для секционирования данных.
Верхняя граница секционирования и Нижняя граница секционирования (необязательно). Указывайте, если необходимо определить шаг секционирования. Эти значения не предназначены для фильтрации строк в таблице. Все строки в результатах запроса будут секционированы и скопированы. Если значение не указано, действие копирования автоматически определяет значение.

Во время выполнения служба заменяет ?AdfRangePartitionColumnName фактическим именем столбца и диапазонами значений для каждой секции, а затем отправляет их в Azure Synapse Analytics.
К примеру, если ваш столбец раздела "Идентификатор" имеет диапазон значений от 1 до 100, и вы установили нижнюю границу как 20, а верхнюю границу как 80, с параллельным копированием как 4, служба извлекает данные по 4 разделам — идентификаторы в диапазоне <=20, [21, 50], [51, 80] и >=81 соответственно.

Ниже приведены дополнительные примеры запросов для различных сценариев.
1. Запросите всю таблицу:
SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition
2. Запрос из таблицы с выделенным столбцом и дополнительными фильтрами предложения where:
SELECT <column_list> FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>
3. Запрос с вложенными запросами:
SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>
4. Запрос с разделом в вложенных запросах:
SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition) AS T

Ниже приведены рекомендации по загрузке данных с параметром секционирования.

  1. Чтобы избежать неравномерного распределения данных, выбирайте в качестве столбца секционирования отличительный столбец (например, первичный ключ или уникальный ключ).
  2. Если таблица имеет встроенную секцию, используйте параметр секционирования "Физические секции таблицы" для повышения производительности.
  3. Если для копирования данных используется Azure Integration Runtime, то в параметре Единицы интеграции данных (DIU) можно задать большее значение (>4), чтобы задействовать больше вычислительных ресурсов. Ознакомьтесь со сценариями использования этого механизма.
  4. Параметр "Степень параллелизма копирования" контролирует номера секций. Если это число слишком велико, это может существенно сказаться на производительности. Рекомендуется задавать это число следующим образом: (DIU или число узлов локальной среды IR) * (от 2 до 4).
  5. Обратите внимание, что Azure Synapse Analytics может выполнять не более 32 запросов одновременно, и если значение степени параллелизма копирования слишком велико, то это может привести к возникновению узкого места.

Пример. Полная загрузка из большой таблицы с физическими секциями

"source": {
    "type": "SqlDWSource",
    "partitionOption": "PhysicalPartitionsOfTable"
}

Пример: запрос с секционированием по динамическому диапазону

"source": {
    "type": "SqlDWSource",
    "query": "SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>",
    "partitionOption": "DynamicRange",
    "partitionSettings": {
        "partitionColumnName": "<partition_column_name>",
        "partitionUpperBound": "<upper_value_of_partition_column (optional) to decide the partition stride, not as data filter>",
        "partitionLowerBound": "<lower_value_of_partition_column (optional) to decide the partition stride, not as data filter>"
    }
}

Пример запроса для проверки физической секции

SELECT DISTINCT s.name AS SchemaName, t.name AS TableName, c.name AS ColumnName, CASE WHEN c.name IS NULL THEN 'no' ELSE 'yes' END AS HasPartition
FROM sys.tables AS t
LEFT JOIN sys.objects AS o ON t.object_id = o.object_id
LEFT JOIN sys.schemas AS s ON o.schema_id = s.schema_id
LEFT JOIN sys.indexes AS i ON t.object_id = i.object_id
LEFT JOIN sys.index_columns AS ic ON ic.partition_ordinal > 0 AND ic.index_id = i.index_id AND ic.object_id = t.object_id
LEFT JOIN sys.columns AS c ON c.object_id = ic.object_id AND c.column_id = ic.column_id
LEFT JOIN sys.types AS y ON c.system_type_id = y.system_type_id
WHERE s.name='[your schema]' AND t.name = '[your table name]'

Если таблица содержит физическую секцию, то параметр "Имеет секции" будет иметь значение "Да", как показано ниже.

Использование инструкции COPY для загрузки данных в Azure Synapse Analytics

Инструкция COPY — это простой и гибкий способ загрузки данных в Azure Synapse Analytics с высокой пропускной способностью. Дополнительные сведения см. в статье о массовой загрузке данных с помощью инструкции COPY.

  • Если исходные данные находятся в BLOB-объекте Azure или Azure Data Lake Storage 2-го поколения, а формат совместим с инструкцией COPY, то можно использовать действие копирования для непосредственного вызова инструкции COPY, чтобы система Azure Synapse Analytics могла извлечь данные из источника. Дополнительные сведения см. в разделе Прямое копирование с помощью инструкции COPY.
  • Если хранилище и формат исходных данных изначально не поддерживаются инструкцией COPY, то можно использовать функцию промежуточного копирования с помощью инструкции COPY. Промежуточное копирование также обеспечивает лучшую пропускную способность. Данные автоматически преобразуются в формат, совместимый с инструкцией COPY, сохраняются в хранилище BLOB-объектов Azure, а затем вызывается инструкция COPY для загрузки данных в Azure Synapse Analytics.

Совет

При использовании инструкции COPY со средой выполнения интеграции Azure в качестве эффективных единиц интеграции данных (DIU) всегда используется 2. Настройка DIU не влияет на производительность, так как загрузка данных из хранилища осуществляется ядром Azure Synapse.

Прямое копирование с помощью инструкции COPY

Инструкция COPY Azure Synapse Analytics непосредственно поддерживает хранилище BLOB-объектов Azure, Azure Data Lake Storage 1-го поколения и Azure Data Lake Storage 2-го поколения. Если ваши исходные данные соответствуют условиям, описанным в этом разделе, используйте инструкцию COPY для копирования напрямую из исходного хранилища данных в Azure Synapse Analytics. В противном случае см. сведения в разделе Промежуточное копирование с помощью инструкции COPY. Служба проверяет параметры и не выполняет действие копирования, если условия не выполнены.

  1. Связанная служба и формат источника могут иметь следующие типы и методы проверки подлинности.

    Поддерживаемые типы хранилища данных источника Поддерживаемые форматы Поддерживаемые типы проверки подлинности источника
    Хранилище BLOB-объектов Azure Текст с разделителями Проверка подлинности ключа учетной записи, проверка подлинности подписанного URL-адреса, проверка подлинности субъекта-службы, назначаемая системой проверка подлинности управляемого удостоверения
      Parquet Проверка подлинности на основе ключа учетной записи, проверка подлинности с помощью подписанного URL-адреса
      ORC Проверка подлинности на основе ключа учетной записи, проверка подлинности с помощью подписанного URL-адреса
    Azure Data Lake Storage 2-го поколения Текст с разделителями
    Parquet
    ORC
    Проверка подлинности ключа учетной записи, проверка подлинности субъекта-службы, проверка подлинности управляемого удостоверения, назначаемая системой

    Внимание

  2. Параметры формата могут быть следующие.

    1. Для Parquet: в параметре compression может быть задано Без сжатия, Snappy или GZip.
    2. Для ORC: в параметре compression может быть задано без сжатия, zlib или Snappy.
    3. Для текста с разделителями:
      1. В параметре rowDelimiter может быть явно задан один символ или "\r\n", значение по умолчанию не поддерживается.
      2. В параметре nullValue может быть оставлено значение по умолчанию или задана пустая строка ("").
      3. В параметре encodingName может быть оставлено значение по умолчанию или задано значение utf-8 или utf-16.
      4. Параметр escapeChar должен совпадать с параметром quoteChar и не быть пустым.
      5. В параметре skipLineCount может быть оставлено значение по умолчанию или задано значение 0.
      6. В параметре compression может быть задано Без сжатия или GZip.
  3. Если источником является папка, параметр recursive в действии копирования должен иметь значение true, а в параметре wildcardFilename должен быть задан подстановочный знак * или *.*.

  4. Параметры wildcardFolderPath, wildcardFilename (кроме * и *.*), modifiedDateTimeStart, modifiedDateTimeEnd, prefix, enablePartitionDiscovery и additionalColumns не указываются.

В разделе allowCopyCommand действия копирования поддерживаются следующие параметры инструкции COPY.

Свойство Описание: Обязательное поле
defaultValues Задает значения по умолчанию для каждого целевого столбца в Azure Synapse Analytics. Значения по умолчанию из этого свойства переопределяют ограничение DEFAULT, заданное в хранилище данных, а столбец идентификаторов не может иметь значение по умолчанию. No
additionalOptions Дополнительные параметры, которые будут переданы в Azure Synapse Analytics непосредственно в предложении WITH инструкции COPY. Значение необходимо заключать в кавычки для соответствия требованиям инструкции COPY. No
"activities":[
    {
        "name": "CopyFromAzureBlobToSQLDataWarehouseViaCOPY",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "ParquetDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "ParquetSource",
                "storeSettings":{
                    "type": "AzureBlobStorageReadSettings",
                    "recursive": true
                }
            },
            "sink": {
                "type": "SqlDWSink",
                "allowCopyCommand": true,
                "copyCommandSettings": {
                    "defaultValues": [
                        {
                            "columnName": "col_string",
                            "defaultValue": "DefaultStringValue"
                        }
                    ],
                    "additionalOptions": {
                        "MAXERRORS": "10000",
                        "DATEFORMAT": "'ymd'"
                    }
                }
            },
            "enableSkipIncompatibleRow": true
        }
    }
]

Промежуточное копирование с помощью инструкции COPY

Если исходные данные изначально несовместимы с инструкцией COPY, включите копирование данных через промежуточный экземпляр хранилища BLOB-объектов Azure или Azure Data Lake Storage 2-го поколения (это не может быть хранилище Azure класса Premium). В таком случае служба автоматически преобразует данные, чтобы они соответствовали требованиям к формату данных инструкции COPY. Затем вызывается инструкция COPY для загрузки данных в Azure Synapse Analytics. Наконец, производится очистка временных данных из хранилища. Подробные сведения о копировании с использованием промежуточного процесса см. в разделе Промежуточное копирование.

Для использования этой функции создайте связанную службу Хранилища BLOB-объектов Azure или связанную службу Azure Data Lake Storage 2-го поколения с ключом учетной записи или проверкой подлинности через управляемое системой удостоверение, которая ссылается на учетную запись хранения Azure в качестве промежуточного хранилища.

Внимание

Внимание

Если в промежуточной службе хранилища Azure настроена управляемая частная конечная точка с включенным брандмауэром хранилища, то необходимо использовать проверку подлинности через управляемые удостоверения и предоставить разрешения читателя данных BLOB-объектов хранилища для Synapse SQL Server, чтобы обеспечить доступ к промежуточным файлам во время загрузки с помощью инструкции COPY.

"activities":[
    {
        "name": "CopyFromSQLServerToSQLDataWarehouseViaCOPYstatement",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "SQLServerDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlSource",
            },
            "sink": {
                "type": "SqlDWSink",
                "allowCopyCommand": true
            },
            "stagingSettings": {
                "linkedServiceName": {
                    "referenceName": "MyStagingStorage",
                    "type": "LinkedServiceReference"
                }
            }
        }
    }
]

Загрузка данных в Azure Synapse Analytics с использованием PolyBase

Применение PolyBase — это эффективный способ загрузки большого объема данных в Azure Synapse Analytics с высокой пропускной способностью. Используя PolyBase вместо стандартного механизма BULKINSERT, можно значительно увеличить пропускную способность.

  • Если исходные данные находятся в BLOB-объекте Azure, Azure Data Lake Storage 1-го поколения или Azure Data Lake Storage 2-го поколения, а формат совместим с PolyBase, то можно использовать действие копирования для непосредственного вызова PolyBase, чтобы Azure Synapse Analytics могла извлечь данные из источника. Дополнительные сведения см. в разделе Прямое копирование с помощью PolyBase.
  • Если хранилище и формат исходных данных изначально не поддерживаются PolyBase, то можно использовать функцию промежуточного копирования с помощью PolyBase. Промежуточное копирование также обеспечивает лучшую пропускную способность. Данные автоматически преобразуются в формат, совместимый с PolyBase, сохраняются в хранилище BLOB-объектов Azure, а затем вызывается PolyBase для загрузки данных в Azure Synapse Analytics.

Совет

Дополнительные сведения см. в разделе Рекомендации по использованию PolyBase. При использовании PolyBase со средой выполнения интеграции Azure эффективными единицами интеграции данных (DIU) для прямого или промежуточного хранения при переносе в Synapse всегда является 2. Настройка DIU не влияет на производительность, так как загрузка данных из хранилища осуществляется ядром Synapse.

В разделе polyBaseSettings действия копирования поддерживаются следующие параметры PolyBase.

Свойство Описание: Обязательное поле
rejectValue Указывает количество или процент строк, которые могут быть отклонены, прежде чем запрос завершится с ошибкой.

Дополнительные сведения о параметрах отклонения PolyBase см. в подразделе "Аргументы" раздела CREATE EXTERNAL TABLE (Transact-SQL).

Допустимые значения: 0 (по умолчанию), 1, 2 и. т. д.
No
rejectType Указывает, является ли параметр rejectValue литеральным или процентным.

Допустимые значения: Значение (по умолчанию) и Процент.
No
rejectSampleValue Определяет количество строк, которое PolyBase следует получить до повторного вычисления процента отклоненных строк.

Допустимые значения: 1, 2, …
Да, если rejectType имеет значение percentage.
useTypeDefault Указывает способ обработки отсутствующих значений в текстовых файлах с разделителями, когда PolyBase извлекает данные из текстового файла.

Дополнительные сведения об этом свойстве см. в подразделе "Аргументы" раздела CREATE EXTERNAL FILE FORMAT (Transact-SQL).

Допустимые значения: true и false (по умолчанию).

No

Прямое копирование с помощью PolyBase

Azure Synapse Analytics PolyBase непосредственно поддерживает хранилище BLOB-объектов Azure, Azure Data Lake Storage 1-го поколения и Azure Data Lake Storage 2-го поколения. Если ваши исходные данные соответствуют условиям, описанным в этом разделе, используйте PolyBase, чтобы выполнять копирование напрямую из исходного хранилища данных в Azure Synapse Analytics. В противном случае см. сведения в разделе Промежуточное копирование с помощью PolyBase.

Совет

Дополнительные сведения об эффективном копировании данных в Azure Synapse Analytics см. в записи блога Фабрика данных Azure позволяет гораздо проще и удобнее получать аналитические выводы из данных при использовании Data Lake Store с Azure Synapse Analytics.

Если требования не выполняются, служба проверяет параметры и автоматически возвращается к механизму перемещения данных BULKINSERT.

  1. Связанная служба источника имеет следующие типы и методы проверки подлинности.

    Поддерживаемые типы хранилища данных источника Поддерживаемые типы проверки подлинности источника
    Хранилище BLOB-объектов Azure Проверка подлинности ключа учетной записи, назначаемая системой проверка подлинности управляемого удостоверения
    Azure Data Lake Storage 1-го поколения Аутентификация субъекта-службы
    Azure Data Lake Storage 2-го поколения Проверка подлинности ключа учетной записи, назначаемая системой проверка подлинности управляемого удостоверения

    Внимание

  2. Формат исходных данных — Parquet, ORC или текстовый файл с разделителями со следующими конфигурациями.

    1. Путь к папке не содержит фильтр с подстановочными знаками.
    2. Имя файла пустое или указывает на единственный файл. При указании имени файла в действии копирования можно использовать только подстановочные знаки * или *.*.
    3. Параметр rowDelimiter имеет значение по умолчанию, \n, \r\n или \r.
    4. В параметре nullValue оставляется значение по умолчанию или задается пустая строка (""), а в параметре treatEmptyAsNull оставляется значение по умолчанию или задается значение true.
    5. В параметре encodingName оставляется значение по умолчанию или задается значение utf-8.
    6. Параметры quoteChar, escapeChar и skipLineCount не задаются. Поддержка PolyBase пропускает строку заголовка, которую можно настроить как firstRowAsHeader.
    7. Параметр compression может иметь значение Без сжатия, GZip или Сжатие.
  3. Если источником является папка, параметр recursive в действии копирования должен иметь значение true.

  4. Параметры wildcardFolderPath , wildcardFilename, modifiedDateTimeStart, modifiedDateTimeEnd, prefix, enablePartitionDiscovery и additionalColumns не указываются.

Примечание.

Обратите внимание, что если источником является папка, то PolyBase извлекает файлы из этой папки и всех вложенных в нее папок, но не извлекает данные из файлов, имена которых начинаются с подчеркивания (_) или точки (.) (см. описание аргумента LOCATION здесь).

"activities":[
    {
        "name": "CopyFromAzureBlobToSQLDataWarehouseViaPolyBase",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "ParquetDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "ParquetSource",
                "storeSettings":{
                    "type": "AzureBlobStorageReadSettings",
                    "recursive": true
                }
            },
            "sink": {
                "type": "SqlDWSink",
                "allowPolyBase": true
            }
        }
    }
]

Промежуточное копирование с помощью PolyBase

Если исходные данные исходно несовместимы с PolyBase, включите копирование данных через промежуточный экземпляр хранилища BLOB-объектов Azure или Azure Data Lake Storage 2-го поколения (это не может быть хранилище Azure класса Premium). В таком случае служба автоматически преобразует данные, чтобы они соответствовали требованиям к формату данных PolyBase. Затем она вызывает PolyBase для загрузки данных в Azure Synapse Analytics. Наконец, производится очистка временных данных из хранилища. Подробные сведения о копировании с использованием промежуточного процесса см. в разделе Промежуточное копирование.

Для использования этой функции создайте связанную службу Хранилища BLOB-объектов Azure или связанную службу Azure Data Lake Storage 2-го поколения с ключом учетной записи или проверкой подлинности через управляемое удостоверение, которая ссылается на учетную запись хранения Azure в качестве промежуточного хранилища.

Внимание

Внимание

Если в промежуточной службе хранилища Azure настроена управляемая частная конечная точка с включенным брандмауэром хранилища, то необходимо использовать проверку подлинности через управляемые удостоверения и предоставить разрешения читателя данных BLOB-объектов хранилища для Synapse SQL Server, чтобы обеспечить доступ к промежуточным файлам во время загрузки PolyBase.

"activities":[
    {
        "name": "CopyFromSQLServerToSQLDataWarehouseViaPolyBase",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "SQLServerDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlSource",
            },
            "sink": {
                "type": "SqlDWSink",
                "allowPolyBase": true
            },
            "enableStaging": true,
            "stagingSettings": {
                "linkedServiceName": {
                    "referenceName": "MyStagingStorage",
                    "type": "LinkedServiceReference"
                }
            }
        }
    }
]

Советы и рекомендации по использованию PolyBase

В следующих разделах приведены практические рекомендации в дополнение к указанным в статье Рекомендации по использованию Azure Synapse Analytics.

Необходимые разрешения базы данных

Для использования PolyBase пользователь, который загружает данные в Azure Synapse Analytics, должен иметь разрешение CONTROL в целевой базе данных. Это разрешение можно получить, добавив этого пользователя как участника роли db_owner. О том, как это сделать, см. в обзоре Azure Synapse Analytics.

Ограничение размера строки и типа данных

Загрузки PolyBase ограничены записями размером менее 1 МБ. PolyBase нельзя использовать для загрузки в типы данных VARCHR(MAX), NVARCHAR(MAX) или VARBINARY(MAX). Дополнительные сведения см. в статье Ограничения емкости Azure Synapse Analytics.

Если исходные данные имеют записи размером более 1 МБ, можно попробовать вертикально разбить исходные таблицы на несколько небольших. Убедитесь, что максимальный размер каждой записи не превышает предел. Затем эти небольшие таблицы можно загрузить с помощью PolyBase и слить вместе в Azure Synapse Analytics.

Кроме того, для данных с такими широкими столбцами можно не использовать Polybase, а загружать их, отключив параметр "allow PolyBase".

Класс ресурсов Azure Synapse Analytics

Чтобы добиться максимальной пропускной способности, присвойте более высокий класс ресурсов пользователю, который загружает данные в Azure Synapse Analytics через PolyBase.

Устранение неполадок c PolyBase

Загрузка в столбец с типом данных Decimal

Если исходные данные находятся в текстовых или других несовместимых с PolyBase хранилищах (используется промежуточное копирование и PolyBase) и в них содержится пустое значение, которое необходимо загрузить в столбец с десятичным типом данных в Azure Synapse Analytics, то может возникнуть следующая ошибка:

ErrorCode=FailedDbOperation, ......HadoopSqlException: Error converting data type VARCHAR to DECIMAL.....Detailed Message=Empty string can't be converted to DECIMAL.....

Решение заключается в том, чтобы снять флажок Использовать тип по умолчанию (т. е. установить для этого параметра значение false) в разделе "Параметры PolyBase" приемника действия копирования. "USE_TYPE_DEFAULT" — собственная конфигурация PolyBase, которая указывает способ обработки отсутствующих значений в текстовых файлах с разделителями, когда PolyBase извлекает данные из текстового файла.

Проверка свойства tableName в Azure Synapse Analytics

В следующей таблице приведены примеры того, как указать свойство tableName в наборе данных JSON. В ней показаны несколько сочетаний имен схем и таблиц.

Схема базы данных Имя таблицы Свойство tableName в JSON
dbo MyTable MyTable или dbo.MyTable либо [dbo].[MyTable]
dbo1 MyTable dbo1.MyTable или [dbo1].[MyTable]
dbo My.Table [My.Table] или [dbo].[My.Table]
dbo1 My.Table [dbo1].[My.Table]

Если вы видите следующую ошибку, это может указывать на неправильное значение свойства tableName. Правильные значения для свойства tableName в JSON см. в таблице выше.

Type=System.Data.SqlClient.SqlException,Message=Invalid object name 'stg.Account_test'.,Source=.Net SqlClient Data Provider

Столбцы со значениями по умолчанию

Сейчас для PolyBase требуется такое же количество столбцов, как и в целевой таблице. Примером может служить таблица с четырьмя столбцами, и один из них определен со значением по умолчанию. Входные данные по-прежнему должны иметь четыре столбца. Если входной набор данных будет содержать три столбца, мы получим ошибку, похожую на следующую:

All columns of the table must be specified in the INSERT BULK statement.

Значение NULL рассматривается как вариант значения по умолчанию. Если столбец допускает значение NULL, входные данные большого двоичного объекта для этого столбца могут быть пустыми. Но они не могут отсутствовать во входном наборе данных. Для отсутствующих значений PolyBase будет вставлять в Azure Synapse Analytics значения NULL.

Ошибка доступа к внешнему файлу

Если возникла следующая ошибка, убедитесь, что используется проверка подлинности с управляемым удостоверением и имеется разрешение на чтение данных BLOB-объекта хранилища для управляемого удостоверения рабочей области Azure Synapse.

Job failed due to reason: at Sink '[SinkName]': shaded.msdataflow.com.microsoft.sqlserver.jdbc.SQLServerException: External file access failed due to internal error: 'Error occurred while accessing HDFS: Java exception raised on call to HdfsBridge_IsDirExist. Java exception message:\r\nHdfsBridge::isDirExist 

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

Свойства потока данных для сопоставления

При преобразовании данных в потоке данных для сопоставления можно выполнять операции чтения и записи в таблицах из Azure Synapse Analytics. Дополнительные сведения см. в описаниях преобразования источника и преобразования приемника в разделе, посвященном потокам данных для сопоставления.

Преобразование источника

Параметры, относящиеся к Azure Synapse Analytics, находятся на вкладке Параметры источника преобразования источника.

Входные данные. Выберите, будете ли источник указывать на таблицу (аналогично Select * from <table-name>) или вводится пользовательский SQL-запрос.

Включить промежуточное хранение. Настоятельно рекомендуется использовать этот параметр в рабочих нагрузках с источниками Azure Synapse Analytics. При выполнении действия потока данных с источниками Azure Synapse Analytics из конвейера предлагается указать учетную запись хранения промежуточного расположения, которая затем используется для промежуточной загрузки данных. Это самый быстрый механизм загрузки данных из Azure Synapse Analytics.

Запрос. Если выбрать запрос в поле ввода, введите SQL-запрос для источника. Этот параметр переопределяет любую таблицу, выбранную в наборе данных. Предложения Order By здесь не поддерживаются, но можно задать полную инструкцию SELECT FROM. Кроме того, можно использовать табличные функции, определяемые пользователем. Пример использования такой функции в SQL — инструкция select * from udfGetData(), возвращающая таблицу. Этот запрос создаст исходную таблицу, которую можно использовать в потоке данных. Использование запросов — также отличный способ сокращения количества строк для тестирования или поиска.

Пример SQL: Select * from MyTable where customerId > 1000 and customerId < 2000

Размер пакета: введите размер пакета для фрагмента больших данных в операции чтения. В потоках данных этот параметр используется для установки кэширования Spark по столбцам. Это необязательное поле. Если оно пусто, то будут использоваться параметры Spark по умолчанию.

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

  • Read Committed (чтение зафиксированных данных)
  • Read Uncommitted (чтение незафиксированных данных)
  • Повторяющаяся операция чтения
  • Упорядочиваемый уровень изоляции
  • None (игнорировать уровень изоляции)

Уровень изоляции

Преобразование приемника

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

Метод обновления. Определяет, какие операции разрешены в назначении базы данных. По умолчанию разрешены только операции вставки. Для выполнения обновления (update), обновления или вставки (upsert) или удаления (delete) строк требуется преобразование alter-row строк, отмеченных для этих действий. Для выполнения обновления (update), обновления или вставки (upsert) или удаления (delete) должен быть установлен ключевой столбец (или столбцы), позволяющий определить строки для изменения.

Действие таблицы: определяет, следует ли повторно создавать или удалять все строки из целевой таблицы перед записью.

  • Нет: действия с таблицей не будут выполняться.
  • Создать повторно: таблица будет удалена и создана повторно. Это действие необходимо, если новая таблица создается динамически.
  • Усечь: все строки из целевой таблицы будут удалены.

Включить промежуточное хранение. Обеспечивает загрузку в пулы SQL Azure Synapse Analytics с помощью команды копирования и рекомендуется для большинства приемников Synapse. Промежуточное хранилище настраивается в действии Выполнение потока данных.

Размер пакета: определяет количество строк, записываемых в каждом контейнере. Более крупные размеры пакетов улучшают сжатие и оптимизацию памяти, но при кэшировании данных возникает риск нехватки памяти.

Использовать схему приемника. По умолчанию в схеме приемника будет создана временная таблица в качестве промежуточной. Кроме того, можно отменить выбор параметра Использовать схему приемника и вместо этого указать в параметре Выбрать схему базы данных пользователя имя схемы, с которым Фабрика данных создаст промежуточную таблицу для загрузки вышестоящих данных и автоматической их очистки после завершения. Убедитесь, что у вас есть разрешение на создание таблицы в базе данных и разрешение на изменение для схемы.

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

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

Снимок экрана: скрипты SQL предобработки и постобработки в потоке данных Azure Synapse Analytics.

Совет

  1. Рекомендуется разбивать пакетные скрипты с несколькими командами на несколько пакетов.
  2. В качестве части пакета могут выполняться только инструкции языка описания данных DDL и языка обработки данных DML, возвращающие простой счетчик обновлений. Узнайте больше о выполнении пакетных операций.

Обработка строк ошибок

При записи в Azure Synapse Analytics может произойти сбой некоторых строк вследствие ограничений, установленных назначением. Ниже перечислены некоторые распространенные ошибки.

  • Символьные и двоичные данные могут усекаться в таблице.
  • Не удалось вставить значение NULL в столбец.
  • Ошибка преобразования значения в тип данных.

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

Фиксация транзакции: выберите вариант записи данных — в отдельной транзакции или пакетами. При использовании отдельной транзакции производительность будет выше, однако записанные данные не будут видны другим пользователям до тех пор, пока не завершится транзакция. У пакетных транзакций производительность ниже, но они подходят для больших наборов данных.

Выходные отклоненные данные. Если этот параметр включен, строки с ошибками можно вывести в CSV-файл в Хранилище BLOB-объектов Azure или в учетную запись Azure Data Lake Storage 2-го поколения на ваш выбор. При этом строки с ошибками будут записаны с тремя дополнительными столбцами: операции SQL, например INSERT или UPDATE, код ошибки потока данных и сообщение об ошибке в строке.

Сообщать об успешном выполнении при ошибке. Если этот параметр включен, поток данных будет помечен как успешно выполненный даже при обнаружении строк с ошибками.

Схема, показывающая обработку строк ошибки в преобразовании приемника потока данных сопоставления.

Свойства действия поиска

Подробные сведения об этих свойствах см. в разделе Действие поиска.

Свойства действия GetMetadata

Подробные сведения об этих свойствах см. в статье Действие GetMetadata.

Сопоставление типов данных для Azure Synapse Analytics

При копировании данных в Azure Synapse Analytics и обратно используются следующие сопоставления между типами данных Azure Synapse Analytics и промежуточными типами данных Фабрики данных Azure. Эти сопоставления также используются при копировании данных из Azure Synapse Analytics или в эту службу с помощью конвейеров Synapse, так как конвейеры также реализуют фабрику данных Azure в Azure Synapse. Дополнительные сведения о том, как действие копирования сопоставляет исходную схему и типы данных для приемника, см. в статье Сопоставление схем в действии копирования.

Совет

Поддерживаемые типы Azure Synapse Analytics и обходные пути для неподдерживаемых типов см. в статье Типы данных таблиц в Azure Synapse Analytics.

Тип данных Azure Synapse Analytics Тип промежуточных данных фабрики данных
bigint Int64
binary Byte[]
bit Логический
char String, Char[]
Дата DateTime
Datetime DateTime
datetime2 Дата/время
Datetimeoffset DateTimeOffset
Десятичное число Десятичное число
FILESTREAM attribute (varbinary(max)) Byte[]
Тип с плавающей запятой Двойной
Изображение Byte[]
INT Int32
money Десятичное число
nchar String, Char[]
numeric Десятичное число
nvarchar String, Char[]
real Одна
rowversion Byte[]
smalldatetime Дата/время
smallint Int16
smallmoney Десятичное число
Время TimeSpan
tinyint Байт
uniqueidentifier GUID
varbinary Byte[]
varchar String, Char[]

Список хранилищ данных, которые поддерживаются в качестве источников и приемников для действия копирования, приведен в таблице Поддерживаемые хранилища данных и форматы.