Copiare dati da Netezza usando Azure Data Factory o Synapse Analytics

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi all-in-one per le aziende. Microsoft Fabric copre tutto, dallo spostamento dati al data science, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Vedere le informazioni su come iniziare una nuova prova gratuita!

Questo articolo illustra come usare l'attività di copia nelle pipeline di Azure Data Factory o Synapse Analytics per copiare dati da Netezza. L'articolo è basato su Attività Copy, dove viene presentata una panoramica generale dell'attività Copy.

Suggerimento

Per lo scenario di migrazione dei dati da Netezza ad Azure, vedere Eseguire la migrazione dei dati dal server Netezza locale ad Azure.

Funzionalità supportate

Il connettore Netezza è supportato per le abilità seguenti:

Funzionalità supportate IR
Attività Copy (origine/-) ① ②
Attività Lookup ① ②

① Azure Integration Runtime ② Runtime di integrazione self-hosted

Per un elenco degli archivi dati supportati dall'attività di copia come origini e sink, vedere Archivi dati e formati supportati.

Il connettore Netezza supporta la copia parallela dall'origine. Per informazioni dettagliate, vedere la sezione Copia parallela da Netezza.

Il servizio fornisce un driver predefinito per abilitare la connettività. Non è pertanto necessario installare manualmente un driver per usare questo connettore.

Prerequisiti

Se l'archivio dati si trova all'interno di una rete locale, una rete virtuale di Azure o un cloud privato virtuale di Amazon, è necessario configurare un runtime di integrazione self-hosted per connettersi.

Se l'archivio dati è un servizio dati del cloud gestito, è possibile usare Azure Integration Runtime. Se l'accesso è limitato solo agli indirizzi IP approvati nelle regole del firewall, è possibile aggiungere IP di Azure Integration Runtime nell'elenco Consentiti.

È anche possibile usare la funzionalitàruntime di integrazione della rete virtuale gestita in Azure Data Factory per accedere alla rete locale senza installare e configurare un runtime di integrazione self-hosted.

Per altre informazioni sui meccanismi di sicurezza di rete e sulle opzioni supportate da Data Factory, vedere strategie di accesso ai dati.

Operazioni preliminari

È possibile creare una pipeline che usa un'attività di copia tramite .NET SDK, Python SDK, Azure PowerShell, l'API REST o un modello di Azure Resource Manager. Per istruzioni dettagliate su come creare una pipeline con un'attività di copia, vedere l'esercitazione sull'attività di copia.

Creare un servizio collegato a Netezza usando l'interfaccia utente

Usare la procedura seguente per creare un servizio collegato a Netezza nell'interfaccia utente del portale di Azure.

  1. Passare alla scheda Gestisci nell'area di lavoro di Azure Data Factory o Synapse e selezionare Servizi collegati, quindi fare clic su Nuovo:

  2. Cercare Netezza e selezionare il connettore Netezza.

    Screenshot del connettore Netezza.

  3. Configurare i dettagli del servizio, testare la connessione e creare il nuovo servizio collegato.

    Screenshot della configurazione del servizio collegato per Netezza.

Dettagli di configurazione del connettore

Le sezioni seguenti forniscono informazioni dettagliate sulle proprietà che è possibile usare per definire entità specifiche del connettore Netezza.

Proprietà del servizio collegato

Per il servizio collegato Netezza sono supportate le proprietà seguenti:

Proprietà Descrizione Richiesto
type La proprietà type deve essere impostata su Netezza.
connectionString Stringa di connessione ODBC per la connessione a Netezza.
È anche possibile inserire la password in Azure Key Vault ed eseguire lo spostamento forzato dei dati della configurazione pwd all'esterno della stringa di connessione. Vedere gli esempi seguenti e l'articolo Archiviare le credenziali in Azure Key Vault per altri dettagli.
connectVia Runtime di integrazione da usare per la connessione all'archivio dati. Per altre informazioni, vedere la sezione Prerequisiti. Se questa proprietà non è specificata, viene usato il tipo Azure Integration Runtime predefinito. No

