Schéma de BigQuery Export

Cet article décrit le format et le schéma des données Google Analytics pour Firebase exportées vers BigQuery.

Ensembles de données

Pour chaque projet Firebase associé à BigQuery, un ensemble de données unique nommé "analytics_<property_id>" est ajouté à votre projet BigQuery. "Property ID" fait référence à votre ID de propriété Analytics, que vous trouverez dans vos paramètres Analytics dans Firebase. Chaque application dans laquelle la fonctionnalité BigQuery Export est activée exporte ses données vers cet ensemble de données unique.

Tableaux

Dans chaque ensemble de données, un tableau est importé pour chaque jour d'exportation. Ces tableaux utilisent le format "events_YYYYMMDD". En outre, un tableau est importé pour les événements reçus le jour même.  Il reçoit le nom "events_intraday_YYYYMMDD", et les données sont ajoutées en temps réel, au fur et à mesure que les événements sont collectés.

Lignes

Dans un tableau, chaque ligne correspond à un événement unique importé par le SDK Analytics.

Colonnes

Les colonnes incluses dans l'exportation sont répertoriées ci-dessous.

 

Nom du champ Type de données Description
Application    
app_info ENREGISTREMENT Enregistrement d'informations sur l'application.
app_info.id CHAÎNE Nom du package ou ID de groupe de l'application.
app_info.firebase_app_id CHAÎNE ID de l'application Firebase associé à l'application.
app_info.install_source CHAÎNE Plate-forme de téléchargement qui a installé l'application.
app_info.version CHAÎNE Identifiant versionName de l'application (Android) ou version courte du groupe.
Appareil    
device ENREGISTREMENT Enregistrement des informations sur l'appareil.
device.category CHAÎNE Catégorie d'appareil (mobile, tablette, ordinateur).
device.mobile_brand_name CHAÎNE Marque de l'appareil.
device.mobile_model_name CHAÎNE Nom du modèle de l'appareil.
device.mobile_marketing_name CHAÎNE Dénomination commerciale de l'appareil.
device.mobile_os_hardware_model CHAÎNE Informations sur le modèle d'appareil extraites directement du système d'exploitation.
device.operating_system CHAÎNE Système d'exploitation de l'appareil.
device.operating_system_version CHAÎNE Version de l'OS.
device.vendor_id CHAÎNE IDFV (seulement si l'IDFA n'est pas collecté).
device.advertising_id CHAÎNE ID/IDFA publicitaire.
device.language CHAÎNE Langue de l'OS.
device.time_zone_offset_seconds NOMBRE ENTIER Décalage par rapport à GMT en secondes.
device.is_limited_ad_tracking BOOLÉEN Paramètre "Limiter le suivi des annonces" de l'appareil.
Flux et plate-forme    
stream_id CHAÎNE Identifiant numérique du flux.
platform CHAÎNE Plate-forme sur laquelle l'application a été conçue.
Utilisateur    
user_first_touch_timestamp NOMBRE ENTIER Heure (en microsecondes) à laquelle l'utilisateur a ouvert l'application pour la première fois.
user_id CHAÎNE User ID défini via l'API setUserId.
user_pseudo_id CHAÎNE Identifiant pseudonyme (ID d'instance d'application, par exemple) de l'utilisateur.
user_properties ENREGISTREMENT Doublon d'un enregistrement des propriétés utilisateur définies via l'API setUserProperty.
user_properties.key CHAÎNE Nom de la propriété utilisateur.
user_properties.value ENREGISTREMENT Enregistrement de la valeur de la propriété utilisateur.
user_properties.value.string_value CHAÎNE Valeur de la chaîne de la propriété utilisateur.
user_properties.value.int_value NOMBRE ENTIER Valeur du nombre entier de la propriété utilisateur.
user_properties.value.double_value VALEUR FLOTTANTE Valeur double de la propriété utilisateur.
user_properties.value.float_value VALEUR FLOTTANTE Ce champ n'est pas utilisé à l'heure actuelle.
user_properties.value.set_timestamp_micros NOMBRE ENTIER Heure (en microsecondes) à laquelle la propriété utilisateur a été définie pour la dernière fois.
user_ltv ENREGISTREMENT Enregistrement des informations sur la valeur vie client de l'utilisateur. Ce champ n'est pas renseigné dans les tableaux intrajournaliers.
user_ltv.revenue VALEUR FLOTTANTE Valeur vie client (chiffre d'affaires) de l'utilisateur. Ce champ n'est pas renseigné dans les tableaux intrajournaliers.
user_ltv.currency CHAÎNE Valeur vie client (devise) de l'utilisateur. Ce champ n'est pas renseigné dans les tableaux intrajournaliers.
Campagne   Remarque : L'attribution traffic_source est basée sur le dernier clic (multicanaux). Les valeurs traffic_source ne changent pas si l'utilisateur interagit avec d'autres campagnes après l'installation.
traffic_source ENREGISTREMENT Nom de la source de trafic qui a touché l'utilisateur en premier. Ce champ n'est pas renseigné dans les tableaux intrajournaliers.
traffic_source.name CHAÎNE Nom de la campagne marketing qui a touché l'utilisateur en premier. Ce champ n'est pas renseigné dans les tableaux intrajournaliers.
traffic_source.medium CHAÎNE Nom du support (liens commerciaux, recherche naturelle, e-mail, etc.) qui a touché l'utilisateur en premier. Ce champ n'est pas renseigné dans les tableaux intrajournaliers.
traffic_source.source CHAÎNE Nom du réseau qui a touché l'utilisateur en premier. Ce champ n'est pas renseigné dans les tableaux intrajournaliers.
Données géographiques    
geo ENREGISTREMENT Enregistrement des informations géographiques de l'utilisateur.
geo.continent CHAÎNE Continent à l'origine des rapports sur les événements, en fonction de l'adresse IP.
geo.sub_continent CHAÎNE Sous-continent à l'origine des rapports sur les événements, en fonction de l'adresse IP.
geo.country CHAÎNE Pays à l'origine des rapports sur les événements, en fonction de l'adresse IP.
geo.region CHAÎNE Région à l'origine des rapports sur les événements, en fonction de l'adresse IP.
geo.metro CHAÎNE Agglomération à l'origine des rapports sur les événements, en fonction de l'adresse IP.
geo.city CHAÎNE Ville à l'origine des rapports sur les événements, en fonction de l'adresse IP.
Événement    
event_date CHAÎNE Date d'enregistrement de l'événement (format AAAAMMJJ dans le fuseau horaire enregistré au niveau de votre application).
event_timestamp NOMBRE ENTIER Heure (en microsecondes, UTC) à laquelle l'événement a été enregistré sur le client.
event_previous_timestamp NOMBRE ENTIER Heure (en microsecondes, UTC) à laquelle l'événement a été précédemment enregistré sur le client.
event_name CHAÎNE Nom de l'événement.
event_params ENREGISTREMENT Doublon d'un enregistrement des paramètres associés à cet événement.
event_params.key CHAÎNE Clé du paramètre de l'événement.
event_params.value ENREGISTREMENT Enregistrement de la valeur du paramètre de l'événement.
event_params.value.string_value CHAÎNE Valeur de la chaîne du paramètre de l'événement.
event_params.value.int_value NOMBRE ENTIER Valeur du nombre entier du paramètre de l'événement.
event_params.value.double_value VALEUR FLOTTANTE Valeur double du paramètre de l'événement.
event_params.value.float_value VALEUR FLOTTANTE Valeur flottante du paramètre de l'événement.  Ce champ n'est pas utilisé à l'heure actuelle.
event_value_in_usd VALEUR FLOTTANTE Valeur convertie en devise (USD) du paramètre "value" de l'événement.
event_bundle_sequence_id NOMBRE ENTIER Identifiant séquentiel du groupe dans lequel ces événements ont été importés.
event_server_timestamp_offset NOMBRE ENTIER Décalage au niveau de l'horodatage entre l'heure de collecte et l'heure d'importation, en microsecondes.
Web    
web_info ENREGISTREMENT Enregistrement d'informations pour les données Web.
web_info.hostname CHAÎNE Nom d'hôte associé à l'événement enregistré.
web_info.browser CHAÎNE Navigateur dans lequel l'utilisateur a affiché le contenu.
web_info.browser_version CHAÎNE Version du navigateur dans lequel l'utilisateur a affiché le contenu.

 

 

Pour effectuer la migration des ensembles de données BigQuery existants de l'ancien schéma d'exportation vers le nouveau, suivez le script ci-après :
  1. Connectez-vous à la console Cloud Platform > : page des ressources du gestionnaire.
  2. Ouvrez le projet dont vous souhaitez migrer les données, puis cliquez sur Activer Google Cloud Shell en haut de la page.
  3. Lorsque l'interface système s'ouvre, copiez le script ci-dessous dans un fichier nommé migration_script.sql :
    1. Exécutez la commande cat > migration_script.sql.
    2. Copiez et collez le script ci-dessous dans l'interface système.
    3. Appuyez sur Ctrl+D pour enregistrer et quitter.
    Script (migration_script.sql) :
      SELECT
      @date AS event_date,
      event.timestamp_micros AS event_timestamp,
      event.previous_timestamp_micros AS event_previous_timestamp,
      event.name AS event_name,
      event.value_in_usd  AS event_value_in_usd,
       user_dim.bundle_info.bundle_sequence_id AS event_bundle_sequence_id,
      user_dim.bundle_info.server_timestamp_offset_micros as event_server_timestamp_offset,
      (
      SELECT
        ARRAY_AGG(STRUCT(event_param.key AS key,
            STRUCT(event_param.value.string_value AS string_value,
              event_param.value.int_value AS int_value,
              event_param.value.double_value AS double_value, 
              event_param.value.float_value AS float_value) AS value))
      FROM
        UNNEST(event.params) AS event_param) AS event_params,
      user_dim.first_open_timestamp_micros AS user_first_touch_timestamp,
      user_dim.user_id AS user_id,
      user_dim.app_info.app_instance_id AS user_pseudo_id,
      "" AS stream_id,
      user_dim.app_info.app_platform AS platform,
      STRUCT( user_dim.ltv_info.revenue AS revenue,
        user_dim.ltv_info.currency AS currency ) AS user_ltv,
      STRUCT( user_dim.traffic_source.user_acquired_campaign AS name,
          user_dim.traffic_source.user_acquired_medium AS medium,
          user_dim.traffic_source.user_acquired_source AS source ) AS traffic_source,
      STRUCT( user_dim.geo_info.continent AS continent,
        user_dim.geo_info.country AS country,
        user_dim.geo_info.region AS region,
        user_dim.geo_info.city AS city ) AS geo,
      STRUCT( user_dim.device_info.device_category AS category,
        user_dim.device_info.mobile_brand_name,
        user_dim.device_info.mobile_model_name,
        user_dim.device_info.mobile_marketing_name,
        user_dim.device_info.device_model AS mobile_os_hardware_model,
        @platform AS operating_system,
        user_dim.device_info.platform_version AS operating_system_version,
        user_dim.device_info.device_id AS vendor_id,
        user_dim.device_info.resettable_device_id AS advertising_id,
        user_dim.device_info.user_default_language AS language,
        user_dim.device_info.device_time_zone_offset_seconds AS time_zone_offset_seconds,
        IF(user_dim.device_info.limited_ad_tracking, "Yes", "No") AS is_limited_ad_tracking ) AS device,
      STRUCT( user_dim.app_info.app_id AS id,
        @firebase_app_id  AS firebase_app_id,
        user_dim.app_info.app_version AS version,
        user_dim.app_info.app_store AS install_source ) AS app_info,
      (
      SELECT
        ARRAY_AGG(STRUCT(user_property.key AS key,
            STRUCT(user_property.value.value.string_value AS string_value,
              user_property.value.value.int_value AS int_value,
              user_property.value.value.double_value AS double_value,
              user_property.value.value.float_value AS float_value,
              user_property.value.set_timestamp_usec AS set_timestamp_micros ) AS value))
      FROM
        UNNEST(user_dim.user_properties) AS user_property) AS user_properties
    FROM
      `SCRIPT_GENERATED_TABLE_NAME`,
      UNNEST(event_dim) AS event
      
  4. Ouvrez une nouvelle interface système et copiez le script bash ci-dessous dans un fichier nommé migration.sh :
    1. Exécutez la commande cat > migration.sh.
    2. Copiez et collez le script ci-dessous dans l'interface système.
    3. Appuyez sur Ctrl+D pour enregistrer et quitter.
    Modifiez le script suivant afin d'inclure l'ID de propriété Analytics, l'ID du projet BigQuery, l'ID de l'application Firebase, le nom de l'ensemble de données BigQuery, et les dates de début et de fin des données souhaitées.
    Script (migration.sh) :
    # ID de propriété Analytics pour le projet. Vous trouverez cette valeur dans les paramètres Analytics de Firebase.
    PROPERTY_ID=votre ID de propriété Analytics
    
    # Projet BigQuery Export.
    BQ_PROJECT_ID="votre ID de projet BigQuery" (par exemple, "firebase-public-project")
    
    # ID de l'application Firebase.
    FIREBASE_APP_ID="votre ID d'application Firebase" (par exemple, "1:300830567303:ios:09b1ab1d3ca29bda")
    
    # Ensemble de données à partir duquel effectuer l'importation.
    BQ_DATASET="nom de l'ensemble de données BigQuery à partir duquel vous souhaitez effectuer l'importation" (Ex. "com_firebase_demo_IOS")
    
    # Plate-forme
    PLATFORM="plate-forme de l'application. ANDROID ou IOS"
    
    # Plage de dates concernée par la migration, [START_DATE,END_DATE] incluses.
    START_DATE=20180324
    END_DATE=20180327
    
    # Ne modifiez pas le script ci-dessous, sauf si vous savez ce que vous faites :)
    startdate=$(date -d"$START_DATE"  +%Y%m%d) || exit -1
    enddate=$(date -d"$END_DATE"  +%Y%m%d) || exit -1
    
    # Répétez pour toutes les dates.
    DATE="$startdate"
    while [ "$DATE" -le "$enddate" ]; do
    
            # Tableau BQ construit à partir des paramètres ci-dessus.
            BQ_TABLE="$BQ_PROJECT_ID.$BQ_DATASET.app_events_$DATE"
    
            echo "Migrating $BQ_TABLE"
    
            cat migration_script.sql | sed -e "s/SCRIPT_GENERATED_TABLE_NAME/$BQ_TABLE/g" | bq query \
            --debug_mode \
            --allow_large_results \
            --noflatten_results \
            --use_legacy_sql=False \
            --destination_table analytics_$PROPERTY_ID.events_$DATE \
            --batch \
            --append_table \
            --parameter=firebase_app_id::$FIREBASE_APP_ID \
            --parameter=date::$DATE \
            --parameter=platform::$PLATFORM \
            --project_id=$BQ_PROJECT_ID
    
    
            temp=$(date -I -d "$DATE + 1 day")
            DATE=$(date -d "$temp" +%Y%m%d)
    
    done
    exit
    
    # FIN DU SCRIPT
    
    
  5. Ouvrez une nouvelle interface système et exécutez la commande bash migration.sh.

 

Ancien schéma d'exportation

user_dim

Nom du champ Type de données Description
user_dim ENREGISTREMENT Enregistrement des dimensions utilisateurs.
user_dim.user_id CHAÎNE User ID défini via l'API setUserId.
user_dim.first_open_timestamp_micros NOMBRE ENTIER Heure (en microsecondes) à laquelle l'utilisateur a ouvert l'application pour la première fois.
user_dim.user_properties ENREGISTREMENT Doublon d'un enregistrement des propriétés utilisateur définies via l'API setUserProperty.
user_dim.user_properties.key CHAÎNE Nom de la propriété utilisateur.
user_dim.user_properties.value ENREGISTREMENT Enregistrement des informations relatives à la propriété utilisateur.
user_dim.user_properties.value.value ENREGISTREMENT Enregistrement de la valeur de la propriété utilisateur.
user_dim.user_properties.value.value.string_value CHAÎNE Valeur de la chaîne de la propriété utilisateur.
user_dim.user_properties.value.value.int_value NOMBRE ENTIER Valeur du nombre entier de la propriété utilisateur.
user_dim.user_properties.value.value.double_value VALEUR FLOTTANTE Valeur double de la propriété utilisateur.
user_dim.user_properties.value.set_timestamp_usec NOMBRE ENTIER Heure (en microsecondes) à laquelle la propriété utilisateur a été définie pour la dernière fois.
user_dim.user_properties.value.index NOMBRE ENTIER Index (0-24) de la propriété utilisateur.
user_dim.device_info ENREGISTREMENT Enregistrement des informations sur l'appareil.
user_dim.device_info.device_category CHAÎNE Catégorie d'appareil (mobile, tablette, ordinateur).
user_dim.device_info.mobile_brand_name CHAÎNE Marque de l'appareil.
user_dim.device_info.mobile_model_name CHAÎNE Nom du modèle de l'appareil.
user_dim.device_info.mobile_marketing_name CHAÎNE Dénomination commerciale de l'appareil.
user_dim.device_info.device_model CHAÎNE Modèle de l'appareil.
user_dim.device_info.platform_version CHAÎNE Version de l'OS.
user_dim.device_info.device_id CHAÎNE IDFV (seulement si l'IDFA n'est pas disponible).
user_dim.device_info.resettable_device_id CHAÎNE ID/IDFA publicitaire.
user_dim.device_info.user_default_language CHAÎNE Langue de l'OS.
user_dim.device_info.device_time_zone_offset_seconds NOMBRE ENTIER Décalage par rapport à GMT en secondes.
user_dim.device_info.limited_ad_tracking BOOLÉEN Paramètre "Limiter le suivi des annonces" de l'appareil.
user_dim.geo_info ENREGISTREMENT Enregistrement des informations géographiques de l'utilisateur.
user_dim.geo_info.continent CHAÎNE Continent à l'origine des rapports sur les événements, en fonction de l'adresse IP.
user_dim.geo_info.country CHAÎNE Pays à l'origine des rapports sur les événements, en fonction de l'adresse IP.
user_dim.geo_info.region CHAÎNE Région à l'origine des rapports sur les événements, en fonction de l'adresse IP.
user_dim.geo_info.city CHAÎNE Ville à l'origine des rapports sur les événements, en fonction de l'adresse IP.
user_dim.app_info ENREGISTREMENT Enregistrement d'informations sur l'application.
user_dim.app_info.app_version CHAÎNE Identifiant versionName de l'application (Android) ou version courte du groupe.
user_dim.app_info.app_instance_id CHAÎNE Identifiant unique pour cette instance de l'application.
user_dim.app_info.app_store CHAÎNE Plate-forme de téléchargement ayant installé cette application.
user_dim.app_info.app_platform CHAÎNE Plate-forme sur laquelle l'application est exécutée.
user_dim.traffic_source ENREGISTREMENT Nom de la source de trafic ayant servi à toucher l'utilisateur. Ce champ n'est pas renseigné dans les tableaux intrajournaliers.
user_dim.traffic_source.user_acquired_campaign CHAÎNE Nom de la campagne marketing ayant touché l'utilisateur. Ce champ n'est pas renseigné dans les tableaux intrajournaliers.
user_dim.traffic_source.user_acquired_medium CHAÎNE Nom du support (liens commerciaux, recherche naturelle, e-mail, etc.) ayant touché l'utilisateur. Ce champ n'est pas renseigné dans les tableaux intrajournaliers.
user_dim.traffic_source.user_acquired_source CHAÎNE Nom du réseau ayant touché l'utilisateur. Ce champ n'est pas renseigné dans les tableaux intrajournaliers.
user_dim.bundle_info ENREGISTREMENT Enregistrement des informations concernant le groupe dans lequel ces événements ont été importés.
user_dim.bundle_info.bundle_sequence_id NOMBRE ENTIER Identifiant séquentiel du groupe dans lequel ces événements ont été importés.
user_dim.ltv_info ENREGISTREMENT Enregistrement des informations sur la valeur du client concernant cet utilisateur. Ce champ n'est pas renseigné dans les tableaux intrajournaliers.
user_dim.ltv_info.revenue VALEUR FLOTTANTE Valeur du client (chiffre d'affaires) de cet utilisateur. Ce champ n'est pas renseigné dans les tableaux intrajournaliers.
user_dim.ltv_info.currency CHAÎNE Valeur du client (devise) de cet utilisateur. Ce champ n'est pas renseigné dans les tableaux intrajournaliers.
 

event_dim

Nom du champ Type de données Description
event_dim ENREGISTREMENT Doublon d'un enregistrement des informations relatives aux événements de ce groupe.
event_dim.date CHAÎNE Date d'enregistrement de cet événement (format AAAAMMJJ dans le fuseau horaire enregistré au niveau de votre application).
event_dim.name CHAÎNE Nom de cet événement.
event_dim.params ENREGISTREMENT Doublon d'un enregistrement des paramètres associés à cet événement.
event_dim.params.key CHAÎNE Clé du paramètre de l'événement.
event_dim.params.value ENREGISTREMENT Enregistrement de la valeur du paramètre de l'événement.
event_dim.params.value.string_value CHAÎNE Valeur de la chaîne du paramètre de l'événement.
event_dim.params.value.int_value NOMBRE ENTIER Valeur du nombre entier du paramètre de l'événement.
event_dim.params.value.double_value VALEUR FLOTTANTE Valeur double du paramètre de l'événement.
event_dim.timestamp_micros NOMBRE ENTIER Heure (en microsecondes, UTC) à laquelle l'événement a été enregistré sur le client.
event_dim.previous_timestamp_micros NOMBRE ENTIER Heure (en microsecondes, UTC) à laquelle l'événement a été précédemment enregistré sur le client.
Ces informations vous-ont elles été utiles ?
Comment pouvons-nous l'améliorer ?