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

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

Совет

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

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

Примечание.

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

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

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

Поддерживаемые возможности IR Управляемая частная конечная точка
Действие копирования (источник/приемник) ① ② ✓ Исключение учетной записи хранения версии 1
Действие поиска ① ② ✓ Исключение учетной записи хранения версии 1

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

Можно копировать данные из любого поддерживаемого исходного хранилища данных в службу "Хранилище таблиц". Вы можете скопировать данные из службы "Хранилище таблиц" в любое хранилище данных, поддерживаемое в качестве приемника. Список хранилищ данных, которые поддерживаются в качестве источников и приемников для действия копирования, приведен в таблице Поддерживаемые хранилища данных и форматы.

В частности, соединитель таблиц Azure поддерживает копирование данных с использованием проверки подлинности на основе ключа учетной записи и подписанного URL-адреса (SAS) уровня службы.

Начать

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

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

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

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

  2. Найдите таблицу Azure и выберите соединитель хранилища таблиц Azure.

    Screenshot of the Azure Table storage connector.

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

    Screenshot of configuration for an Azure Table storage linked service.

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

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

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

Использование ключа учетной записи

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

Свойство Описание: Обязательное поле
type Для свойства type необходимо задать значение AzureTableStorage. Да
connectionString В свойстве connectionString указываются сведения, необходимые для подключения к службе хранилища.
Вы можете также поместить ключ учетной записи в Azure Key Vault и извлечь конфигурацию accountKey из строки подключения. Ознакомьтесь с приведенными ниже примерами и подробными сведениями в статье Хранение учетных данных в Azure Key Vault.
Да
connectVia Среда выполнения интеграции, используемая для подключения к хранилищу данных. Вы можете использовать среду выполнения интеграции Azure или локальную среду IR (если хранилище данных расположено в частной сети). Если не указано другое, по умолчанию используется интегрированная среда выполнения Azure. No

Примечание.

Если вы использовали связанную службу типа AzureStorage, она по-прежнему поддерживается как есть, но в дальнейшем рекомендуется использовать новый тип связанной службы — AzureTableStorage.

Пример:

