campi (per i join)

Questa pagina si riferisce al parametro fields che fa parte di un join.

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

fields può essere utilizzato anche nell'ambito di un insieme, come descritto nella pagina della documentazione dedicata 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 contenenti un elenco separato da virgole di campi o insiemi

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

Definizione

fields a livello di unione consente di specificare quali campi di una vista unita vengono importati in un'esplorazione. Se non utilizzi fields, Looker aggiunge per impostazione predefinita tutti i campi della vista.

Può essere utilizzata una lista 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 stai facendo riferimento a un nome di insieme anziché a un nome di campo.

Esempi

Aggiungi solo il campo denominato name dalla visualizzazione customer all'esplorazione order:

explore: order {
  join: customer {
    sql_on: ${order.customer_id} = ${customer.id} ;;
    fields: [name]
  }
}

Aggiungi i campi denominati 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 il set di campi denominato order_fields dalla visualizzazione customer all'esplorazione order:

explore: order {
  join: customer {
    sql_on: ${order.customer_id} = ${customer.id} ;;
    fields: [order_fields* ]
  }
}

Sfide comuni

fields può fare riferimento solo ai campi del proprio join

fields sarà un figlio di una join, che fa riferimento a una visualizzazione. Qualsiasi dimensione o misura a cui viene fatto riferimento in fields deve far parte di quella visualizzazione. Ad esempio, supponiamo di avere:

explore: order {
  join: customer {
    sql_on: ${order.customer_id} = ${customer.id} ;;
    fields: [name]
  }
}

Per funzionare correttamente, nella visualizzazione customer deve esistere una dimensione o una misura denominata name.

Cose da sapere

Utilizza fields: [] con un elenco vuoto per escludere tutti i campi

Puoi escludere tutti i campi da una visualizzazione unita utilizzando il parametro fields con un elenco vuoto nell'unione, come segue:

explore: order {
  join: customer {
    fields: []
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}

In questo esempio, nessuno dei campi della visualizzazione customer verrà visualizzato nell'esplorazione order.

L'unico modo per rimuovere i campi a livello di join è escluderli tutti contemporaneamente con fields: []. Non puoi utilizzare ALL_FIELDS* impostato per escludere tutti i campi a livello di join.

Tuttavia, a livello di explore, puoi utilizzare il set ALL_FIELDS* per escludere singoli elementi, come descritto nella sezione Puoi escludere singoli elementi utilizzando fields con explore di 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 volevi escluderne solo uno, dovevi elencare tutti i 99 campi che volevi.

Tuttavia, puoi nidificare fields nel parametro explore per sfruttare 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 siamo riusciti a fare riferimento ai campi della visualizzazione unita customer nel parametro fields del livello Esplora utilizzando la sintassi view_name.field_name.

Diversi tipi di parametri fields vengono applicati in momenti diversi

Questa pagina descrive fields quando è nidificato in un parametro join. Esiste anche un parametro simile fields nidificato in explore. Quando vengono utilizzate contemporaneamente, vengono applicate in un ordine specifico, che influisce sul comportamento risultante:

Innanzitutto, vengono applicati tutti i parametri fields in join. Viene creato l'insieme di campi tra cui Explore può scegliere. Considera questo esempio:

explore: orders {
  join: users {
    fields: [name]
    sql_on: ${orders.user_id} = ${users.id} ;;
  }
}

In questo caso, i campi disponibili sono tutti quelli di orders e name di users. Si tratta del gruppo di campi che si troverebbe nel set ALL_FIELDS* (descritto nella sezione sull'esclusione di singoli elementi).

Ora, se aggiungiamo un parametro fields in explore, aggiungiamo una limitazione a questo insieme. Supponiamo di aver fatto questo:

explore: orders {
  fields: [orders.price, users.address]
  join: users {
    fields: [name]
    sql_on: ${orders.user_id} = ${users.id} ;;
  }
}

In questo caso:

  • price di orders verrà visualizzato come previsto perché fa parte del set ALL_FIELDS* che abbiamo creato.
  • address di users non verrà visualizzato perché non è stato incluso quando users ha partecipato (solo name).
  • Anche name di users non verrà visualizzato perché non l'abbiamo aggiunto alla sezione Esplora nella riga fields: [orders.price, users.address].