Questa pagina si riferisce al parametro
fields
che fa parte di un join.
fields
può essere utilizzato anche come parte di un'esplorazione, descritto nella pagina della documentazione relativa al parametrofields
(per le esplorazioni).
fields
può essere utilizzato anche come parte di un set, descritto nella pagina della documentazione relativa al parametroset
.
Utilizzo
join: view_name_2 {
fields: [
field-or-set-specification,
field-or-set-specification,
...
]
}
Gerarchia
fields |
Valore predefinito
Tutti i campi nella visualizzazione unitaAccetta
Parentesi quadre che contengono un elenco di campi o insiemi separati da virgoleRegole speciali
|
Definizione
fields
a livello di unione ti consente di specificare quali campi di una vista combinata vengono portati in un'esplorazione. Se non utilizzi fields
i valori predefiniti di Looker per aggiungere tutti i campi dalla vista.
È possibile utilizzare un elenco di campi, ad esempio [field_a, field_b]
.
Puoi anche fare riferimento a un insieme di campi (creati dal parametro set
), ad esempio [set_a*]
. L'asterisco indica a Looker che fai riferimento a un nome di set invece che a un campo.
Esempi
Aggiungi solo il campo name
dalla visualizzazione customer
all'esplorazione order
:
explore: order {
join: customer {
sql_on: ${order.customer_id} = ${customer.id} ;;
fields: [name]
}
}
Aggiungi i campi name
, address
e age
dalla visualizzazione customer
all'esplorazione order
:
explore: order {
join: customer {
sql_on: ${order.customer_id} = ${customer.id} ;;
fields: [name, address, age]
}
}
Aggiungi l'insieme di campi denominato order_fields
dalla visualizzazione customer
a order
Esplora:
explore: order {
join: customer {
sql_on: ${order.customer_id} = ${customer.id} ;;
fields: [order_fields* ]
}
}
Sfide comuni
fields
può fare riferimento solo ai campi della propria join
fields
sarà un elemento secondario di join
, che fa riferimento a una vista. Qualsiasi dimensione o misura a cui viene fatto riferimento in fields
deve essere parte di questa vista. Ad esempio, supponiamo di avere:
explore: order {
join: customer {
sql_on: ${order.customer_id} = ${customer.id} ;;
fields: [name]
}
}
Per funzionare correttamente, nella vista customer
deve esistere una dimensione o una misura denominata name
.
Aspetti da tenere presenti
Utilizza fields: []
con un elenco vuoto per escludere tutti i campi
Puoi escludere tutti i campi da una vista condivisa utilizzando il parametro fields
con un elenco vuoto nell'unione, in questo modo:
explore: order {
join: customer {
fields: []
sql_on: ${order.customer_id} = ${customer.id} ;;
}
}
In questo esempio, nessuno dei campi della vista customer
verrà visualizzato in Esplora order
.
L'unico modo per rimuovere i campi a livello di join
è escluderli tutti in una volta con fields: []
. Non puoi utilizzare il ALL_FIELDS*
impostato per escludere tutti i campi a livello di join
.
Tuttavia, a livello di explore
, puoi utilizzare il ALL_FIELDS*
impostato per escludere singoli elementi, come descritto nella sezione Puoi escludere singoli elementi utilizzando fields
con explore
in questa pagina.
Puoi escludere singoli elementi utilizzando fields
con explore
Quando fields
è nidificato in un parametro join
, puoi escludere tutti i campi contemporaneamente utilizzando fields: []
oppure puoi includere campi specifici. Tuttavia, non puoi escludere campi specifici uno alla volta. Ad esempio, se avevi 100 campi e ne vuoi escludere solo uno, dovrai elencare tutti i 99 campi che volevi.
Tuttavia, puoi invece nidificare fields
sotto il parametro explore
per utilizzare il set ALL_FIELDS*
ed escludere i campi. Ad esempio:
explore: order {
fields: [
ALL_FIELDS*,
-customer.unwanted_field_a,
-customer.unwanted_field_b
]
join: customer {
sql_on: ${order.customer_id} = ${customer.id} ;;
}
}
Nota come abbiamo potuto fare riferimento ai campi della vista congiunta customer
nel parametro fields
del livello Esplora utilizzando la sintassi view_name.field_name
.
Diversi tipi di parametri fields
vengono applicati in momenti diversi
In questa pagina viene descritto fields
quando è nidificato all'interno di un parametro join
. Esiste anche un parametro fields
simile nidificato sotto explore
. Quando vengono utilizzati contemporaneamente, entrambi vengono applicati in un ordine specifico, il che influisce sul comportamento risultante:
Innanzitutto, vengono applicati tutti i parametri fields
in join
. Viene creato l'insieme di campi tra cui scegliere. Considera questo esempio:
explore: orders {
join: users {
fields: [name]
sql_on: ${orders.user_id} = ${users.id} ;;
}
}
In questo caso, i campi disponibili saranno tutti relativi a orders
e name
da users
. Si tratta del gruppo di campi nel set ALL_FIELDS*
(descritto sopra).
Ora, se aggiungiamo un parametro fields
in explore
, stiamo aggiungendo una restrizione all'insieme. Supponiamo che abbiamo eseguito questa operazione:
explore: orders {
fields: [orders.price, users.address]
join: users {
fields: [name]
sql_on: ${orders.user_id} = ${users.id} ;;
}
}
In questo caso:
price
diorders
verranno mostrate come previsto, perché fa parte del setALL_FIELDS*
che abbiamo creato.address
diusers
non sarà visualizzato perché non è stato incluso quandousers
ha partecipato (soloname
lo era).- Non verranno mostrati nemmeno i
name
diusers
perché non sono stati aggiunti a Esplora nella rigafields: [orders.price, users.address]
.