campi (per join)

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 parametro fields (per le esplorazioni).

fields può essere utilizzato anche come parte di un set, descritto nella pagina della documentazione relativa al parametro set.

Utilizzo

Explore: view_name_1 {
join: view_name_2 {
fields: [
field-or-set-specification,
field-or-set-specification,

...
]
}
Gerarchia
fields
Valore predefinito
Tutti i campi nella visualizzazione unita

Accetta
Parentesi quadre che contengono un elenco di campi o insiemi separati da virgole

Regole speciali
  • I nomi devono sempre terminare con un asterisco (*)
  • A livello di unione, i campi e gli insiemi possono essere inclusi solo e non esclusi. Tuttavia, puoi escludere tutti i campi utilizzando il parametro fields con un elenco vuoto come il seguente: fields: []

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 di orders verranno mostrate come previsto, perché fa parte del set ALL_FIELDS* che abbiamo creato.
  • address di users non sarà visualizzato perché non è stato incluso quando users ha partecipato (solo name lo era).
  • Non verranno mostrati nemmeno i name di users perché non sono stati aggiunti a Esplora nella riga fields: [orders.price, users.address].