Una stringa di connessione tipica è Server=<server>;Port=<port>;Database=<database>;UID=<user name>;PWD=<password>. La tabella seguente descrive altre proprietà che è possibile impostare:

Proprietà Descrizione Richiesto
SecurityLevel Il livello di sicurezza che usa il driver per la connessione all'archivio dati.
Esempio: SecurityLevel=preferredUnSecured. I valori supportati sono:
- Solo senza protezione (onlyUnSecured): il driver non usa SSL.
- Preferibilmente senza protezione (preferredUnSecured) - Valore predefinito: se il server consente di scegliere, il driver non usa SSL.
No

Esempio

{
    "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"
        }
    }
}

Esempio: archiviare la password in 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"
        }
    }
}

Proprietà del set di dati

Questa sezione presenta un elenco delle proprietà supportate dal set di dati Netezza.

Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione di set di dati, vedere l'articolo Set di dati.

Per copiare dati da Netezza, impostare la proprietà type del set di dati su NetezzaTable. Sono supportate le proprietà seguenti:

Proprietà Descrizione Richiesto
type La proprietà type del set di dati deve essere impostata su: NetezzaTable
schema Nome dello schema. No (se nell'origine dell'attività è specificato "query")
table Nome della tabella. No (se nell'origine dell'attività è specificato "query")
tableName Nome della tabella con schema. Questa proprietà è supportata per garantire la compatibilità con le versioni precedenti. Per i nuovi carichi di lavoro, usare schema e table. No (se nell'origine dell'attività è specificato "query")

Esempio

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

Proprietà dell'attività di copia

Questa sezione presenta un elenco delle proprietà supportate dall'origine Netezza.

Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione delle attività, vedere Pipeline.

Netezza come origine

Suggerimento

Per caricare i dati da Netezza in modo efficiente usando il partizionamento dei dati, vedere la sezione Copia parallela da Netezza.

Per copiare dati da Netezza, impostare il tipo di origine nell'attività di copia su NetezzaSource. Nella sezione source dell'attività di copia sono supportate le proprietà seguenti:

Proprietà Descrizione Richiesto
type La proprietà type dell'origine dell'attività di copia deve essere impostata su NetezzaSource.
query Usare la query SQL personalizzata per leggere i dati. Esempio: "SELECT * FROM MyTable" No (se nel set di dati è specificato "tableName")
partitionOptions Specifica le opzioni di partizionamento dei dati usate per caricare dati da Netezza.
I valori consentiti sono: Nessuno (impostazione predefinita), DataSlicee DynamicRange.
Quando è abilitata un'opzione di partizione (diversa da None), il grado di parallelismo per caricare simultaneamente i dati da un database di Netezza è controllato dall'impostazione parallelCopies nell'attività di copia.
No
partitionSettings Specifica il gruppo di impostazioni per il partizionamento dei dati.
Si applica quando l'opzione di partizione non è None.
No
partitionColumnName Specifica il nome della colonna di origine nel tipo Integer che verrà usata dal partizionamento dell'intervallo per la copia parallela. Se non è specificata, la chiave primaria della tabella viene rilevata automaticamente e usata come colonna di partizione.
Si applica quando l'opzione di partizione è DynamicRange. Se si usa una query per recuperare i dati di origine, associare ?AdfRangePartitionColumnName nella clausola WHERE. Per un esempio, vedere la sezione Copia parallela da Netezza.
No
partitionUpperBound Valore massimo della colonna di partizione da cui copiare i dati.
Si applica quando l'opzione di partizione è DynamicRange. Se si usa una query per recuperare i dati di origine, associare ?AdfRangePartitionUpbound nella clausola WHERE. Per un esempio, vedere la sezione Copia parallela da Netezza.
No
partitionLowerBound Valore minimo della colonna di partizione da cui copiare i dati.
Si applica quando l'opzione di partizione è DynamicRange. Se si usa una query per recuperare i dati di origine, associare ?AdfRangePartitionLowbound nella clausola WHERE. Per un esempio, vedere la sezione Copia parallela da Netezza.
No

