[GA4] Esquema de BigQuery Export

En este artículo, se explican el formato y el esquema de los datos de la propiedad Google Analytics 4 y de Google Analytics para Firebase que se exportan a BigQuery.

Conjuntos de datos

Para cada propiedad Google Analytics 4 y proyecto de Firebase vinculados a BigQuery, se agrega un solo conjunto de datos llamado "analytics_<ID_de_propiedad>" a su proyecto de BigQuery. El ID de propiedad es aquel que identifica su propiedad de Analytics, y puede consultarlo en las secciones "Property Settings" de su propiedad Google Analytics 4 y "App Analytics Settings" de Firebase. Cada aplicación y propiedad Google Analytics 4 para las que esté habilitada la exportación de BigQuery transferirá sus datos a ese único conjunto de datos.

Tablas

En cada conjunto de datos, se importa una tabla por cada día de exportación. Estas tablas tienen el formato "events_YYYYMMDD".

Además, se importa una tabla para los eventos de la aplicación que se reciben durante el día actual. Esta tabla se denomina "events_intraday_YYYYMMDD" y se completa en tiempo real a medida que se recopilan los eventos de la aplicación.

Si usa la zona de pruebas de BigQuery, no hay importación intradiaria de eventos, y se aplican límites adicionales.

Actualice desde la zona de pruebas si desea realizar importaciones intradiarias.

Filas

Cada fila de una tabla corresponde a un único evento subido por el SDK de Analytics.

Columnas

A continuación, se indican las columnas incluidas en la exportación.

 

Nombre del campo Tipo de datos Descripción
Aplicación    
app_info RECORD Un registro de información sobre la aplicación
app_info.id STRING El nombre o ID del paquete de la aplicación
app_info.firebase_app_id STRING El ID de la aplicación de Firebase asociado con la aplicación
app_info.install_source STRING La tienda que instaló la aplicación
app_info.version STRING El versionName de la aplicación (Android) o la versión abreviada del paquete
Dispositivo    
device RECORD Un registro de la información del dispositivo
device.category STRING La categoría del dispositivo (dispositivo móvil, tablet, computadora de escritorio)
device.mobile_brand_name STRING El nombre de la marca del dispositivo
device.mobile_model_name STRING El nombre del modelo del dispositivo
device.mobile_marketing_name STRING El nombre comercial del dispositivo
device.mobile_os_hardware_model STRING La información del modelo del dispositivo extraída directamente del sistema operativo
device.operating_system STRING El sistema operativo del dispositivo
device.operating_system_version STRING La versión del SO
device.vendor_id STRING IDFV (presente solo si no se cuenta con el IDFA)
device.advertising_id STRING IDFA o ID de publicidad
device.language STRING El idioma del SO
device.time_zone_offset_seconds INTEGER Diferencia con respecto a la GMT en segundos
device.is_limited_ad_tracking BOOLEAN

La configuración del límite de seguimiento de anuncios del dispositivo.

En la versión 14+ de iOS, se muestra el valor "false" si el IDFA no es cero

