Копирование данных из MongoDB с помощью Фабрики данных Azure или Synapse Analytics (устаревшая версия)
ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics
Совет
Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !
В этой статье описывается, как с помощью действия Copy в конвейере Фабрики данных Azure или Azure Synapse Analytics копировать данные из базы данных MongoDB. Это продолжение статьи об обзоре действия копирования, в которой представлены общие сведения о действии копирования.
Внимание
Служба выпускает новый соединитель MongoDB, который обеспечивает лучшую собственную поддержку MongoDB по сравнению с этой реализацией на основе ODBC. Дополнительные сведения см. в статье Соединитель MongoDB.
Поддерживаемые возможности
Данные из базы данных MongoDB можно скопировать в любое хранилище данных, поддерживаемое в качестве приемника. Список хранилищ данных, которые поддерживаются в качестве источников и приемников для действия копирования, приведен в таблице Поддерживаемые хранилища данных и форматы.
В частности, этот соединитель MongoDB поддерживает:
- MongoDB версий 2.4, 2.6, 3.0, 3.2, 3.4 и 3.6.
- Копирование данных с использованием базовой или анонимной проверки подлинности.
Необходимые компоненты
Если хранилище данных размещено в локальной сети, виртуальной сети Azure или виртуальном частном облаке Amazon, для подключения к нему нужно настроить локальную среду выполнения интеграции.
Если же хранилище данных представляет собой управляемую облачную службу данных, можно использовать Azure Integration Runtime. Если доступ предоставляется только по IP-адресам, утвержденным в правилах брандмауэра, вы можете добавить IP-адреса Azure Integration Runtime в список разрешений.
Вы также можете использовать функцию среды выполнения интеграции в управляемой виртуальной сети в Фабрике данных Azure для доступа к локальной сети без установки и настройки локальной среды выполнения интеграции.
Дополнительные сведения о вариантах и механизмах обеспечения сетевой безопасности, поддерживаемых Фабрикой данных, см. в статье Стратегии получения доступа к данным.
Среда выполнения интеграции предоставляет встроенный драйвер MongoDB, поэтому при копировании данных из MongoDB вам не потребуется устанавливать драйвер вручную.
Начало работы
Чтобы выполнить действие копирования с конвейером, можно воспользоваться одним из приведенных ниже средств или пакетов SDK:
- средство копирования данных;
- Портал Azure
- Пакет SDK для .NET
- Пакет SDK для Python
- Azure PowerShell
- The REST API
- шаблон Azure Resource Manager.
Создание связанной службы для MongoDB с помощью пользовательского интерфейса
Выполните приведенные ниже действия, чтобы создать связанную службу для MongoDB с помощью пользовательского интерфейса на портале Azure.
Перейдите на вкладку "Управление" в рабочей области Фабрики данных Azure или Synapse и выберите "Связанные службы", после чего нажмите "Создать":
Выполните поиск по ключевому слову “Mongo” и выберите соединитель MongoDB.
Настройте сведения о службе, проверьте подключение и создайте связанную службу.
Сведения о конфигурации соединителя
Следующие разделы содержат сведения о свойствах JSON, которые используются для определения сущностей фабрики данных, относящихся к соединителю MongoDB.
Свойства связанной службы
Для связанной службы MongoDB поддерживаются следующие свойства:
Свойство | Описание: | Обязательное поле |
---|---|---|
type | Для свойства type необходимо задать значение MongoDB | Да |
server | IP-адрес или имя узла сервера MongoDB | Да |
port | TCP-порт, используемый сервером MongoDB для прослушивания клиентских подключений | Нет (значение по умолчанию — 27017) |
databaseName | Имя базы данных MongoDB, к которой необходимо получить доступ | Да |
authenticationType | Тип проверки подлинности, используемый для подключения к базе данных MongoDB. Допустимые значения: Базовый, Анонимный. |
Да |
username | Учетная запись пользователя для доступа к MongoDB | Да (если используется обычная проверка подлинности) |
password | Пароль для пользователя Пометьте это поле как SecureString, чтобы безопасно хранить его, или добавьте ссылку на секрет, хранящийся в Azure Key Vault. | Да (если используется обычная проверка подлинности) |
authSource | Имя базы данных MongoDB, которое будет использоваться для проверки учетных данных при проверке подлинности | № Для обычной проверки подлинности по умолчанию используется учетная запись администратора и база данных, указанная с помощью свойства databaseName |
enableSsl | Указывает, шифруются ли подключения к серверу с помощью протокола TLS. По умолчанию используется значение false. | No |
allowSelfSignedServerCert | Указывает, следует ли разрешить использование самозаверяющих сертификатов с сервера. По умолчанию используется значение false. | No |
connectVia | Среда выполнения интеграции, используемая для подключения к хранилищу данных. Дополнительные сведения см. в разделе Предварительные условия. Если не указано другое, по умолчанию используется интегрированная среда выполнения Azure. | No |
Пример:
{
"name": "MongoDBLinkedService",
"properties": {
"type": "MongoDb",
"typeProperties": {
"server": "<server name>",
"databaseName": "<database name>",
"authenticationType": "Basic",
"username": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Свойства набора данных
Полный список разделов и свойств, используемых для определения наборов данных, приведен в статье Наборы данных и связанные службы в фабрике данных Azure. Набор данных MongoDB поддерживает следующие свойства.
Свойство | Описание: | Обязательное поле |
---|---|---|
type | Свойство type должно иметь значение MongoDbCollection. | Да |
collectionName | Имя коллекции в базе данных MongoDB | Да |
Пример:
{
"name": "MongoDbDataset",
"properties": {
"type": "MongoDbCollection",
"linkedServiceName": {
"referenceName": "<MongoDB linked service name>",
"type": "LinkedServiceReference"
},
"typeProperties": {
"collectionName": "<Collection name>"
}
}
}
Свойства действия копирования
Полный список разделов и свойств, используемых для определения действий, см. в статье Конвейеры и действия в фабрике данных Azure. Этот раздел содержит список свойств, поддерживаемых источником MongoDB.
MongoDB в качестве источника
В разделе source действия копирования поддерживаются следующие свойства:
Свойство | Описание: | Обязательное поле |
---|---|---|
type | Свойство type источника действия копирования должно иметь значение MongoDbSource. | Да |
query | Используйте пользовательский запрос SQL-92 для чтения данных. Например, select * from MyTable. | Нет (если в наборе данных указано значение collectionName). |
Пример:
"activities":[
{
"name": "CopyFromMongoDB",
"type": "Copy",
"inputs": [
{
"referenceName": "<MongoDB input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "MongoDbSource",
"query": "SELECT * FROM MyTable"
},
"sink": {
"type": "<sink type>"
}
}
}
]
Совет
При указании запроса SQL обратите внимание на формат даты и времени. например SELECT * FROM Account WHERE LastModifiedDate >= '2018-06-01' AND LastModifiedDate < '2018-06-02'
, или используйте параметр SELECT * FROM Account WHERE LastModifiedDate >= '@{formatDateTime(pipeline().parameters.StartTime,'yyyy-MM-dd HH:mm:ss')}' AND LastModifiedDate < '@{formatDateTime(pipeline().parameters.EndTime,'yyyy-MM-dd HH:mm:ss')}'
Схема фабрики данных
Служба фабрики данных Azure определяет схему для коллекции MongoDB, используя последние 100 документов в коллекции. Если эти 100 документов не содержат полной схемы, во время копирования некоторые столбцы могут игнорироваться.
Сопоставление типов данных для MongoDB
При копировании данных из MongoDB используются следующие сопоставления типов данных MongoDB с промежуточными типами данных, используемыми службой для внутренних целей. Дополнительные сведения о том, как действие копирования сопоставляет исходную схему и типы данных для приемника, см. в статье Сопоставление схем в действии копирования.
Тип данных MongoDB | Промежуточный тип данных службы |
---|---|
Binary | Byte[] |
Логический | Логическое |
Дата | Дата/время |
NumberDouble | Двойной |
NumberInt | Int32 |
NumberLong | Int64 |
ObjectID | Строка |
Строка | Строка |
UUID | GUID |
Object | Преобразованный в плоские столбцы с "_" в качестве вложенного разделителя |
Примечание.
Дополнительные сведения о поддержке массивов с помощью виртуальных таблиц см. в разделе Поддержка сложных типов с помощью виртуальных таблиц.
В настоящее время не поддерживаются следующие типы MongoDB: DBPointer, JavaScript, мин. и макс. значение ключей, регулярное выражение, символ, метка времени, не определенный.
Поддержка сложных типов с помощью виртуальных таблиц
В службе используется встроенный драйвер ODBC, который позволяет подключаться к базе данных MongoDB и копировать из нее данные. Для сложных типов, таких как массивы или объекты с различными типами данных в документах, драйвер ренормализует данные в соответствующие виртуальные таблицы. В частности, если таблица содержит такие столбцы, драйвер создает следующие виртуальные таблицы.
- Базовая таблица, в которой содержатся те же данные, что и в исходной таблице, кроме столбцов сложного типа. Имена базовой таблицы и таблицы, которую она представляет, совпадают.
- Виртуальная таблица для каждого столбца сложного типа, в которой представлены вложенные данные в развернутом виде. Виртуальным таблицам присваиваются имена в следующем формате: имя исходной таблицы, разделитель "_", имя массива или объекта.
Виртуальные таблицы ссылаются на данные в исходной таблице, что позволяет драйверу подключаться к денормализованным данным. Доступ к содержимому массивов MongoDB можно получить при помощи отправки запроса и соединения виртуальных таблиц.
Пример
Например, ExampleTable здесь — таблица MongoDB с одним столбцом с массивом объектов в каждой ячейке — Счета и один столбец с массивом скалярных типов — Рейтинги.
_id | Название клиента | Счета | Уровень обслуживания | Рейтинги |
---|---|---|---|---|
1111 | ABC | [{счет_№: "123", товар: "тостер", цена: "456", скидка: "0,2"}, {счет_№: "124", товар: "печь", цена: "1235", скидка: "0,2"}] | Серебряная | [5,6] |
2222 | XYZ | [{счет_№: "135", товар: "холодильник", цена: "12543", скидка: "0,0"}] | Золотая | [1,2] |
Для представления такой одной таблицы драйвер создает несколько виртуальных таблиц. В примере приведена первая базовая виртуальная таблица ExampleTable. Базовая таблица содержит все данные из исходной таблицы, но данные массивов опущены и развернуты в виртуальных таблицах.
_id | Название клиента | Уровень обслуживания |
---|---|---|
1111 | ABC | Серебряная |
2222 | XYZ | Золотая |
В следующих таблицах представлены виртуальные таблицы, соответствующие исходным массивам в примере. Каждая из этих таблиц содержит следующее:
- обратную ссылку на исходный ключевой столбец, соответствующий строке исходного массива (с помощью столбца _№);
- указание на позицию данных в исходном массиве;
- развернутые данные для каждого элемента в массиве.
Таблица ExampleTable_Invoices:
_id | ExampleTable_Invoices_dim1_idx | счет_№ | элемент | цена | Discount |
---|---|---|---|---|---|
1111 | 0 | 123 | тостер | 456 | 0,2 |
1111 | 1 | 124 | печь | 1235 | 0,2 |
2222 | 0 | 135 | холодильник | 12543 | 0,0 |
Таблица ExampleTable_Ratings:
_id | ExampleTable_Ratings_dim1_idx | ExampleTable_Ratings |
---|---|---|
1111 | 0 | 5 |
1111 | 1 | 6 |
2222 | 0 | 1 |
2222 | 1 | 2 |
Связанный контент
Список хранилищ данных, которые поддерживаются в качестве источников и приемников для действия Copy, приведен в таблице Поддерживаемые хранилища данных и форматы.