Modello da SQL Server a BigQuery

Il modello da SQL Server a BigQuery è una pipeline batch che copia i dati da una tabella SQL Server a una tabella BigQuery esistente. Questa pipeline utilizza JDBC per la connessione a SQL Server. Per un ulteriore livello di protezione, puoi anche passare una chiave Cloud KMS insieme a nome utente, password e parametri della stringa di connessione codificati in Base64 e criptati con la chiave Cloud KMS. Per saperne di più sulla crittografia di nome utente, password e parametri della stringa di connessione, consulta l'endpoint di crittografia dell'API Cloud KMS.

Requisiti della pipeline

  • La tabella BigQuery deve esistere prima dell'esecuzione della pipeline.
  • La tabella BigQuery deve avere uno schema compatibile.
  • Il database relazionale deve essere accessibile dalla subnet in cui viene eseguito Dataflow.

Parametri del modello

Parametro Descrizione
connectionURL La stringa dell'URL di connessione JDBC. Ad esempio, jdbc:sqlserver://some-host:port-number/sampledb. Puoi passare questo valore come stringa criptata con una chiave Cloud KMS e poi codificata in Base64. Rimuovi gli spazi vuoti dalla stringa codificata in Base64. Per maggiori informazioni, consulta Creazione dell'URL di connessione nei tutorial di SQL Server.
outputTable La posizione della tabella di output BigQuery, nel formato <my-project>:<my-dataset>.<my-table>.
bigQueryLoadingTemporaryDirectory La directory temporanea per il processo di caricamento di BigQuery. Ad esempio, gs://<my-bucket>/my-files/temp_dir.
query La query da eseguire sull'origine per estrarre i dati. Ad esempio, select * from sampledb.sample_table. Obbligatorio se non vengono utilizzate le partizioni.
table La tabella da cui estrarre i dati. Questo parametro accetta anche una sottoquery tra parentesi. Ad esempio, Person o (select id, name from Person) as subq. Obbligatorio quando si utilizzano le partizioni.
partitionColumn Il nome di una colonna da utilizzare per il partizionamento. Sono supportate solo colonne numeriche. Obbligatorio quando si utilizzano le partizioni.
connectionProperties Facoltativo: la stringa delle proprietà da utilizzare per la connessione JDBC. Il formato della stringa deve essere [propertyName=property;]*. Ad esempio, authentication=ActiveDirectoryIntegrated;domainName=DOMAIN. Per ulteriori informazioni, consulta le proprietà nei tutorial di SQL Server.
username Facoltativo: il nome utente da utilizzare per la connessione JDBC. Puoi passare questo valore criptato da una chiave Cloud KMS come stringa con codifica Base64.
password Facoltativo: la password da utilizzare per la connessione JDBC. Puoi passare questo valore criptato da una chiave Cloud KMS come stringa con codifica Base64.
KMSEncryptionKey (Facoltativo) La chiave di crittografia di Cloud KMS da utilizzare per decriptare il nome utente, la password e la stringa di connessione. Se passi in una chiave Cloud KMS, devi criptare anche il nome utente, la password e la stringa di connessione.
numPartitions (Facoltativo) Il numero di partizioni da utilizzare. Se non specificato, il worker usa un numero conservativo.
disabledAlgorithms (Facoltativo) Algoritmi separati da virgole da disattivare. Se questo valore viene impostato su none, nessun algoritmo viene disattivato. Utilizza questo parametro con cautela, perché gli algoritmi disattivati per impostazione predefinita potrebbero presentare vulnerabilità o problemi di prestazioni. Ad esempio: SSLv3, RC4.
extraFilesToStage Percorsi Cloud Storage o secret di Secret Manager separati da virgole per i file da inserire in un'area intermedia nel worker. Questi file vengono salvati nella directory /extra_files di ciascun worker. Ad esempio, gs://<my-bucket>/file.txt,projects/<project-id>/secrets/<secret-id>/versions/<version-id>.

Esegui il modello

