champs (pour les jointures)

Cette page fait référence au paramètre fields qui fait partie d'une jointure.

fields peut également être utilisé dans une exploration, comme décrit sur la page de documentation du paramètre fields (pour les explorations).

fields peut également être utilisé dans un ensemble, comme décrit sur la page de documentation du paramètre set.

Utilisation

explore: view_name_1 {
  join: view_name_2 {
    fields: [
      field-or-set-specification,
      field-or-set-specification,
      ...
    ]
  }
}
Hiérarchie
fields
Valeur par défaut
Tous les champs de la vue jointe

Acceptation
Crochets contenant une liste de champs ou d'ensembles séparés par une virgule

Règles spéciales
  • Les noms d'ensemble se terminent toujours par un astérisque (*).
  • Au niveau de la jointure, les champs et les ensembles ne peuvent être qu'inclus, et non exclus. Vous pouvez toutefois exclure tous les champs à l'aide du paramètre fields avec une liste vide, comme ceci : fields: [].

Définition

fields au niveau de la jointure vous permet de spécifier les champs d'une vue jointe à insérer dans une exploration. Si vous n'utilisez pas fields, Looker ajoute par défaut tous les champs de la vue.

Vous pouvez utiliser une liste de champs, comme [field_a, field_b].

Vous pouvez également faire référence à un ensemble de champs (créés par le paramètre set), comme [set_a*]. L'astérisque indique à Looker que vous faites référence à un nom d'ensemble et non à un nom de champ.

Exemples

Ajoutez uniquement le champ name de la vue customer à l'exploration order :

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

Ajoutez les champs name, address et age de la vue customer à l'exploration order :

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

Ajoutez l'ensemble de champs appelé order_fields de la vue customer à l'exploration order :

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

Difficultés courantes

fields ne peut faire référence qu'aux champs de son propre join.

fields sera un enfant d'un join, qui fait référence à une vue. Toutes les dimensions ou mesures référencées dans fields doivent faire partie de cette vue. Par exemple, supposons que nous ayons :

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

Pour fonctionner correctement, une dimension ou une mesure appelée name doit exister dans la vue customer.

Bon à savoir

Utilisez fields: [] avec une liste vide pour exclure tous les champs.

Vous pouvez exclure tous les champs d'une vue associée en utilisant le paramètre fields avec une liste vide dans votre association, comme ceci :

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

Dans cet exemple, aucun champ de la vue customer ne s'affichera dans l'exploration order.

La seule façon de supprimer des champs au niveau join est de les exclure tous en même temps avec fields: []. Vous ne pouvez pas utiliser le ALL_FIELDS* défini pour exclure tous les champs au niveau join.

Toutefois, au niveau explore, vous pouvez utiliser l'ensemble ALL_FIELDS* pour exclure des éléments individuels, comme décrit dans la section Vous pouvez exclure des éléments individuels à l'aide de fields avec explore sur cette page.

Vous pouvez exclure des éléments individuels à l'aide de fields avec explore.

Lorsque fields est imbriqué sous un paramètre join, vous pouvez exclure tous les champs à la fois à l'aide de fields: [] ou inclure des champs spécifiques. En revanche, vous ne pouvez pas exclure des champs spécifiques un par un. Par exemple, si vous aviez 100 champs et que vous ne souhaitiez en exclure qu'un seul, vous deviez lister les 99 champs que vous vouliez.

Toutefois, vous pouvez imbriquer fields sous le paramètre explore pour profiter de l'ensemble ALL_FIELDS* et exclure ensuite des champs. Exemple :

explore: order {
  fields: [
    ALL_FIELDS*,
    -customer.unwanted_field_a,
    -customer.unwanted_field_b
  ]
  join: customer {
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}

Notez que nous avons pu référencer les champs de la vue jointe customer dans le paramètre fields au niveau de l'exploration en utilisant la syntaxe view_name.field_name.

Différents types de paramètres fields sont appliqués à différents moments.

Cette page décrit fields lorsqu'il est imbriqué sous un paramètre join. Il existe également un paramètre fields similaire, imbriqué sous explore. Lorsqu'elles sont utilisées en même temps, elles sont appliquées dans un ordre spécifique, ce qui affecte le comportement résultant :

Tout d'abord, tous les paramètres fields sous join sont appliqués. Cela crée l'ensemble de champs parmi lesquels l'exploration peut choisir. Considérez l'exemple suivant :

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

Dans ce cas, les champs disponibles sont tous ceux de orders et name de users. Il s'agit du groupe de champs qui se trouverait dans l'ensemble ALL_FIELDS* (décrit dans la section sur l'exclusion d'éléments individuels).

Si nous ajoutons un paramètre fields sous explore, nous ajoutons une restriction à cet ensemble. Supposons que nous ayons fait ce qui suit :

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

Dans ce cas :

  • price de orders s'affichera comme prévu, car il se trouve dans l'ensemble ALL_FIELDS* que nous avons créé.
  • address de users ne s'affichera pas, car il n'a pas été inclus lorsque users a rejoint l'espace (seul name l'a été).
  • name de users ne s'affichera pas non plus, car nous ne l'avons pas ajouté à "Explorer" dans la ligne fields: [orders.price, users.address].