Flujo y plataforma    
stream_id STRING El ID numérico del flujo
platform STRING La plataforma en la que se compiló la aplicación
Usuario    
user_first_touch_timestamp INTEGER La hora (en microsegundos) a la que el usuario accedió a la aplicación o visitó el sitio por primera vez
user_id STRING El ID de usuario que se configura a través de la API setUserId
user_pseudo_id STRING El ID seudónimo (p. ej., ID de instancia de la aplicación) para el usuario
user_properties RECORD Un registro repetido de las propiedades del usuario que se configura con la API setUserProperty
user_properties.key STRING El nombre de la propiedad del usuario
user_properties.value RECORD Un registro del valor de la propiedad del usuario
user_properties.value.string_value STRING El valor de string de la propiedad del usuario
user_properties.value.int_value INTEGER El valor entero de la propiedad del usuario
user_properties.value.double_value FLOAT El valor doble de la propiedad del usuario
user_properties.value.float_value FLOAT Este campo no se utiliza actualmente
user_properties.value.set_timestamp_micros INTEGER La hora (en microsegundos) a la que la propiedad del usuario se configuró por última vez
user_ltv RECORD Un registro de la información del valor del ciclo de vida del cliente sobre el usuario (este campo no se propaga en las tablas intradía)
user_ltv.revenue FLOAT El valor del ciclo de vida del cliente (ingresos) del usuario (este campo no se propaga en las tablas intradía)
user_ltv.currency STRING El valor del ciclo de vida del cliente (moneda) del usuario (este campo no se propaga en las tablas intradía)
Campaña   Nota: La atribución "traffic_source" se basa en el último clic de varios canales y sus valores no cambian si el usuario interactúa con campañas posteriores después de la instalación.
traffic_source RECORD El nombre de la fuente de tráfico que primero adquirió al usuario (este campo no se propaga en las tablas intradía)
traffic_source.name STRING El nombre de la campaña de marketing que primero adquirió al usuario (este campo no se propaga en las tablas intradía)
traffic_source.medium STRING El nombre del medio (búsqueda pagada, búsqueda orgánica, correo electrónico, etc.) que primero adquirió al usuario (este campo no se propaga en las tablas intradía)
traffic_source.source STRING El nombre de la red que primero adquirió al usuario (este campo no se propaga en las tablas intradía)
Ubicación geográfica    
geo RECORD Un registro de la información geográfica del usuario
geo.continent STRING El continente desde el que se informaron los eventos, según la dirección IP
geo.sub_continent STRING El subcontinente desde el que se informaron los eventos, según la dirección IP
geo.country STRING El país desde el que se informaron los eventos, según la dirección IP
geo.region STRING La región desde la que se informaron los eventos, según la dirección IP
geo.metro STRING El área metropolitana desde la que se informaron los eventos, según la dirección IP
geo.city STRING La ciudad desde la que se informaron los eventos, según la dirección IP
Evento    
event_date STRING La fecha en la que se registró el evento (con el formato AAAAMMDD según la zona horaria registrada en su aplicación)
event_timestamp INTEGER La hora (en microsegundos, UTC) a la que se registró el evento en el cliente
event_previous_timestamp INTEGER La hora (en microsegundos, UTC) a la que se registró anteriormente el evento en el cliente
event_name STRING El nombre del evento
event_params RECORD Un registro repetido de los parámetros asociados con este evento
event_params.key STRING La clave del parámetro del evento
event_params.value RECORD Un registro del valor del parámetro del evento
event_params.value.string_value STRING El valor de string del parámetro del evento
event_params.value.int_value INTEGER El valor entero del parámetro del evento
event_params.value.double_value FLOAT El valor doble del parámetro del evento
event_params.value.float_value FLOAT El valor flotante del parámetro del evento. Este campo no se utiliza actualmente
event_value_in_usd FLOAT El valor monetario expresado en USD del parámetro "value" del evento
event_bundle_sequence_id INTEGER El ID secuencial del paquete en el que se subieron estos eventos
event_server_timestamp_offset INTEGER La compensación en la marca de tiempo entre la hora de la recopilación y la hora de la carga expresada en microsegundos
Comercio electrónico    
ecommerce RECORD Un registro de información sobre comercio electrónico
ecommerce.total_item_quantity INTEGER Cantidad total de artículos en este evento, que es la suma de items.quantity
ecommerce.purchase_revenue_in_usd FLOAT Ingresos por compras de este evento, expresados en USD con la unidad estándar. Se propaga solo para eventos de compra
ecommerce.purchase_revenue FLOAT Ingresos por compras de este evento, expresados en la moneda local con la unidad estándar. Se propaga solo para eventos de compra
ecommerce.refund_value_in_usd FLOAT El importe de reembolso en este evento, expresado en USD con la unidad estándar. Se propaga solo para eventos de reembolso
ecommerce.refund_value FLOAT El importe de reembolso en este evento, expresado en la moneda local con la unidad estándar. Se propaga solo para eventos de reembolso
ecommerce.shipping_value_in_usd FLOAT El costo de envío en este evento, expresado en USD con la unidad estándar
ecommerce.shipping_value FLOAT El costo de envío en este evento, expresado en la moneda local
ecommerce.tax_value_in_usd FLOAT El valor de los impuestos en este evento, expresado en USD con la unidad estándar
ecommerce.tax_value FLOAT El valor de los impuestos en este evento, expresado en la moneda local con la unidad estándar
ecommerce.transaction_id STRING El ID de transacción de la transacción de comercio electrónico.
ecommerce.unique_items INTEGER La cantidad de artículos únicos en este evento, según item_id, item_name y item_brand
Artículos    
items RECORD Un registro repetido de los artículos incluidos en este evento
items.item_id STRING El ID del artículo
items.item_name STRING El nombre del artículo
items.item_brand STRING La marca del artículo
items.item_variant STRING La variante del artículo
items.item_category STRING La categoría del artículo
items.item_category2 STRING La subcategoría del artículo
items.item_category3 STRING La subcategoría del artículo
items.item_category4 STRING La subcategoría del artículo
items.item_category5 STRING La subcategoría del artículo
items.price_in_usd FLOAT El precio del artículo, expresado en USD con la unidad estándar
items.price FLOAT El precio del artículo expresado en la moneda local
items.quantity INTEGER La cantidad de unidades del artículo en cuestión
items.item_revenue_in_usd FLOAT Los ingresos de este artículo, calculados mediante price_in_usd × quantity. Se propaga solo para eventos de compra, en USD con la unidad estándar
items.item_revenue FLOAT Los ingresos de este artículo, calculados mediante price × quantity. Se propaga solo para eventos de compra, en la moneda local con la unidad estándar
items.item_refund_in_usd FLOAT El valor de reembolso de este artículo, calculado mediante price_in_usd × quantity. Se propaga solo para eventos de reembolso, en USD con la unidad estándar
items.item_refund FLOAT El valor de reembolso de este artículo, calculado mediante price × quantity. Se propaga solo para eventos de reembolso, en la moneda local con la unidad estándar
items.coupon STRING Código de cupón aplicado a este artículo
items.affiliation STRING Afiliación de un producto para designar la empresa que lo proporciona o la ubicación de la tienda física
items.location_id STRING La ubicación asociada con el artículo
items.item_list_id STRING El ID de la lista en la que se presentó el artículo al usuario
items.item_list_name STRING El nombre de la lista en la que se presentó el artículo al usuario
Items.item_list_index STRING La posición del artículo en una lista
items.promotion_id STRING El ID de una promoción de producto
items.promotion_name STRING El nombre de una promoción de producto
items.creative_name STRING El nombre de la creatividad utilizada en un espacio promocional
items.creative_slot STRING El nombre del espacio para creatividades
Web    
web_info RECORD Un registro de información sobre los datos web
web_info.hostname STRING El nombre de host asociado con el evento registrado
web_info.browser STRING El navegador en el que el usuario vio el contenido
web_info.browser_version STRING La versión del navegador en el que el usuario vio el contenido
Información de privacidad    
privacy_info.ads_storage STRING

