Копирование данных в табличное хранилище 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
- Пакет SDK для .NET
- Пакет SDK для Python
- Azure PowerShell
- The REST API
- шаблон Azure Resource Manager.
Создание связанной службы хранилища таблиц Azure с помощью пользовательского интерфейса
Следуйте приведенным ниже инструкциям, чтобы создать связанную службу хранилища таблиц Azure с помощью пользовательского интерфейса портала Azure.
Перейдите на вкладку "Управление" в рабочей области Фабрики данных Azure или Synapse и выберите "Связанные службы", после чего нажмите "Создать":
Найдите таблицу Azure и выберите соединитель хранилища таблиц Azure.
Настройте сведения о службе, проверьте подключение и создайте связанную службу.
Сведения о конфигурации соединителя
В следующих разделах детально описываются свойства, которые используются для определения сущностей, характерных для хранилища таблиц 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>&st=<start time>&se=<expire time>&sr=<resource>&sp=<permissions>&sip=<ip range>&spr=<protocol>&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 КБ. |
Свойства действия поиска
Подробные сведения об этих свойствах см. в разделе Действие поиска.
Связанный контент
Список хранилищ данных, поддерживаемых в рамках функции копирования в качестве источников и приемников, см. в разделе Поддерживаемые хранилища данных.