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

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

Совет

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

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

Совет

Дополнительные сведения о сценарии переноса данных из Netezza в Azure см. в статье Перенос данных с локального сервера Netezza в Azure.

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

Соединитель Netezza поддерживается для следующих возможностей:

Поддерживаемые возможности IR
Действие копирования (источник/-) ① ②
Действие поиска ① ②

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

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

Соединитель Netezza поддерживает параллельное копирование из источника. Дополнительные сведения см. в разделе Параллельное копирование из Netezza.

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

Необходимые компоненты

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

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

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

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

Начать

Конвейер можно создать с помощью действия копирования и пакета SDK для .NET, пакета SDK для Python, Azure PowerShell, REST API либо шаблона Azure Resource Manager. Пошаговые инструкции по созданию конвейера с действием copy см. в учебнике по действию Copy.

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

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

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

  2. Выполните поиск Netezza и выберите соединитель Netezza.

    Screenshot of the Netezza connector.

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

    Screenshot of linked service configuration for Netezza.

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

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

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

Для связанной службы Netezza поддерживаются следующие свойства.

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

Типичная строка подключения — Server=<server>;Port=<port>;Database=<database>;UID=<user name>;PWD=<password>. В следующей таблице описаны дополнительные свойства, которые можно задать.

Свойство Описание: Обязательное поле
SecurityLevel Уровень безопасности, который драйвер использует для подключения к хранилищу данных. Драйвер поддерживает SSL-подключения с односторонней проверкой подлинности по протоколу SSL версии 3.
Пример: SecurityLevel=preferredSecured. Поддерживаются значения:
- Только незащищенный (onlyUnSecured): драйвер не использует SSL.
- Предпочтительно незащищенный (preferredUnSecured) (по умолчанию): если сервер предоставляет возможность выбора, драйвер не использует SSL.
- Предпочтительно защищенный (preferredSecured): если сервер предоставляет возможность выбора, драйвер использует SSL.
- Только защищенный (onlySecured): драйвер не подключается, если SSL-подключение недоступно.
No
CaCertFile Полный путь к SSL-сертификату, используемому сервером. Пример: CaCertFile=<cert path>; Да, если протокол SSL включен

Пример

{
    "name": "NetezzaLinkedService",
    "properties": {
        "type": "Netezza",
        "typeProperties": {
            "connectionString": "Server=<server>;Port=<port>;Database=<database>;UID=<user name>;PWD=<password>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Пример: хранение пароля в Azure Key Vault

{
    "name": "NetezzaLinkedService",
    "properties": {
        "type": "Netezza",
        "typeProperties": {
            "connectionString": "Server=<server>;Port=<port>;Database=<database>;UID=<user name>;",
            "pwd": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

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

Этот раздел содержит список свойств, поддерживаемых набором данных Netezza.

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

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

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

Пример

{
    "name": "NetezzaDataset",
    "properties": {
        "type": "NetezzaTable",
        "linkedServiceName": {
            "referenceName": "<Netezza linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {}
    }
}

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

Этот раздел содержит список свойств, поддерживаемых источником Netezza.

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

Netezza в качестве источника

Совет

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

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

Свойство Описание: Обязательное поле
type Свойство type источника действия копирования должно иметь значение NetezzaSource. Да
query Используйте пользовательский SQL-запрос для чтения данных. Пример: "SELECT * FROM MyTable" Нет (если для набора данных задано свойство tableName)
partitionOptions Задает параметры секционирования данных, используемые для загрузки данных из Netezza.
Допустимые значения: None (по умолчанию), DataSlice и DynamicRange.
Если параметр секционирования включен (любое значение кроме None), степень параллелизма для параллельной загрузки данных из базы данных Netezza управляется параметром parallelCopies в действии копирования.
No
partitionSettings Позволяет указать группу параметров для секционирования данных.
Применяется, если параметр секционирования имеет значение, отличное от None.
No
partitionColumnName Укажите имя исходного столбца целочисленного типа, который будет использоваться для секционирования по диапазонам при параллельном копировании. Если значение не указано, автоматически определяется первичный ключ таблицы и используется в качестве столбца секционирования.
Применяется, если параметр секции имеет значение DynamicRange. Если для получения исходных данных используется запрос, подключите ?AdfRangePartitionColumnName в предложении WHERE. Пример см. в разделе Параллельное копирование из Netezza.
No
partitionUpperBound Максимальное значение столбца секционирования для копирования данных.
Применяется, если параметр секционирования имеет значение DynamicRange. Если для получения исходных данных используется запрос, подключите ?AdfRangePartitionUpbound в предложении WHERE. Пример можно найти в разделе Параллельное копирование из Netezza.
No
partitionLowerBound Минимальное значение столбца секционирования для копирования данных.
Применяется, если параметр секции имеет значение DynamicRange. Если для получения исходных данных используется запрос, подключите ?AdfRangePartitionLowbound в предложении WHERE. Пример можно найти в разделе Параллельное копирование из Netezza.
No

Пример:

"activities":[
    {
        "name": "CopyFromNetezza",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Netezza input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "NetezzaSource",
                "query": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Параллельное копирование из Netezza

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

Screenshot of partition options

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

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

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

Во время выполнения служба автоматически секционирует данные по встроенным срезам данных Netezza и копирует данные отдельно для каждой секции.
Для загрузки больших объемов данных используйте пользовательский запрос. Параметр секции: срез данных.
Запрос: SELECT * FROM <TABLENAME> WHERE mod(datasliceid, ?AdfPartitionCount) = ?AdfDataSliceCondition AND <your_additional_where_clause>.
Во время выполнения служба заменяет ?AdfPartitionCount (количеством параллельных операций копирования для действия копирования) и ?AdfDataSliceCondition значениями из логики секционирования для среза данных, а затем отправляет эти значения в Netezza.
Для загрузки большого объема данных используйте пользовательский запрос с целочисленным столбцом, значения которого распределены равномерно для поддержки секционирования по диапазонам. Параметры секции: секция динамического диапазона.
Запрос: SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>.
Столбец секционирования: укажите столбец, используемый для секционирования данных. Секционирование можно выполнять по столбцу с целочисленным типом данных.
Верхняя граница секции и нижняя граница секции. Укажите, следует ли фильтровать столбец секции только между нижним и верхним диапазоном.

Во время выполнения служба заменяет ?AdfRangePartitionColumnName, ?AdfRangePartitionUpbound и ?AdfRangePartitionLowbound фактическими значениями именем столбца и диапазонами значений для каждой секции, а затем отправляет их в Netezza.
Например, если указан столбец секционирования ID с нижней границей 1 и верхней границей 80 при этом для параллельного копирования указано значение 4, служба будет извлекать данные по 4 секциям. Для них будут применены следующие диапазоны значений идентификаторов: [1, 20], [21, 40], [41, 60] и [61, 80].

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

"source": {
    "type": "NetezzaSource",
    "query": "SELECT * FROM <TABLENAME> WHERE mod(datasliceid, ?AdfPartitionCount) = ?AdfDataSliceCondition AND <your_additional_where_clause>",
    "partitionOption": "DataSlice"
}

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

"source": {
    "type": "NetezzaSource",
    "query": "SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>",
    "partitionOption": "DynamicRange",
    "partitionSettings": {
        "partitionColumnName": "<dynamic_range_partition_column_name>",
        "partitionUpperBound": "<upper_value_of_partition_column>",
        "partitionLowerBound": "<lower_value_of_partition_column>"
    }
}

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

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

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