Indica si la segmentación de anuncios está habilitada para un usuario.

Valores posibles: Yes, No, Unset

privacy_info.analytics_storage STRING

Indica si el almacenamiento de Analytics está habilitado para el usuario.

Valores posibles: Yes, No, Unset

privacy_info.uses_transient_token STRING

Indica si un usuario web rechazó el almacenamiento de Analytics y el desarrollador habilitó la medición sin cookies en función de tokens transitorios en los datos del servidor.

Valores posibles: Yes, No, Unset

 

 

Consideraciones para actualizar los SDK a Android 17.2.5 (o versiones posteriores) o iOS 16.20.0 (o versiones posteriores)

Si utilizó versiones anteriores de cualquiera de estos SDK y planea actualizarlos a Android 17.2.5 (o posterior) o a iOS 16.20.0 (o posterior), debe considerar lo siguiente:

  • A partir del momento en que realice la actualización, solo podrá acceder a los datos de los elementos que se encuentren dentro del arreglo de elementos repetidos. Los datos de los elementos ya no estarán disponibles en los parámetros de eventos estándar como antes de estas versiones de los SDK.
  • Este cambio se realizó con el fin de admitir el análisis de varios productos.
  • Como resultado, es posible que deba ajustar sus referencias a los datos del artículo o producto.
