0

Je voudrais créer deux dynamique hebdomadaire BigQuery Firebase rapports, ce qui reflète les plus récentes 12 semaines de données pour:Firebase BigQuery Event Reporting dans Data Studio

  1. Occurrences événement par semaine
  2. utilisateurs DISTINCTS qui l'événement déclenchés par Occurrences semaine

L'inspiration pour ces rapports provenaient d'un Tableau-report j'ai vu en ligne:

enter image description here

Je suis en train de créer des horodateurs dynamiques pour tirer les valeurs de 1.count de event.name et user_dim.app_info.app_instance_id 2.distinct.

Mon premier Iteration:

SELECT event.name as event_name, 
COUNT(CASE WHEN _TABLE_SUFFIX >= '20170724' AND _TABLE_SUFFIX < '20170731' THEN event.name END) AS W1, 
COUNT(CASE WHEN _TABLE_SUFFIX >= '20170731' AND _TABLE_SUFFIX < '20170807' THEN event.name END) AS W2, 
COUNT(CASE WHEN _TABLE_SUFFIX >= '20170807' AND _TABLE_SUFFIX < '20170814' THEN event.name END) AS W3, 
COUNT(CASE WHEN _TABLE_SUFFIX >= '20170814' AND _TABLE_SUFFIX < '20170821' THEN event.name END) AS W4, 
COUNT(CASE WHEN _TABLE_SUFFIX >= '20170821' AND _TABLE_SUFFIX < '20170828' THEN event.name END) AS W5, 
COUNT(CASE WHEN _TABLE_SUFFIX >= '20170828' AND _TABLE_SUFFIX < '20170904' THEN event.name END) AS W6, 
COUNT(CASE WHEN _TABLE_SUFFIX >= '20170904' AND _TABLE_SUFFIX < '20170911' THEN event.name END) AS W7, 
COUNT(CASE WHEN _TABLE_SUFFIX >= '20170911' AND _TABLE_SUFFIX < '20170918' THEN event.name END) AS W8, 
COUNT(CASE WHEN _TABLE_SUFFIX >= '20170918' AND _TABLE_SUFFIX < '20170925' THEN event.name END) AS W9, 
COUNT(CASE WHEN _TABLE_SUFFIX >= '20170925' AND _TABLE_SUFFIX < '20171002' THEN event.name END) AS W10, 
COUNT(CASE WHEN _TABLE_SUFFIX >= '20171002' AND _TABLE_SUFFIX < '20171009' THEN event.name END) AS W11, 
COUNT(CASE WHEN _TABLE_SUFFIX >= '20171009' AND _TABLE_SUFFIX < '20171016' THEN event.name END) AS W12 
FROM `<<project-id>>.app_events_*`, UNNEST(event_dim) AS event 
WHERE _TABLE_SUFFIX >= '20170724' AND _TABLE_SUFFIX < '20171016' 
GROUP BY event_name 
ORDER BY event_name DESC; 

J'ai aussi joué avec le code ci-dessous sudo:

# Enable StandardSQL 
SELECT week, event.name as event_name, COUNT(event.name) as event_count 
FROM 
(TABLE_DATE_RANGE([firebase-analytics-sample-data:android_dataset.app_events_],DATE_ADD(CURRENT_TIMESTAMP(), -1, 'WEEK'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'WEEK'))), .... 
.... 
.... 
(TABLE_DATE_RANGE([firebase-analytics-sample-data:android_dataset.app_events_],DATE_ADD(CURRENT_TIMESTAMP(), -12, 'WEEK'), DATE_ADD(CURRENT_TIMESTAMP(), -12, 'WEEK'))), 
UNNEST(event_dim) as event 
GROUP BY event_name 
ORDER BY week DESC 
LIMIT 12; 

Remarque: table générique ne supporte pas les vues. La requête renvoie une erreur si la table générique correspond à des vues dans l'ensemble de données. Actuellement, les résultats en cache ne sont pas pris en charge pour les requêtes sur plusieurs tables en utilisant une fonction générique (même si l'option Utiliser les résultats en cache est cochée). Si vous exécutez la même requête générique plusieurs fois, vous êtes facturé pour chaque requête. Les tables génériques prennent en charge le stockage BigQuery natif uniquement. Vous ne pouvez pas utiliser de caractères génériques lors de l'interrogation d'une table externe ou d'une vue (source).

Pour résumer:

  • Il serait beaucoup plus rapide si je ne devais pas entrer manuellement les champs de date chaque semaine, mais le script « connaît » la week's index number actuelle, nous sommes, et met à jour les données des 12 dernières semaines.

