user_engagement sign_up remove eventos event app firebase google-bigquery firebase-analytics

remove - firebase events sign_up



Seleccione varios parĂ¡metros de evento en una sola fila para eventos de Firebase almacenados en Google BigQuery (2)

Usando SQL estándar (desmarque "Usar SQL heredado" en "Opciones de Mostrar" en la interfaz de usuario), puede expresar la consulta como:

SELECT event_dim.name as name, (SELECT value.int_value FROM UNNEST(event_dim.params) WHERE key = "productID") AS productID, (SELECT value.int_value FROM UNNEST(event_dim.params) WHERE key = "value") AS value FROM `dataset.mytable` AS t, t.event_dim AS event_dim;

Editar: ejemplo actualizado para incluir int_value como parte del value basado en el comentario a continuación. Aquí hay un ejemplo autónomo que también demuestra el enfoque:

WITH T AS ( SELECT ARRAY_AGG(event_dim) AS event_dim FROM ( SELECT STRUCT( "foo" AS name, ARRAY<STRUCT<key STRING, value STRUCT<int_value INT64, string_value STRING>>>[ ("productID", (10, NULL)), ("value", (5, NULL)) ] AS params) AS event_dim UNION ALL SELECT STRUCT( "bar" AS name, ARRAY<STRUCT<key STRING, value STRUCT<int_value INT64, string_value STRING>>>[ ("productID", (13, NULL)), ("value", (42, NULL)) ] AS params) AS event_dim ) ) SELECT event_dim.name as name, (SELECT value.int_value FROM UNNEST(event_dim.params) WHERE key = "productID") AS productID, (SELECT value.int_value FROM UNNEST(event_dim.params) WHERE key = "value") AS value FROM T AS t, t.event_dim AS event_dim;

Intento realizar una consulta muy simple para los eventos de Firebase almacenados en Google BigQuery, pero no puedo encontrar la manera de hacerlo.

En la aplicación de Android, estoy registrando un evento como este:

Bundle params = new Bundle(); params.putInt("productID", productId); params.putInt(FirebaseAnalytics.Param.VALUE, value); firebaseAnalytics.logEvent("productEvent", params);

Entonces, en BigQuery tengo algo como esto:

___________________ _______________________ ____________________________ | event_dim.name | event_dim.params.key | event_dim.params.int_value | |___________________|_______________________|____________________________| | productEvent | productID | 25 | | |_______________________|____________________________| | | value | 1253 | |___________________|_______________________|____________________________|

Cuando obtengo los datos de esta tabla, obtengo dos filas:

___________________ _______________________ ____________________________ |event_dim.name | event_dim.params.key | event_dim.params.int_value | |___________________|_______________________|____________________________| | productEvent | productID | 25 | | productEvent | value | 12353 |

Pero lo que realmente necesito es una cláusula SELECT de esta tabla para obtener los datos de la siguiente manera:

___________________ _____________ _________ | name | productID | value | |___________________|_____________|_________| | productEvent | 25 | 12353 |

Alguna idea o sugerencia?


Puede pivotar los valores en columnas como esta

SELECT event_dim.name as name, MAX(IF(event_dim.params.key = "productID", event_dim.params.int_value, NULL)) WITHIN RECORD productID, MAX(IF(event_dim.params.key = "value", event_dim.params.int_value, NULL)) WITHIN RECORD value, FROM [events]

En caso de que desee generar este comando usando SQL, consulte esta solución: Pivotar campos repetidos en BigQuery