Utilice la siguiente secuencia de comandos para migrar los conjuntos de datos de BigQuery existentes del esquema de exportación anterior al nuevo
  1. Acceda a Cloud Platform Console > Administrar recursos.
  2. Abra el proyecto cuyos datos desea migrar y haga clic en Activar Google Cloud Shell en la parte superior de la página.
  3. Cuando se abra el shell, copie la secuencia de comandos de abajo en un archivo llamado migration_script.sql:
    1. Ejecute el comando cat > migration_script.sql.
    2. Copie la siguiente secuencia de comandos y péguela en el shell.
    3. Presione Ctrl+D para guardar y salir.
    Secuencia de comandos (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. Abra un nuevo shell y copie la secuencia de comandos bash de abajo en un archivo llamado migration.sh:
    1. Ejecute el comando cat > migration.sh.
    2. Copie la siguiente secuencia de comandos y péguela en el shell.
    3. Presione Ctrl+D para guardar y salir.
    Modifique la siguiente secuencia de comandos para incluir su ID de propiedad de Analytics, el ID del proyecto de BigQuery, el ID de la aplicación de Firebase, el nombre del conjunto de datos de BigQuery y las fechas de inicio y finalización de los datos que desee.
    Secuencia de comandos (migration.sh):
    # ID de propiedad de Analytics para el proyecto. Búsquelo en la configuración de Analytics en Firebase.
    PROPERTY_ID="su ID de propiedad de Analytics"
    
    # Proyecto de BigQuery Export.
    BQ_PROJECT_ID="su ID del proyecto de BigQuery" (p. ej., "proyecto-público-Firebase")
    
    # ID de la aplicación de Firebase para la aplicación.
    FIREBASE_APP_ID="su ID de la aplicación de Firebase" (p. ej., "1:300830567303:ios:09b1ab1d3ca29bda")
    
    # Conjunto de datos desde el cual realizar la importación.
    BQ_DATASET="nombre del conjunto de datos de BigQuery desde el cual desea realizar la importación" (p. ej., "com_firebase_demo_IOS")
    
    # Plataforma
    PLATFORM="plataforma de la aplicación: ANDROID o iOS"
    
    # Período para el cual desea ejecutar la migración, [START_DATE,END_DATE] inclusive.
    START_DATE=20180324
    END_DATE=20180327
    
    # No modifique la siguiente secuencia de comandos a menos que esté seguro de lo que está haciendo :)
    startdate=$(date -d"$START_DATE"  +%Y%m%d) || exit -1
    enddate=$(date -d"$END_DATE"  +%Y%m%d) || exit -1
    
    # Repita para todas las fechas incluidas.
    DATE="$startdate"
    while [ "$DATE" -le "$enddate" ]; do
    
            # La tabla BQ que se construye a partir de los parámetros arriba mencionados.
            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 DE LA SECUENCIA DE COMANDOS
    
    
  5. Abra un nuevo shell y ejecute el comando bash migration.sh.

 

Esquema de exportación anterior

user_dim

Nombre del campo Tipo de datos Descripción
user_dim RECORD Un registro de las dimensiones de usuario
user_dim.user_id STRING El ID de usuario que se configura a través de la API setUserId
user_dim.first_open_timestamp_micros INTEGER La hora (en microsegundos) a la que el usuario abrió la aplicación por primera vez
user_dim.user_properties RECORD Un registro repetido de las propiedades del usuario que se configura con la API setUserProperty
user_dim.user_properties.key STRING El nombre de la propiedad del usuario
user_dim.user_properties.value RECORD Un registro de información sobre la propiedad del usuario
user_dim.user_properties.value.value RECORD Un registro del valor de la propiedad del usuario
user_dim.user_properties.value.value.string_value STRING El valor de string de la propiedad del usuario
user_dim.user_properties.value.value.int_value INTEGER El valor entero de la propiedad del usuario
user_dim.user_properties.value.value.double_value FLOAT El valor doble de la propiedad del usuario
user_dim.user_properties.value.set_timestamp_usec INTEGER La hora (en microsegundos) a la que la propiedad del usuario se configuró por última vez
user_dim.user_properties.value.index INTEGER El índice (0-24) de la propiedad del usuario
user_dim.device_info RECORD Un registro de la información del dispositivo
user_dim.device_info.device_category STRING La categoría del dispositivo (dispositivo móvil, tablet, computadora de escritorio)
user_dim.device_info.mobile_brand_name STRING El nombre de la marca del dispositivo
user_dim.device_info.mobile_model_name STRING El nombre del modelo del dispositivo
user_dim.device_info.mobile_marketing_name STRING El nombre comercial del dispositivo
user_dim.device_info.device_model STRING El modelo del dispositivo
user_dim.device_info.platform_version STRING La versión del SO
user_dim.device_info.device_id STRING IDFV (presente solo si IDFA no está disponible)
user_dim.device_info.resettable_device_id STRING IDFA o ID de publicidad
user_dim.device_info.user_default_language STRING El idioma del SO
user_dim.device_info.device_time_zone_offset_seconds INTEGER Diferencia con respecto a la GMT en segundos
user_dim.device_info.limited_ad_tracking BOOLEAN La configuración del límite de seguimiento de anuncios del dispositivo
user_dim.geo_info RECORD Un registro de la información geográfica del usuario
user_dim.geo_info.continent STRING El continente desde el que se informaron los eventos, según la dirección IP
user_dim.geo_info.country STRING El país desde el que se informaron los eventos, según la dirección IP
user_dim.geo_info.region STRING La región desde la que se informaron los eventos, según la dirección IP
user_dim.geo_info.city STRING La ciudad desde la que se informaron los eventos, según la dirección IP
user_dim.app_info RECORD Un registro de información sobre la aplicación
user_dim.app_info.app_version STRING El nombre de la versión de la aplicación (Android) o la versión abreviada del paquete
user_dim.app_info.app_instance_id STRING El ID único de esta instancia de la aplicación
user_dim.app_info.app_store STRING La tienda que instaló esta aplicación
user_dim.app_info.app_platform STRING La plataforma en la que se ejecuta esta aplicación
user_dim.traffic_source RECORD El nombre de la fuente de tráfico que se usó para adquirir al usuario (este campo no se propaga en las tablas intradía)
user_dim.traffic_source.user_acquired_campaign STRING El nombre de la campaña de marketing que adquirió al usuario (este campo no se propaga en las tablas intradía)
user_dim.traffic_source.user_acquired_medium STRING El nombre del medio (búsqueda de pago, búsqueda orgánica, correo electrónico, etc.) que adquirió al usuario (este campo no se propaga en las tablas intradía)
user_dim.traffic_source.user_acquired_source STRING El nombre de la red que adquirió al usuario (este campo no se propaga en las tablas intradía)
user_dim.bundle_info RECORD Un registro de la información sobre el conjunto en el que se subieron estos eventos
user_dim.bundle_info.bundle_sequence_id INTEGER El ID secuencial del conjunto en el que se subieron estos eventos
user_dim.ltv_info RECORD Un registro de la información del valor del ciclo de vida del cliente sobre este usuario (este campo no se propaga en las tablas intradía)
user_dim.ltv_info.revenue FLOAT El valor del ciclo de vida del cliente (ingresos) de este usuario (este campo no se propaga en las tablas intradía)
user_dim.ltv_info.currency STRING El valor del ciclo de vida del cliente (moneda) de este usuario (este campo no se propaga en las tablas intradía)
 

event_dim

Nombre del campo Tipo de datos Descripción
event_dim RECORD Un registro repetido de la información relativa a los eventos de este conjunto
event_dim.date STRING La fecha en la que se registró el evento (con el formato AAAAMMDD según la zona horaria registrada en su aplicación)
event_dim.name STRING El nombre de este evento
event_dim.params RECORD Un registro repetido de los parámetros asociados con este evento
event_dim.params.key STRING La clave del parámetro del evento
event_dim.params.value RECORD Un registro del valor del parámetro del evento
event_dim.params.value.string_value STRING El valor de string del parámetro del evento
event_dim.params.value.int_value INTEGER El valor entero del parámetro del evento
event_dim.params.value.double_value FLOAT El valor doble del parámetro del evento
event_dim.timestamp_micros INTEGER La hora (en microsegundos, UTC) a la que se registró este evento en el cliente
event_dim.previous_timestamp_micros INTEGER La hora (en microsegundos, UTC) a la que se registró anteriormente este evento en el cliente
¿Te resultó útil esto?
¿Cómo podemos mejorarla?
Búsqueda
Borrar búsqueda
Cerrar la búsqueda
Google Apps
Menú principal
Buscar en el Centro de asistencia
true
5054967
false