Esempio:

"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>"
            }
        }
    }
]

Copia parallela da Netezza

Il connettore Data Factory Netezza fornisce il partizionamento dei dati predefinito per copiare dati da Netezza in parallelo. È possibile trovare le opzioni di partizionamento dei dati nella tabella Origine dell'attività di copia.

Screenshot delle opzioni di partizione

Quando si abilita la copia partizionata, il servizio esegue query parallele sull'origine Netezza per caricare i dati in base alle partizioni. Il grado di parallelismo è controllato dall'impostazione parallelCopies sull'attività di copia. Se, ad esempio, si imposta parallelCopies su quattro, il servizio genera ed esegue quattro query in base all'opzione di partizione specificata e alle impostazioni e ogni query recupera una porzione di dati dal database Netezza.

Si consiglia di abilitare la copia parallela con il partizionamento dei dati, specialmente quando si caricano grandi quantità di dati dal database di Netezza. Di seguito sono riportate le configurazioni consigliate per i diversi scenari: Quando si copiano dati in un archivio dati basato su file, viene riordinata la scrittura in una cartella come più file con solo il nome della cartella specificato, nel qual caso le prestazioni sono migliori rispetto alla scrittura in un singolo file.

Scenario Impostazioni consigliate
Caricamento completo da una tabella di grandi dimensioni. Opzionedi partizione: Sezione dati.

Durante l'esecuzione, il servizio partiziona automaticamente i dati in base alle sezioni di dati predefinite di Netezza e copia i dati in base alle partizioni.
Caricare grandi quantità di dati tramite una query personalizzata. Opzionedi partizione: Sezione dati.
Query: SELECT * FROM <TABLENAME> WHERE mod(datasliceid, ?AdfPartitionCount) = ?AdfDataSliceCondition AND <your_additional_where_clause>.
Durante l'esecuzione, il servizio sostituisce ?AdfPartitionCount (con il numero di copia parallelo impostato sull'attività di copia) e ?AdfDataSliceCondition con la logica della partizione della sezione dei dati ed effettua l'invio a Netezza.
Caricare grandi quantità di dati tramite una query personalizzata, con una colonna di tipo integer con un valore distribuito uniformemente per il partizionamento dell'intervallo. Opzioni di partizione: partizione a intervalli dinamici.
Query: SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>.
Colonna di partizione: specificare la colonna usata per il partizionamento dei dati. È possibile partizionare la colonna con il tipo di dati Integer.
Limite superiore della partizione e limite inferiore della partizione: specificare se si desidera filtrare in base alla colonna di partizione per recuperare i dati solo tra l'intervallo inferiore e quello superiore.

Durante l'esecuzione, il servizio sostituisce ?AdfRangePartitionColumnName, ?AdfRangePartitionUpbound e ?AdfRangePartitionLowbound con il nome della colonna e gli intervalli di valori effettivi per ogni partizione e li invia a Netezza.
Ad esempio, se la colonna di partizione "ID" è impostata con un limite inferiore di 1 e un limite superiore di 80 con la copia parallela impostata su 4, il servizio recupera i dati di 4 partizioni. Gli ID sono rispettivamente compresi tra [1, 20], [21, 40], [41, 60] e [61, 80].

Esempio: query con partizione di sezione dati

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

Esempio: query con partizione a intervalli dinamici

"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>"
    }
}

Proprietà dell'attività Lookup

Per altre informazioni sulle proprietà, vedere Attività Lookup.

Per un elenco degli archivi dati supportati dall'attività di copia come origini e sink, vedere Archivi dati e formati supportati.