sql_table_name (per le visualizzazioni)

Questa pagina si riferisce al parametro sql_table_name, che fa parte di una vista.

sql_table_name può essere utilizzato anche nell'ambito di un join, come descritto nella pagina della documentazione dedicata al parametro sql_table_name (per i join).

sql_table_name può essere utilizzato anche nell'ambito di un'esplorazione, come descritto nella pagina della documentazione dedicata al parametro sql_table_name (per le esplorazioni).

Utilizzo

view: view_name {
  sql_table_name: table_name ;;
}
Gerarchia
sql_table_name
Valore predefinito
Nome della vista

Accetta
Un nome di tabella nel database

Regole speciali

Definizione

Il parametro sql_table_name specifica la tabella nel database su cui verrà eseguita una query da una vista.

Se vuoi creare una vista basata su una tabella derivata, non utilizzare il parametro sql_table_name. Utilizza invece il parametro derived table, descritto nella pagina della documentazione dedicata a derived_table. L'IDE di Looker restituirà un errore se hai sia sql_table_name sia derived_table in un file di vista.

Se una vista non contiene il parametro sql_table_name o derived_table, Looker presuppone che la vista sia basata su una tabella di database e che il nome della tabella di database corrisponda al nome della vista. In altre parole, questo:

view: my_name { ... }

è logicamente equivalente a questo:

view: my_name {
  sql_table_name: my_name ;;
}

È abbastanza comune ricorrere a questo comportamento predefinito e non utilizzare sql_table_name. Tuttavia, ci sono alcune situazioni importanti in cui può essere utile. Innanzitutto, in alcuni casi vuoi che la vista abbia un nome diverso dalla tabella sottostante, ad esempio per ripulire un nome di tabella disordinato:

view: orders {
  sql_table_name: prod_orders_2 ;;
}

Inoltre, ci sono casi in cui una vista deve essere basata su un database o uno schema che non si trova nel percorso di ricerca predefinito dell'utente del database. Puoi quindi definire l'ambito del nome della tabella utilizzando il formato <schema_name>.<table_name>, come in questo esempio:

view: desired_view_name {
  sql_table_name: database_name.schema_name.table_name ;;
}

Definizione dell'ambito dei nomi delle tabelle

Quando fai riferimento a una tabella utilizzando solo il nome della tabella, Looker utilizzerà il percorso di ricerca predefinito (il database e lo schema) che l'amministratore di Looker ha configurato nelle impostazioni di connessione per la connessione al database. Per ulteriori informazioni, consulta la sezione Aspetti da considerare in questa pagina.

Se devi fare riferimento a una tabella in un database e uno schema diversi che non si trovano nel percorso di ricerca predefinito dell'utente del database, puoi definire l'ambito del nome della tabella utilizzando il formato <database_name>.<schema_name>.<table_name> per puntare a un altro database o schema:

  • Per fare riferimento a una tabella di un altro schema, utilizza <schema_name>.<table_name>, come mostrato nell'esempio in questa pagina.
  • Per fare riferimento a una tabella di un altro database, utilizza il formato completo <database_name>.<schema_name>.<table_name>.

Per una connessione Google BigQuery, puoi fare riferimento a una tabella in un progetto e un set di dati diversi definendo l'ambito del nome della tabella utilizzando il formato <project_name>.<dataset_name>.<table_name>. Per ulteriori informazioni, consulta la pagina della documentazione relativa alla connessione Google BigQuery.

Join federati

Il join di due tabelle di database diversi è chiamato join federato. I join federati possono essere eseguiti utilizzando Looker se i due database utilizzano lo stesso dialetto SQL, il dialetto supporta i join federati e i due database sono accessibili dalla stessa connessione in Looker. A seconda della configurazione del database, le tabelle potrebbero anche dover risiedere sulla stessa macchina fisica.

In queste condizioni, puoi creare un join federato specificando il nome del database di ogni tabella nel parametro sql_table_name per quella vista:

view: view_1 {
  sql_table_name: database_name.table_1 ;;
}

view: view_2 {
  sql_table_name: another_database_name.table_2 ;;
}

Quindi unisci queste viste utilizzando il parametro sql_on:

explore: view_1 {
  join: view_2 {
    sql_on: ${view_1.view_1_ID} = ${view_2.view_2_ID} ;;
  }
}

Se vuoi unire database che utilizzano dialetti SQL diversi, ti consigliamo di replicare un database nell'altro in modo da poter estrarre tutti i dati da un'unica origine.

Esempi

Questo esempio fa sì che la vista customers si basi sulla tabella customer_1 dello schema predefinito:

view: customers {
  sql_table_name: customer_1 ;;
}

Questo esempio fa sì che la vista customers si basi sulla tabella customer_1 di analytics definendo l'ambito del nome della tabella in modo da includere il nome dello schema (utilizzando il formato <schema_name>.<table_name>):

view: customers {
  sql_table_name: analytics.customer_1 ;;
}

Aspetti da considerare

Le tabelle a cui fa riferimento view devono essere accessibili dalla connessione corrente

Quando il parametro sql_table_name viene utilizzato all'interno di un oggetto view, è possibile fare riferimento a questo oggetto view in un oggetto explore, a cui a sua volta si fa riferimento in un oggetto modello. L'oggetto modello ha una connection al database definita al suo interno. Quando fai riferimento a una tabella di database nel parametro sql_table_name, la tabella deve essere accessibile all'interno della connessione associata specificata nel file del modello.

Il database e lo schema predefiniti (o, per Google BigQuery, il progetto di fatturazione e il set di dati) vengono definiti dall'amministratore di Looker quando crea la connessione Looker al database.

I nomi delle tabelle non descrittivi potrebbero richiedere una formattazione aggiuntiva

Alcuni dialetti richiedono che i nomi delle tabelle con caratteri non supportati, noti anche come nomi di tabelle "non descrittivi", siano racchiusi tra parentesi quadre, virgolette doppie o virgolette singole. Ad esempio, il nome della tabella Customers.PaymentInfo include un punto nel nome della tabella, che potrebbe essere interpretato come una tabella denominata PaymentInfo nello schema Customers. Per correggere questo problema, se il dialetto richiede parentesi quadre, puoi racchiudere il nome della tabella tra parentesi quadre, come segue:

sql_table_name: [Customers.PaymentInfo] ;;

Se il dialetto richiede virgolette doppie o virgolette singole, devi sostituire le parentesi quadre con questi caratteri.