Mappa i nomi degli oggetti SQL per la traduzione batch
Questo documento descrive come configurare la mappatura dei nomi per rinominare gli oggetti SQL durante la traduzione batch.
Panoramica
La mappatura dei nomi ti consente di identificare i nomi degli oggetti SQL nei file di origine e specificare i nomi di destinazione per questi oggetti in BigQuery. Puoi utilizzare alcuni o tutti i seguenti componenti per configurare la mappatura dei nomi per un oggetto:
- Una regola di mappatura dei nomi, composta da:
- Parti del nome della sorgente che forniscono il nome completo dell'oggetto nel sistema di origine.
- Un type che identifica il tipo dell'oggetto di origine.
- Parti del nome di destinazione che forniscono il nome dell'oggetto in BigQuery.
- Un nome di database predefinito da utilizzare con qualsiasi oggetto di origine che non ne specifica uno.
- Un nome di schema predefinito da utilizzare con qualsiasi oggetto origine che non ne specifica uno.
Parti del nome
Fornisci i valori per i nomi degli oggetti di origine e di destinazione in una regola di mappatura dei nomi utilizzando una combinazione delle seguenti parti del nome:
- Database: il livello più alto della gerarchia di denominazione. La piattaforma di origine potrebbe utilizzare un termine alternativo, ad esempio progetto.
- Schema: il secondo livello della gerarchia di denominazione. La piattaforma di origine potrebbe utilizzare un termine alternativo, ad esempio set di dati.
- Relazione: il terzo livello della gerarchia di denominazione. La piattaforma di origine potrebbe utilizzare un termine alternativo, ad esempio tabella.
- Attributo: il livello più basso della gerarchia di denominazione. La piattaforma di origine potrebbe utilizzare un termine alternativo, ad esempio colonna.
Tipi di oggetti
Devi anche specificare il tipo di oggetto di origine che stai rinominando in una regola di mappatura dei nomi. Sono supportati i seguenti tipi di oggetti:
Database: un oggetto di primo livello nella gerarchia degli oggetti, ad esempiodatabase.schema.relation.attribute. La piattaforma di origine potrebbe utilizzare un termine alternativo, ad esempio progetto. Se specifichidatabasecome tipo di oggetto, tutti i riferimenti alla stringa di origine vengono modificati nelle istruzioni DDL e DML.Schema: un oggetto di secondo livello nella gerarchia degli oggetti. La piattaforma di origine potrebbe utilizzare un termine alternativo, ad esempio set di dati. Se specifichischemacome tipo di oggetto, tutte le referenze alla stringa di origine vengono modificate nelle istruzioni DDL e DML.Relation: un oggetto di terzo livello nella gerarchia degli oggetti. La piattaforma di origine potrebbe utilizzare un termine alternativo, ad esempio tabella. Se specifichirelationcome tipo di oggetto, tutti i riferimenti alla stringa di origine nelle istruzioni DDL vengono modificati.Relation alias: Un alias per un oggetto di terzo livello. Ad esempio, nella querySELECT t.field1, t.field2 FROM myTable t;,tè un alias di relazione. Nella querySELECT field1, field2 FROM schema1.table1,table1è anche un alias relazione. Se specifichirelation aliascome tipo di oggetto, vengono creati alias per tutti i riferimenti alla stringa di origine nelle istruzioni DML. Ad esempio, setableAè specificato come nome target, gli esempi precedenti vengono tradotti comeSELECT tableA.field1, tableA.field2 FROM myTable AS tableA;eSELECT tableA.field1, tableA.field2 FROM schema1.table1 AS tableA, rispettivamente.Function: una procedura, ad esempiocreate procedure db.test.function1(a int). Se specifichifunctioncome tipo di oggetto, tutte le referenze alla stringa di origine vengono modificate nelle istruzioni DDL e DML.Attribute: un oggetto di quarto livello nella gerarchia degli oggetti. La tua piattaforma di origine potrebbe utilizzare un termine alternativo, ad esempio colonna. Se specifichiattributecome tipo di oggetto, tutti i riferimenti alla stringa di origine nelle istruzioni DDL vengono modificati.Attribute alias: un alias per un oggetto di quarto livello. Ad esempio, nella querySELECT field1 FROM myTable;,field1è un alias dell'attributo. Se specifichiattribute aliascome tipo di oggetto, tutte le referenze alla stringa di origine nelle istruzioni DML vengono modificate.
Parti del nome obbligatorie per i tipi di oggetto
Per descrivere un oggetto in una regola di mappatura dei nomi, utilizza le parti del nome identificate per ogni tipo di oggetto nella tabella seguente:
| Tipo | Nome oggetto origine | Nome oggetto di destinazione | ||||||
|---|---|---|---|---|---|---|---|---|
| Parte del nome del database | Schema name part | Relation name part (Parte del nome della relazione) | Parte del nome dell'attributo | Parte del nome del database | Schema name part | Relation name part (Parte del nome della relazione) | Parte del nome dell'attributo | |
Database |
X | X | ||||||
Schema |
X | X | X | X | ||||
Relation |
X | X | X | X | X | X | ||
Function |
X | X | X | X | X | X | ||
Attribute |
X | X | X | X | X | |||
Attribute alias |
X | X | X | X | X | |||
Relation alias |
X | X | ||||||
Database predefinito
Se vuoi aggiungere un nome di progetto BigQuery a tutti gli oggetti tradotti, la cosa più semplice da fare è specificare un nome di database predefinito quando crei un job di traduzione. Questa operazione funziona per i file di origine in cui viene utilizzato il nome in tre parti o in cui viene utilizzato il nome in quattro parti, ma il nome dell'oggetto di livello più alto non è specificato.
Ad esempio, se specifichi il nome del database predefinito myproject, un'istruzione di origine come SELECT * FROM database.table viene tradotta in SELECT * FROM myproject.database.table. Se hai oggetti che utilizzano già una parte del nome del database, ad esempio SELECT * FROM database.schema.table, devi utilizzare una regola di mappatura dei nomi per rinominare database.schema.table in myproject.schema.table.
Schema predefinito
Se vuoi qualificare completamente tutti i nomi degli oggetti nei file di origine che non utilizzano la denominazione in quattro parti, puoi fornire sia un nome del database predefinito sia un nome dello schema predefinito quando crei un job di traduzione. Il nome dello schema predefinito viene fornito come primo nome dello schema nell'opzione del percorso di ricerca dello schema.
Ad esempio, se specifichi il nome del database predefinito myproject e il
nome dello schema predefinito myschema, le seguenti istruzioni di origine:
SELECT * FROM database.tableSELECT * FROM table1
Vengono tradotti in:
SELECT * FROM myproject.database.table.SELECT * FROM myproject.myschema.table1
Comportamento della regola di mapping dei nomi
Le sezioni seguenti descrivono il comportamento delle regole di mappatura dei nomi.
L'ereditarietà delle regole segue la gerarchia degli oggetti
Una modifica del nome che interessa un oggetto di livello superiore interessa l'oggetto di destinazione e anche tutti i relativi oggetti secondari nella stessa gerarchia.
Ad esempio, se specifichi la seguente regola di mappatura dei nomi con un tipo di oggetto
schema:
| Parte del nome | Origine | Destinazione |
|---|---|---|
| Database | sales_db |
sales |
| Schema | cust_mgmt |
cms |
| Relazione | ||
| Attributo |
Quando viene applicato, vengono modificate anche le parti del nome del database e dello schema di tutti gli oggetti relation e attribute nello schema sales_db.cust_mgmt. Ad esempio, un oggetto relation denominato sales_db.cust_mgmt.history diventa sales.cms.history.
Al contrario, le modifiche ai nomi che hanno come target oggetti di livello inferiore non influiscono sugli oggetti di livello superiore o uguale nella gerarchia degli oggetti.
Ad esempio, se specifichi la seguente regola di mappatura dei nomi con un tipo di oggetto
relation:
| Parte del nome | Origine | Destinazione |
|---|---|---|
| Database | sales_db |
sales |
| Schema | cust_mgmt |
cms |
| Relazione | clients |
accounts |
| Attributo |
Quando viene applicato, il nome di nessun altro oggetto a livello di sales_db o sales_db.cust_mgmt
della gerarchia degli oggetti viene modificato.
Viene applicata la regola più specifica
A un oggetto viene applicata una sola regola di mappatura dei nomi. Se più regole potrebbero
influire su un singolo oggetto, viene applicata la regola che influisce sulla parte del nome di livello più basso. Ad esempio, se una regola di mappatura dei nomi dei tipi database e una regola di mappatura dei nomi dei tipi schema potrebbero influire entrambe sul nome di un oggetto relation, viene applicata la regola di mappatura dei nomi dei tipi schema.
Utilizzare una combinazione univoca di valori di tipo e origine
Non puoi specificare più di una regola di mappatura dei nomi con lo stesso tipo e gli stessi valori di origine. Ad esempio, non puoi specificare entrambe le seguenti regole di mappatura dei nomi:
Regola 1, tipo attribute |
Regola 2, tipo attribute |
|||
|---|---|---|---|---|
| Parte del nome | Origine | Destinazione | Origine | Destinazione |
| Database | project |
|||