Annexe

  • Semaine 30 24 Juillet, 2017 30 Juillet, 2017 20170724 20170730
  • Semaine 31 31 Juillet, 2017 6 Août, 2017 20170731 20170806
  • Semaine 32 Août 7, 2017 Août 13, 2017 20170807 20170813
  • Semaine 33 Août 14, 2017 Août 20, 2017 20170814 20170820
  • Semaine 34 Au rafale 21, 2017 27 Août 2017 20170821 20170827
  • Semaine 35 28 Août 2017 3 Septembre 2017 20170828 20170903
  • Semaine 36 4 Septembre 2017 10 Septembre 2017 20170904 20170910
  • Semaine 37 11 Septembre 2017 Septembre 17, 2017 20170911 20170917
  • semaine 38 18 Septembre 2017 24 Septembre 2017 20170918 20170924
  • semaine 39 25 Septembre 2017 1 Octobre 2017 20170925 20171001
  • semaine 40 2 Octobre 2017 8 Octobre 2017 20171002 20171008
  • Semaine 41 9 Octobre, 2017 15 Octobre, 2017 20171009 20171015
+0

Quelle est exactement votre question !? ;-) –

+0

J'ai réécrit cette question pour être plus clair. Pouvez-vous le voter à nouveau s'il vous plaît? Et peut-être partager votre sagesse sur la façon d'aborder ce problème s'il vous plaît. – Dirk

+0

À mon avis, cette question est beaucoup trop large et ne convient pas à Stack Overflow. Je suggère d'essayer quelque chose vous-même d'abord, puis revenez avec des questions plus spécifiques et briser ces questions. –

Répondre

1

Il serait beaucoup plus rapide si je ne devais pas entrer manuellement les champs de date chaque semaine), mais le script « connaît » la semaine -Nombre nous sommes, et met à jour les 12 plus récentes données semaines compte tenu de la semaine, nous sommes.

ci-dessous est BigQuery standard SQL

WHERE _TABLE_SUFFIX 
    BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 12 * 7 + EXTRACT(DAYOFWEEK FROM CURRENT_DATE()) - 2 DAY)) 
    AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL EXTRACT(DAYOFWEEK FROM CURRENT_DATE()) - 1 DAY)) 

Ci-dessous juste montre la sortie

#standardSQL 
SELECT 
    FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 2 * 7 + EXTRACT(DAYOFWEEK FROM CURRENT_DATE()) - 2 DAY)) first_day, 
    FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL EXTRACT(DAYOFWEEK FROM CURRENT_DATE()) - 1 DAY)) last_day 

-

first_day last_day  
20171002 20171015  

Chaque fois que vous exécutez au-dessus du script - il vous retourner le début et la fin de la dernière période de 12 semaines

Mise à jour pour:

J'ai posté ma première réponse d'itération ci-dessus dans ce que je voudrais

#standardSQL 
SELECT 
    CONCAT(
    FORMAT_DATE('Week %W %d %B %Y, ', first_day), 
    FORMAT_DATE('%d %B %Y, ', last_day), 
    FORMAT_DATE('%Y%m%d ', first_day), 
    FORMAT_DATE('%Y%m%d', last_day) 
) wk 
FROM (
    SELECT 
    DATE_SUB(CURRENT_DATE(), INTERVAL 1 * 7 + EXTRACT(DAYOFWEEK FROM CURRENT_DATE()) - 2 DAY) first_day, 
    DATE_SUB(CURRENT_DATE(), INTERVAL EXTRACT(DAYOFWEEK FROM CURRENT_DATE()) - 1 DAY) last_day 
) 

avec la sortie

wk 
Week 41 09 October 2017, 15 October 2017, 20171002 20171015 
+0

une question à la fois sur SO !!"plug in Google Data Studio" est donc une autre question que je vous recommande de poster en tant que question séparée! En attendant, voir ma mise à jour pour le formatage «supplémentaire». toute question nouvelle et/ou de suivi - veuillez poster une nouvelle question (s) !!! –

+0

Merci pour la mise à jour, il manque toujours "Count of Event Occurrences" par semaine. Où devrais-je réellement compter cette valeur? Votre script indique seulement les dates des tables de sortie en ce moment, alors que je veux signaler le nombre de noms d'événements par semaine, ou est-ce que je manque quelque chose? Merci encore pour la patience :) – Dirk

+0

Je pense vraiment que j'ai déjà répondu à votre question initiale: o) si vous en avez un nouveau - s'il vous plaît poster comme nouvelle question. Entre-temps, comme d'habitude, envisagez de voter et d'accepter (si vous acceptez) - Je pense que vous devriez: o) –