L'aplatissement des données Google Analytics (avec des champs répétés) ne fonctionne plus
Nous avons un premium compte Google Analytics, qui va nous donner accès à la ligne de niveau de données d'événement. Ces données sont exportées au quotidien pour Google Bigquery et pour chaque jour, une nouvelle table sera créée dans un ensemble de données.
Jusqu'à ce qu'il y a une semaine, nous avons été en mesure d'exporter ces données Google Analytics pour CSV par l'aplatir à une température de mise en scène de la table, puis l'exporter au format CSV. La requête que nous avons utilisé pour ce faire est comme ceci:
SELECT * FROM
flatten([xxxxxxxx.ga_sessions_20140829],hits),
flatten([xxxxxxxx.ga_sessions_20140828],hits),
flatten([xxxxxxxx.ga_sessions_20140827],hits),
flatten([xxxxxxxx.ga_sessions_20140826],hits)
Hier, j'ai remarqué cette requête va maintenant lancer une erreur:
Cannot output multiple independently repeated fields at the same time. Found customDimensions_value and hits_product_productSKU
Apparemment, quelque chose a changé en ce qui concerne les aplatir() de la fonction, comme hits_product_productSKU est l'enfant de la frappe champ.
J'ai aussi essayé quelques vieux requêtes qui ont été dans la requête de l'histoire, mais ils sont cassés.
Il n'y a pas de note de version de mentionner tout changement, de sorte que ce qui se passe?
Comment puis-je exporter le tout dans le Google Analytics BigQuery exporter des fichiers de nouveau?
source d'informationauteur M Bitter
Vous devez vous connecter pour publier un commentaire.
C'est en fait le résultat d'une correction de bug, j'ai déposé la semaine dernière, et vous empêche d'obtenir des résultats incorrects.
BigQuery par défaut aplatit tous les résultats de la requête avant de les renvoyer, mais que nous ne voulons aplatir indépendamment l'une répétée afin d'éviter une croix-produit d'extension de données. Le bug est que nos chèques pour de multiples répétées champs omis de prendre en compte repeatedness des enregistrements parent dans certains cas, ce qui nous a amenés à ne pas aplatir certains indépendamment répété champs. Cela signifiait que nous pourrions revenir à plat les lignes où indépendamment des valeurs répétées sont en réalité des "aplatie" dans dépendante des valeurs répétées, au lieu de générer de la croix-produit, qui est en fait un mauvais résultat.
Ce que vous voyez ici est un résultat de la plus stricte vérifier: vous avez (au moins) deux répétée des champs dans votre schéma de sortie avant de tenter d'aplatir les résultats.
Une autre chose importante à noter est que les APLATIR([table], [champ]) fonctionnent uniquement aplatit le repeatedness de la zone que vous spécifiez comme deuxième argument. Quand vous dites aplatir([xxxxxxxx.ga_sessions_20140829],coups), que vous aplatissez seulement les "hits" enregistrement. Si vous aussi vous voulez aplatir répétée d'enfants (produit, promotion, etc.) vous devez ajouter explicitement une autre aplatir pour ces champs, comme:
APLATIR(APLATIR([xxxxxxxx.ga_sessions_20140829],coups),hits.produit)
--
Vous avez deux options pour faire de votre exemple de travail:
1) Sélectionnez moins de champs. Si vous ne se soucient que l'obtention de sortie aplatie de quelques champs, vous pouvez les supprimer de façon indépendante répété des champs à partir des résultats de votre requête explicite de sélectionner les champs qui vous intéressent.
2) Ajouter plus de Aplatit. Vous aurez besoin de les aplatir sur la répétition pour chaque champ, qui semble comporter au moins des hits, des hits.produit, et customDimensions. Vous pouvez constater que le message d'erreur va alors se plaindre différents répété champs: ajouter plus de Aplatit sur la répétition des champs dans votre schéma jusqu'à ce que cela fonctionne.
Si vous êtes à l'aide de la BigQuery de la Console Web, choisissez un Table de Destinationcliquez sur Permettre à de Grands Résultats et décochez Aplatir les Résultats.
Si vous utilisez bq outil de ligne de commande:
Je soupçonne les tableaux générés par Google Analytics Premium ont été augmentée avec l'ajout de nouvelles colonnes. L'ajout de colonnes ne devrait pas être un problème, sauf si vos requêtes, utilisez la * sélecteur, et l'une des colonnes contient des valeurs imbriquées.
Solution recommandée: au Lieu d'utiliser *, demander explicitement les colonnes dont vous avez besoin.
standardsql
Pour ceux qui veulent importer des GA de données à une base de données relationnelle: s'il vous Plaît être conscient que un schéma imbriqué est en fait de mettre plusieurs tables relationnelles dans une structure imbriquée - elles sont équivalentes, de sorte que la plaine de l'aplatissement n'est pas la meilleure solution ici: vous souhaitez séparé les tables de à nouveau!
De cette façon, vous économisez beaucoup d'espace de stockage et vous de requêtes peuvent obtenir plus rapidement.
Vous pouvez penser de la GA données 3 tables relationnelles:
Pour obtenir des séances de table que vous pouvez utiliser quelque chose comme
customDimensions est agrégée à une chaîne json.
De la même façon avec les hits de la table:
Vous pouvez ajouter de la promotion et de l'expérience que j'ai fait avec customDimensions à l'aide d'une sous-sélection.
Rejoindre la session en cours avec des tubes à l'aide d'une concaténation de fullvisitorid + visitstarttime/visitid (GA séances comprennent minuit split: utilisation visitStartTime au lieu de visitid! Si vous souhaitez ignorer minuit split utilisation visitid - reste la même, malgré la scission)
Pour les produits que vous devez ajouter le numéro de touché de votre "session id" pour obtenir un identifiant unique:
Maintenant, vous avez 3 relationnel /"à plat" des tableaux que vous pouvez rejoindre en tant que de besoin dans tout relationnel.
Vous devez utiliser aplatir la requête avant de les connecter. Il suffit de choisir les champs qui sont mentionnés dans l'erreur et l'utilisation de la imbriquée aplatissement: