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 le cadre d'une exploration, décrite sur la page de documentation du paramètre fields (pour les explorations).

fields peut également être utilisé dans le cadre d'un ensemble, décrit sur la page de documentation sur les paramètres 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 de séries se terminent toujours par un astérisque (*).
  • Au niveau de la jointure, les champs et les ensembles peuvent uniquement être inclus, et non exclus. Toutefois, vous pouvez exclure tous les champs en utilisant le 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 qui sont transférés vers une exploration. Si vous n'utilisez pas les valeurs par défaut fields de Looker, tous les champs de la vue doivent être ajoutés.

Une liste de champs peut être utilisée, par exemple [field_a, field_b].

Vous pouvez également référencer un ensemble de champs (créés par le paramètre set), comme [set_a*]. L'astérisque indique à Looker que vous référencez un nom d'ensemble plutôt qu'un nom de champ.

Examples

N'ajoutez que le champ intitulé name de la vue customer à la fonctionnalité order Explorer:

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

Ajoutez les champs nommés name, address et age de la vue customer à la fonctionnalité Explorer de order:

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

Ajoutez l'ensemble de champs intitulé order_fields depuis la vue customer à la order Explorer:

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

Difficultés courantes

fields ne peut référencer des champs qu'à partir de son propre join

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

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 jointe en utilisant le paramètre fields avec une liste vide dans votre jointure:

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

Dans cet exemple, aucun des champs de la vue customer ne s'affiche dans order Explorer.

Le seul moyen de supprimer des champs au niveau join consiste à les exclure tous en même temps avec fields: []. Vous ne pouvez pas utiliser le paramètre ALL_FIELDS* défini pour exclure tous les champs au niveau de join.

Toutefois, au niveau de explore, vous pouvez utiliser le ALL_FIELDS* défini 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 de cette page.

Vous pouvez exclure des éléments individuels en utilisant fields avec explore

Lorsque fields est imbriquée dans un paramètre join, vous pouvez exclure tous les champs simultanément à l'aide de fields: [] ou inclure des champs spécifiques. En revanche, vous ne pouvez pas exclure des champs un par un. Par exemple, si vous possédez 100 champs et que vous souhaitez en exclure un seul, vous devez lister les 99 champs que vous souhaitez avoir sélectionnés.

Cependant, vous pouvez imbriquer fields sous le paramètre explore afin de profiter de l'ensemble ALL_FIELDS*, puis d'exclure 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 des champs de la vue jointe customer dans le paramètre fields du niveau Explorer 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 qui est 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 qui en résulte:

Tout d'abord, tous les paramètres fields sous join sont appliqués. Vous créez ainsi un ensemble de champs que l'explorateur 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 des champs orders et name du champ users. Il s'agit du groupe de champs qui se trouverait dans l'ensemble ALL_FIELDS* (décrit ci-dessus).

Maintenant, si nous ajoutons un paramètre fields sous explore, nous ajoutons une restriction à cet ensemble. Supposons que nous l'ayons fait:

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 fait partie de l'ensemble ALL_FIELDS* que nous avons créé.
  • address de users ne s'afficheront pas, car il n'était pas inclus lorsque users a été rejoint (seule name l'a été).
  • name de users ne s'affichera pas non plus, car nous ne l'avons pas ajouté à l'exploration à la ligne fields: [orders.price, users.address].