Console

  1. Vai alla pagina Crea job da modello di Dataflow.
  2. Vai a Crea job da modello
  3. Nel campo Nome job, inserisci un nome univoco per il job.
  4. (Facoltativo) Per Endpoint a livello di regione, seleziona un valore dal menu a discesa. La regione predefinita è us-central1.

    Per un elenco delle regioni in cui puoi eseguire un job Dataflow, vedi Località Dataflow.

  5. Nel menu a discesa Modello Dataflow, seleziona the SQL Server to BigQuery template.
  6. Nei campi dei parametri forniti, inserisci i valori dei parametri.
  7. Fai clic su Esegui job.

gcloud

Nella shell o nel terminale, esegui il modello:

gcloud dataflow flex-template run JOB_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/SQLServer_to_BigQuery \
    --parameters \
connectionURL=JDBC_CONNECTION_URL,\
query=SOURCE_SQL_QUERY,\
outputTable=PROJECT_ID:DATASET.TABLE_NAME,
bigQueryLoadingTemporaryDirectory=PATH_TO_TEMP_DIR_ON_GCS,\
connectionProperties=CONNECTION_PROPERTIES,\
username=CONNECTION_USERNAME,\
password=CONNECTION_PASSWORD,\
KMSEncryptionKey=KMS_ENCRYPTION_KEY

Sostituisci quanto segue:

  • JOB_NAME: un nome job univoco a tua scelta
  • VERSION: la versione del modello che vuoi utilizzare

    Puoi utilizzare i seguenti valori:

  • REGION_NAME: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempio us-central1
  • JDBC_CONNECTION_URL: URL di connessione JDBC
  • SOURCE_SQL_QUERY: la query SQL da eseguire sul database di origine
  • DATASET: il tuo set di dati BigQuery
  • TABLE_NAME: nome della tua tabella BigQuery
  • PATH_TO_TEMP_DIR_ON_GCS: percorso Cloud Storage della directory temporanea
  • CONNECTION_PROPERTIES: le proprietà di connessione JDBC, se necessarie
  • CONNECTION_USERNAME: il nome utente della connessione JDBC
  • CONNECTION_PASSWORD: password per la connessione JDBC
  • KMS_ENCRYPTION_KEY: la chiave di crittografia di Cloud KMS

API

Per eseguire il modello utilizzando l'API REST, invia una richiesta POST HTTP. Per maggiori informazioni sull'API e sui relativi ambiti di autorizzazione, consulta projects.templates.launch.

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
  "launchParameter": {
    "jobName": "JOB_NAME",
    "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/SQLServer_to_BigQuery"
    "parameters": {
      "connectionURL": "JDBC_CONNECTION_URL",
      "query": "SOURCE_SQL_QUERY",
      "outputTable": "PROJECT_ID:DATASET.TABLE_NAME",
      "bigQueryLoadingTemporaryDirectory": "PATH_TO_TEMP_DIR_ON_GCS",
      "connectionProperties": "CONNECTION_PROPERTIES",
      "username": "CONNECTION_USERNAME",
      "password": "CONNECTION_PASSWORD",
      "KMSEncryptionKey":"KMS_ENCRYPTION_KEY"
    },
    "environment": { "zone": "us-central1-f" }
  }
}

Sostituisci quanto segue:

  • PROJECT_ID: l'ID del progetto Google Cloud in cui vuoi eseguire il job Dataflow
  • JOB_NAME: un nome job univoco a tua scelta
  • VERSION: la versione del modello che vuoi utilizzare

    Puoi utilizzare i seguenti valori:

  • LOCATION: la regione in cui vuoi eseguire il deployment del job Dataflow, ad esempio us-central1
  • JDBC_CONNECTION_URL: URL di connessione JDBC
  • SOURCE_SQL_QUERY: la query SQL da eseguire sul database di origine
  • DATASET: il tuo set di dati BigQuery
  • TABLE_NAME: nome della tua tabella BigQuery
  • PATH_TO_TEMP_DIR_ON_GCS: percorso Cloud Storage della directory temporanea
  • CONNECTION_PROPERTIES: le proprietà di connessione JDBC, se necessarie
  • CONNECTION_USERNAME: il nome utente della connessione JDBC
  • CONNECTION_PASSWORD: password per la connessione JDBC
  • KMS_ENCRYPTION_KEY: la chiave di crittografia di Cloud KMS

Passaggi successivi