{
    "name": "AzureTableStorageLinkedService",
    "properties": {
        "type": "AzureTableStorage",
        "typeProperties": {
            "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Пример: ключ учетной записи хранения в Azure Key Vault

{
    "name": "AzureTableStorageLinkedService",
    "properties": {
        "type": "AzureTableStorage",
        "typeProperties": {
            "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;",
            "accountKey": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Использование аутентификации SAS

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

Подпись общего доступа обеспечивает делегированный доступ к ресурсам в вашей учетной записи хранения. Вы можете использовать ее, чтобы предоставить ограниченное право на работу с объектами в вашей учетной записи хранения на определенный период и с определенным набором разрешений. Не нужно предоставлять совместный доступ к ключам доступа для учетной записи. Подписанный URL-адрес — это универсальный код ресурса (URI), который в своих параметрах запроса содержит все сведения, необходимые для доступа к ресурсу хранилища с прохождением аутентификации. Для доступа к ресурсам хранилища с помощью подписанного URL-адреса клиенту достаточно передать SAS в соответствующий конструктор или метод. Дополнительные сведения о подписанном URL-адресе см. в статье Использование подписанных URL-адресов (SAS).

Примечание.

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

Совет

Чтобы создать подписанный URL-адрес уровня службы для учетной записи хранения, можно выполнить следующие команды PowerShell. Замените заполнители и предоставьте необходимое разрешение. $context = New-AzStorageContext -StorageAccountName <accountName> -StorageAccountKey <accountKey> New-AzStorageContainerSASToken -Name <containerName> -Context $context -Permission rwdl -StartTime <startTime> -ExpiryTime <endTime> -FullUri

При использовании аутентификации SAS поддерживаются следующие свойства.

Свойство Описание: Обязательное поле
type Для свойства type необходимо задать значение AzureTableStorage. Да
sasUri Укажите универсальный код ресурса (URI) подписанного URL-адреса для таблицы.
Пометьте это поле как SecureString для безопасного хранения. Вы также можете поместить маркер SAS в Azure Key Vault для использования автоматической смены и удалить часть маркера. Ознакомьтесь с приведенными ниже примерами и подробными сведениями в статье Хранение учетных данных в Azure Key Vault.
Да
connectVia Среда выполнения интеграции, используемая для подключения к хранилищу данных. Вы можете использовать среду выполнения интеграции Azure или локальную среду IR (если хранилище данных расположено в частной сети). Если не указано другое, по умолчанию используется интегрированная среда выполнения Azure. No

Примечание.

Если вы использовали связанную службу типа AzureStorage, она по-прежнему поддерживается как есть, но в дальнейшем рекомендуется использовать новый тип связанной службы — AzureTableStorage.

Пример:

{
    "name": "AzureTableStorageLinkedService",
    "properties": {
        "type": "AzureTableStorage",
        "typeProperties": {
            "sasUri": {
                "type": "SecureString",
                "value": "<SAS URI of the Azure Storage resource e.g. https://<account>.table.core.windows.net/<table>?sv=<storage version>&amp;st=<start time>&amp;se=<expire time>&amp;sr=<resource>&amp;sp=<permissions>&amp;sip=<ip range>&amp;spr=<protocol>&amp;sig=<signature>>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Пример: ключ учетной записи хранения в Azure Key Vault

{
    "name": "AzureTableStorageLinkedService",
    "properties": {
        "type": "AzureTableStorage",
        "typeProperties": {
            "sasUri": {
                "type": "SecureString",
                "value": "<SAS URI of the Azure Storage resource without token e.g. https://<account>.table.core.windows.net/<table>>"
            },
            "sasToken": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

При создании URI подписанного URL-адреса необходимо учитывать следующее.

  • Задайте для объектов соответствующие разрешения на чтение или запись. Они устанавливаются с учетом назначения связанной службы (чтение, запись, чтение и запись).
  • Задайте время окончания срока действия соответствующим образом. Убедитесь, что срок действия доступа к объектам хранилища не истекает в период активности конвейера.
  • В зависимости от потребности URI следует создать на нужном уровне таблицы.

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

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

Чтобы скопировать данные в таблицу Azure или обратно, установите тип свойства набора данных AzureTable. Поддерживаются следующие свойства.

Свойство Описание: Обязательное поле
type Свойство type для набора данных должно иметь значение AzureTable. Да
tableName Имя таблицы в экземпляре базы данных службы "Хранилище таблиц", на которое ссылается связанная служба. Да

Пример:

{
    "name": "AzureTableDataset",
    "properties":
    {
        "type": "AzureTable",
        "typeProperties": {
            "tableName": "MyTable"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Azure Table storage linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Определение схемы службой

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

  • Если указать сопоставление столбцов в действии копирования, служба будет использовать список столбцов на стороне источника для получения данных. В этом случае, если строка не содержит значение столбца, ему присваивается значение NULL.
  • Если сопоставление столбцов не указано в действии копирования, то служба определяет схему, используя первую строку данных. В этом случае, если первая строка не содержит полную схему (например, некоторые столбцы содержат значение NULL), после операции копирования некоторые столбцы будут отсутствовать.

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

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

Таблица Azure в качестве типа источника

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

Свойство Описание: Обязательное поле
type Свойство type источника действия копирования должно иметь значение AzureTableSource. Да
AzureTableSourceQuery Используйте пользовательский запрос службы "Хранилище таблиц" для чтения данных.
Исходный запрос определяется прямым сопоставлением с параметром запроса $filter, который поддерживается хранилищем таблиц Azure. Дополнительные сведения о синтаксисе см. в этом документе. С примерами для azureTableSourceQuery вы можете ознакомиться в этом разделе.
No
azureTableSourceIgnoreTableNotFound Указывает, следует ли разрешить исключение, связанное с отсутствием таблицы.
Допустимые значения: true и false (по умолчанию).
No

Примеры azureTableSourceQuery

Примечание.

Время ожидания операции запроса к таблице Azure истекает через 30 секунд, как предписывает служба таблиц Azure. Сведения о том, как оптимизировать запрос, см. в статье Разработка для запросов.

Если нужно отфильтровать данные по столбцу даты и времени, см. следующий пример:

"azureTableSourceQuery": "LastModifiedTime gt datetime'2017-10-01T00:00:00' and LastModifiedTime le datetime'2017-10-02T00:00:00'"

Если нужно отфильтровать данные по столбцу строкового типа, см. следующий пример:

"azureTableSourceQuery": "LastModifiedTime ge '201710010000_0000' and LastModifiedTime le '201710010000_9999'"

При использовании параметра конвейера приведите значение даты и времени в правильный формат в соответствии с предыдущими примерами.

Таблица Azure в качестве типа приемника

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

Свойство Описание: Обязательное поле
type Свойство type приемника действия копирования должно иметь значение AzureTableSink. Да
azureTableDefaultPartitionKeyValue Значение ключа раздела по умолчанию, которое может использоваться приемником. No
azureTablePartitionKeyName Укажите имя столбца, значения которого используются в качестве ключей разделов. Если не указано, в качестве ключа раздела используется AzureTableDefaultPartitionKeyValue. No
azureTableRowKeyName Укажите имя столбца, значения которого используются в качестве ключа строки. Если имя не указано, используйте для каждой строки идентификатор GUID. No
azureTableInsertType Режим для вставки данных в таблицу Azure. Это свойство контролирует, будут ли заменены или объединены значения в существующих строках в выходной таблице с совпадающими ключами секций и строк.

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

Этот параметр применяется на уровне строк, а не на уровне таблицы. Ни один из параметров не удаляет строки выходной таблицы, которые не существуют во входной таблице. Чтобы узнать о действии этих параметров (merge и replace), ознакомьтесь со статьями Insert or Merge Entity (Вставка или слияние сущностей) и Insert or Replace Entity (Вставка или замена сущности).
No
writeBatchSize Вставляет данные в таблицу Azure при достижении writeBatchSize или writeBatchTimeout.
Допустимые значения: целое число (количество строк).
Нет (значение по умолчанию — 10 000)
writeBatchTimeout Вставляет данные в таблицу Azure при достижении writeBatchSize или writeBatchTimeout.
Допустимые значения: временной диапазон. Например, 00:20:00 (20 минут).
Нет (значение по умолчанию — 90 секунд, время ожидания клиента хранилища по умолчанию)
 maxConcurrent Подключение ions Верхний предел одновременных подключений, установленных для хранилища данных при выполнении действия. Указывайте значение только при необходимости ограничить количество одновременных подключений.  Без

Пример:

"activities":[
    {
        "name": "CopyToAzureTable",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Azure Table output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "AzureTableSink",
                "azureTablePartitionKeyName": "<column name>",
                "azureTableRowKeyName": "<column name>"
            }
        }
    }
]

azureTablePartitionKeyName

Чтобы вы могли использовать целевой столбец как azureTablePartitionKeyName, необходимо сопоставить исходный столбец с целевым столбцом с помощью свойства translator.

В следующем примере исходный столбец DivisionID сопоставляется с целевым столбцом: DivisionID.

"translator": {
    "type": "TabularTranslator",
    "columnMappings": "DivisionID: DivisionID, FirstName: FirstName, LastName: LastName"
}

DivisionID указывается в качестве ключа раздела.

"sink": {
    "type": "AzureTableSink",
    "azureTablePartitionKeyName": "DivisionID"
}

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

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

При перемещении данных в таблицу Azure или из нее выполняется преобразование типов OData таблиц Azure в тип .NET (и наоборот) на основе указанных ниже сопоставлений, определенных таблицей Azure.

Тип данных таблицы Azure Промежуточный тип данных службы Сведения
Edm.Binary byte[] Массив байтов размером до 64 КБ.
Edm.Boolean bool Значение типа Boolean.
Edm.DateTime Дата/время 64-битное значение времени, выраженное в формате UTC. Допустимый диапазон даты и времени начинается в полночь 1 января 1601 года н. э. (от Р. Х.) в часовом поясе UTC. Заканчивается диапазон 31 декабря 9999 года.
Edm.Double двойной точности 64-битное значение с плавающей запятой.
Edm.Guid GUID 128-битный идентификатор GUID.
Edm.Int32 Int32 32-битное целое число.
Edm.Int64 Int64 64-битное целое число.
Edm.String Строка Значение в кодировке UTF-16. Размер строкового значения не должен превышать 64 КБ.

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

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

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