Utilisation
view: view_name {
dimension: field_name {
fanout_on: repeated_record_name
}
}
|
Hiérarchie
fanout_on |
Types de champs possibles
Dimension, groupe de dimensions, mesure
Acceptation
Sous-enregistrement REPEATED Google BigQuery Legacy SQL
|
Définition
Le paramètre fanout_on spécifie le sous-enregistrement REPEATED de l'ancien SQL de Google BigQuery sur lequel une dimension ou une mesure doit être distribuée.
Google BigQuery Legacy SQL est compatible avec les enregistrements imbriqués, dans lesquels un seul enregistrement peut contenir plusieurs sous-enregistrements. L'expression de ces sous-enregistrements dans Looker entraîne l'expansion du jeu de résultats, ce qui signifie que l'enregistrement parent est répété plusieurs fois. Pour que Looker puisse associer correctement les données normales aux données répétées, vous pouvez spécifier la relation de répartition d'un sous-enregistrement à l'aide du paramètre fanout_on.
Prenons l'exemple du tableau de données suivant :
| Nom de la colonne | Type |
|---|---|
| nom | Chaîne, obligatoire |
| age | Entier, obligatoire |
| citiesLived | Enregistrement répété |
| citiesLived.place | Chaîne, peut être vide |
| citiesLived.numberOfYears | Entier, pouvant être nul |
Les données sans l'enregistrement citiesLived peuvent se présenter comme suit :
| nom | age |
|---|---|
| Wilbur Wright | 45 |
Toutefois, l'ajout de l'enregistrement citiesLived répété entraîne une expansion, où les données name et age sont répétées plusieurs fois :
| nom | age | citiesLived.place | citiesLived.numberOfYears |
|---|---|---|---|
| Wilbur Wright | 45 | Dayton | 40 |
| Wilbur Wright | 45 | Paris | 2 |
| Wilbur Wright | 45 | Kitty Hawk | 1 |
Lors de la modélisation de ce type de données, l'enregistrement citiesLived provoque la distribution. Il est donc utilisé dans le paramètre fanout_on :
dimension: city_lived {
sql: ${TABLE}.citiesLived.place ;;
fanout_on: "citiesLived"
}
dimension: years_lived {
sql: ${TABLE}.citiesLived.numberOfYears ;;
fanout_on: "citiesLived"
}
measure: cities_count {
type: count_distinct
sql: ${city_lived} ;;
fanout_on: "citiesLived"
}
measure: city_list {
type: list
list_field: city_lived
fanout_on: "citiesLived"
}
-
Notez que les dimensions et les mesures doivent utiliser fanout_on si elles incluent un enregistrement répété dans leur calcul.