fanout_on

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.