BigQuery Export 架構

本文將說明匯出至 BigQuery 的 Google Analytics (分析) 4 資源資料以及 Google Analytics for Firebase 資料所使用的格式和架構。

資料集

針對每一個連至 BigQuery 的 Google Analytics (分析) 4 資源和 Firebase 專案,系統會分別在 BigQuery 專案中加入一個名為「analytics_<property_id>」的資料集。資源 ID 是指 Analytics (分析) 資源 ID,可在 Google Analytics (分析) 4 資源的資源設定以及 Firebase 的應用程式數據分析設定中找到。每個已啟用 BigQuery 匯出功能的 Google Analytics (分析) 4 資源和應用程式,都會將自身資料匯出至該單一資料集。

表格

在每個資料集中,系統會將每天匯出的資料匯入表格,表格的格式為「events_YYYYMMDD」。

當天收到的應用程式事件也會匯進名稱格式為「events_intraday_YYYYMMDD」的表格,系統會在當中即時填入收集到的應用程式事件資料。

如果您使用的是 BigQuery 沙箱,系統不會匯入任何當天事件,且需要遵循其他限制

如要匯入當天資料,請從沙箱升級

在表格中,每一個資料列都對應一項由 Analytics (分析) SDK 上傳的事件。

系統匯出的資料欄如下所示:

 

欄位名稱 資料類型 說明
應用程式    
app_info RECORD 應用程式資訊的記錄。
app_info.id STRING 應用程式套件名稱或軟體包 ID。
app_info.firebase_app_id STRING 與應用程式相關聯的 Firebase 應用程式 ID。
app_info.install_source STRING 使用者透過哪個商店安裝了應用程式。
app_info.version STRING 應用程式的 versionName (Android) 或簡短版軟體包版本名稱。
裝置    
device RECORD 裝置資訊記錄。
device.category STRING 裝置類別 (行動裝置、平板電腦、桌機)。
device.mobile_brand_name STRING 裝置品牌名稱。
device.mobile_model_name STRING 裝置型號名稱。
device.mobile_marketing_name STRING 裝置行銷名稱。
device.mobile_os_hardware_model STRING 直接擷取自作業系統的裝置型號資訊。
device.operating_system STRING 裝置搭載的作業系統。
device.operating_system_version STRING 作業系統版本。
device.vendor_id STRING IDFV (供應商識別碼,收集不到廣告識別碼時才擷取這項資訊)。
device.advertising_id STRING 廣告 ID/廣告識別碼。
device.language STRING 作業系統語言。
device.time_zone_offset_seconds INTEGER 與 GMT 的時差 (以秒為單位)。
device.is_limited_ad_tracking BOOLEAN

裝置的「限制廣告追蹤」設定。

在 iOS14 以上版本中,如果 IDFA 的值不是零,就會傳回 false。

串流和平台    
stream_id STRING 串流的數字 ID。
platform STRING 建置應用程式時所用的平台。
使用者    
user_first_touch_timestamp INTEGER 使用者初次開啟應用程式或造訪網站的時間 (以微秒為單位)。
user_id STRING 透過 setUserId API 設定的 User ID。
user_pseudo_id STRING 使用者的匿名 ID (例如應用程式執行個體 ID)。
user_properties RECORD setUserProperty API 所設定使用者屬性的重複記錄。
user_properties.key STRING 使用者屬性的名稱。
user_properties.value RECORD 使用者屬性值記錄。
user_properties.value.string_value STRING 使用者屬性的字串值。
user_properties.value.int_value INTEGER 使用者屬性的整數值。
user_properties.value.double_value FLOAT 使用者屬性的雙精度浮點數值。
user_properties.value.float_value FLOAT 目前不使用這個欄位。
user_properties.value.set_timestamp_micros INTEGER 上次設定使用者屬性的時間 (以毫秒為單位)。
user_ltv RECORD 使用者的效期價值資訊記錄;當日資料表格中的這個欄位不會填入資料。
user_ltv.revenue FLOAT 使用者的效期價值 (收益);當日資料表格中的這個欄位不會填入資料。
user_ltv.currency STRING 使用者的效期價值 (貨幣);當日資料表格中的這個欄位不會填入資料。
廣告活動   注意事項:系統會根據跨管道最終點擊為 traffic_source 歸因。如果使用者在安裝後與後續的廣告活動互動,traffic_source 值不會變動。
traffic_source RECORD 初次招攬到使用者的流量來源;當日資料表格中的這個欄位不會填入資料。
traffic_source.name STRING 初次招攬到使用者的行銷廣告活動名稱;當日資料表格中的這個欄位不會填入資料。
traffic_source.medium STRING 初次招攬到使用者的媒介名稱 (付費搜尋、隨機搜尋或電子郵件等);當日資料表格中的這個欄位不會填入資料。
traffic_source.source STRING 初次招攬到使用者的聯播網名稱;當日資料表格中的這個欄位不會填入資料。
地理區域    
geo RECORD 使用者地理區域資訊的記錄。
geo.continent STRING 記錄事件時使用者所在的洲別 (以 IP 位址為依據)。
geo.sub_continent STRING 記錄事件時使用者所在的子洲別 (以 IP 位址為依據)。
geo.country STRING 記錄事件時使用者所在的國家/地區 (以 IP 位址為依據)。
geo.region STRING 記錄事件時使用者所在的區域 (以 IP 位址為依據)。
geo.metro STRING 記錄事件時使用者所在的都會區 (以 IP 位址為依據)。
geo.city STRING 記錄事件時使用者所在的城市 (以 IP 位址為依據)。
事件    
event_date STRING 記錄到事件的日期 (以應用程式註冊時區為準,格式為 YYYYMMDD)。
event_timestamp INTEGER 在用戶端記錄到事件的時間 (以毫秒為單位,採用世界標準時間)。
event_previous_timestamp INTEGER 上一次在用戶端記錄到事件的時間 (以毫秒為單位,採用世界標準時間)。
event_name STRING 活動的名稱。
event_params RECORD 此事件相關參數的重複記錄。
event_params.key STRING 事件參數鍵。
event_params.value RECORD 事件參數值的記錄。
event_params.value.string_value STRING 事件參數字串值。
event_params.value.int_value INTEGER 事件參數整數值。
event_params.value.double_value FLOAT 事件參數的雙精度浮點數值。
event_params.value.float_value FLOAT 事件參數的浮點數值;目前不使用這個欄位。
event_value_in_usd FLOAT 事件「value」參數的幣別換算價值 (以美元計)。
event_bundle_sequence_id INTEGER 上傳了這些事件的軟體包的序列 ID。
event_server_timestamp_offset INTEGER 收集時間與上傳時間的時間戳記差距 (以微秒為單位)。
電子商務    
電子商務 RECORD 電子商務相關資訊記錄。
ecommerce.total_item_quantity INTEGER 此事件中的商品總數,亦即 items.quantity 的總和。
ecommerce.purchase_revenue_in_usd FLOAT 此事件的購買收益,以標準單位的美元表示。系統僅會針對購買事件填入適當值。
ecommerce.purchase_revenue FLOAT 此事件的購買收益,以標準單位的當地幣別表示。系統僅會針對購買事件填入適當值。
ecommerce.refund_value_in_usd ecommerce.refund_value_in_usd 此事件中的退款金額,以標準單位的美元表示。系統僅會針對退款事件填入適當值。
ecommerce.refund_value FLOAT 此事件中的退款金額,以標準單位的當地幣別表示。系統僅會針對退款事件填入適當值。
ecommerce.shipping_value_in_usd FLOAT 此事件中的運費,以標準單位的美元表示。
ecommerce.shipping_value FLOAT 此事件中的運費,以標準單位的當地幣別表示。
ecommerce.tax_value_in_usd FLOAT 此事件中的稅額,以標準單位的美元表示。
ecommerce.tax_value FLOAT 此事件中的稅額,以標準的當地貨幣單位表示。
ecommerce.transaction_id STRING 電子商務交易的交易 ID。
ecommerce.unique_items INTEGER 此事件中的不重複商品數量,根據 item_id、item_name 和 item_brand 計算得出。
商品    
items RECORD 此事件內含商品的重複記錄。
items.item_id STRING 商品的 ID。
items.item_name STRING 商品名稱。
items.item_brand STRING 商品品牌。
items.item_variant STRING 商品的子類。
items.item_category STRING 商品類別。
items.item_category2 STRING 商品的子類別。
items.item_category3 STRING 商品的子類別。
items.item_category4 STRING 商品的子類別。
items.item_category5 STRING 商品的子類別。
items.price_in_usd FLOAT 商品價格,以標準單位的美元表示。
items.price FLOAT 商品價格,以當地幣別表示。
items.quantity INTEGER 商品數量。
items.item_revenue_in_usd FLOAT 此商品的收益,計算方式為 price_in_usd 乘以數量。系統僅會針對購買事件填入適當值 (以標準單位的美元表示)。
items.item_revenue FLOAT 此商品的收益,計算方式為價格乘以數量。系統僅會針對購買事件填入適當值 (以標準單位的當地幣別表示)。
items.item_refund_in_usd FLOAT 此商品的退款金額,計算方式為 price_in_usd 乘以數量。系統僅會針對退款事件填入適當值 (以標準單位的美元表示)。
items.item_refund FLOAT 此商品的退款金額,計算方式為價格乘以數量。系統僅會針對退款事件填入適當值 (以標準單位的當地幣別表示)。
items.coupon STRING 已套用至此商品的優待券代碼。
items.affiliation STRING 產品關聯,用來指定供貨公司或實體商店位置。
items.location_id STRING 與商品相關聯的位置。
items.item_list_id STRING 使用者在其中看到商品的清單 ID。
items.item_list_name STRING 使用者在其中看到商品的清單名稱。
Items.item_list_index STRING 商品在清單中的位置。
items.promotion_id STRING 產品的促銷 ID。
items.promotion_name STRING 產品的促銷名稱。
items.creative_name STRING 促銷地點所使用廣告素材的名稱。
items.creative_slot STRING 廣告素材版位的名稱。
網站    
web_info RECORD 網站資料資訊記錄。
web_info.hostname STRING 與記錄事件相關聯的主機名稱。
web_info.browser STRING 使用者瀏覽內容時所用的瀏覽器。
web_info.browser_version STRING 使用者瀏覽內容時所用的瀏覽器版本。

 

 

將 SDK 更新至 Android 17.2.5 (或更新版本) 和/或 iOS 16.20.0 (或更新版本) 的注意事項

如果您使用的是舊版 SDK,且打算升級至 Android 17.2.5 (或更新版本) 和/或 iOS 16.20.0 (或更新版本),應考慮以下事項:

  • 升級之後,您只能存取重複項目陣列中的項目資料;標準事件參數無法再像先前的 SDK 版本一樣使用項目資料。
  • 這項變更是為了支援多產品分析。
  • 因此,對商品/產品資料的參照可能需要調整。
請使用這段指令碼,將現有的 BigQuery 資料集從舊的匯出架構遷移至新架構
  1. 登入 Cloud Platform Console > 「管理資源」頁面。
  2. 開啟需要遷移資料的專案,然後按一下頁面頂端的 [啟用 Google Cloud Shell]。
  3. 殼層開啟後,請將下列指令碼複製到名為 migration_script.sql 的檔案:
    1. 送出 cat > migration_script.sql 指令。
    2. 複製以下指令並貼進殼層。
    3. 按下 Ctrl+D 鍵以儲存並離開。
    指令碼 (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. 開啟新殼層,並將下列 bash 指令碼複製到名為 migration.sh 的檔案:
    1. 送出 cat > migration.sh 指令。
    2. 複製以下指令並貼進殼層。
    3. 按下 Ctrl+D 鍵以儲存並離開。
    請修改以下指令碼來納入您的 Analytics (分析) 資源 ID、BigQuery 專案 ID、Firebase 應用程式 ID、BigQuery 資料集名稱,以及所需資料的開始和結束日期。
    指令碼 (migration.sh):
    # 專案的 Analytics (分析) 資源 ID。您可在 Firebase 的 Analytics (分析) 設定中找到這個 ID。
    PROPERTY_ID=your Analytics property ID
    
    # BigQuery Export 專案。
    BQ_PROJECT_ID="您的 BigQuery 專案 ID" (例如 "firebase-public-project")
    
    # 應用程式的 Firebase 應用程式 ID
    FIREBASE_APP_ID="您的 Firebase 應用程式 ID" (例如 "1:300830567303:ios:09b1ab1d3ca29bda")
    
    # 資料集匯入來源。
    BQ_DATASET="做為匯入來源的 BigQuery 資料集的名稱" (例如 "com_firebase_demo_IOS")
    
    # 平台
    PLATFORM="應用程式平台 (ANDROID 或 IOS)"
    
    # 所需遷移資料的日期範圍,[START_DATE,END_DATE] (開始與結束日期) 均含括在內。
    START_DATE=20180324
    END_DATE=20180327
    
    # 除非您熟悉編寫程式碼的方式,否則請勿修改以下指令碼 :)
    startdate=$(date -d"$START_DATE"  +%Y%m%d) || exit -1
    enddate=$(date -d"$END_DATE"  +%Y%m%d) || exit -1
    
    # 疊代期間的日期。
    DATE="$startdate"
    while [ "$DATE" -le "$enddate" ]; do
    
            # 以上述參數建構的 BQ 表格。
            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
    
    # 指令碼尾端
    
    
  5. 開啟新殼層並送出 bash migration.sh 指令

 

舊的匯出架構

user_dim

欄位名稱 資料類型 說明
user_dim RECORD 使用者維度記錄。
user_dim.user_id STRING 透過 setUserId API 設定的 User ID。
user_dim.first_open_timestamp_micros INTEGER 使用者初次開啟應用程式的時間 (以毫秒為單位)。
user_dim.user_properties RECORD setUserProperty API 所設定使用者屬性的重複記錄。
user_dim.user_properties.key STRING 使用者屬性名稱。
user_dim.user_properties.value RECORD 使用者屬性相關資訊記錄。
user_dim.user_properties.value.value RECORD 使用者屬性值記錄。
user_dim.user_properties.value.value.string_value STRING 使用者屬性的字串值。
user_dim.user_properties.value.value.int_value INTEGER 使用者屬性的整數值。
user_dim.user_properties.value.value.double_value FLOAT 使用者屬性的雙精度浮點數值。
user_dim.user_properties.value.set_timestamp_usec INTEGER 上次設定使用者屬性的時間 (以毫秒為單位)。
user_dim.user_properties.value.index INTEGER 使用者屬性的索引 (0-24)。
user_dim.device_info RECORD 裝置資訊記錄。
user_dim.device_info.device_category STRING 裝置類別 (行動裝置、平板電腦、桌機)。
user_dim.device_info.mobile_brand_name STRING 裝置品牌名稱。
user_dim.device_info.mobile_model_name STRING 裝置型號名稱。
user_dim.device_info.mobile_marketing_name STRING 裝置行銷名稱。
user_dim.device_info.device_model STRING 裝置型號。
user_dim.device_info.platform_version STRING 作業系統版本。
user_dim.device_info.device_id STRING IDFV (僅在無法使用 IDFA 時顯示)。
user_dim.device_info.resettable_device_id STRING 廣告 ID/廣告識別碼。
user_dim.device_info.user_default_language STRING 作業系統語言。
user_dim.device_info.device_time_zone_offset_seconds INTEGER 與 GMT 的時差 (以秒為單位)。
user_dim.device_info.limited_ad_tracking BOOLEAN 裝置的「限制廣告追蹤」設定。
user_dim.geo_info RECORD 使用者地理區域資訊的記錄。
user_dim.geo_info.continent STRING 記錄事件時使用者所在的洲別 (以 IP 位址為依據)。
user_dim.geo_info.country STRING 記錄事件時使用者所在的國家/地區 (以 IP 位址為依據)。
user_dim.geo_info.region STRING 記錄事件時使用者所在的區域 (以 IP 位址為依據)。
user_dim.geo_info.city STRING 記錄事件時使用者所在的城市 (以 IP 位址為依據)。
user_dim.app_info RECORD 應用程式資訊的記錄。
user_dim.app_info.app_version STRING 應用程式的 versionName (Android) 或簡短版軟體包版本名稱。
user_dim.app_info.app_instance_id STRING 這個應用程式執行個體的不重複 ID。
user_dim.app_info.app_store STRING 安裝這個應用程式的商店。
user_dim.app_info.app_platform STRING 執行這個應用程式的平台。
user_dim.traffic_source RECORD 用來開發使用者的流量來源名稱;當日資料表格中的這個欄位不會填入資料。
user_dim.traffic_source.user_acquired_campaign STRING 招攬到使用者的行銷廣告活動名稱;當日資料表格中的這個欄位不會填入資料。
user_dim.traffic_source.user_acquired_medium STRING 招攬到使用者的媒介名稱 (付費搜尋、隨機搜尋或電子郵件等)。當日資料表格中的這個欄位不會填入資料。
user_dim.traffic_source.user_acquired_source STRING 招攬到使用者的聯播網名稱;當日資料表格中的這個欄位不會填入資料。
user_dim.bundle_info RECORD 上傳事件所屬組合的相關資訊記錄。
user_dim.bundle_info.bundle_sequence_id INTEGER 上傳了這些事件的軟體包的序列 ID。
user_dim.ltv_info RECORD 這位使用者的生命週期價值資訊記錄;當日資料表格中的這個欄位不會填入資料。
user_dim.ltv_info.revenue FLOAT 這位使用者的生命週期價值 (收益);當日資料表格中的這個欄位不會填入資料。
user_dim.ltv_info.currency STRING 這位使用者的生命週期價值 (貨幣);當日資料表格中的這個欄位不會填入資料。
 

event_dim

欄位名稱 資料類型 說明
event_dim RECORD 這個組合中事件相關資訊的重複記錄。
event_dim.date STRING 記錄到這個事件的日期 (格式為 YYYYMMDD,以您的應用程式註冊時區為準)。
event_dim.name STRING 這個事件的名稱。
event_dim.params RECORD 此事件相關參數的重複記錄。
event_dim.params.key STRING 事件參數鍵。
event_dim.params.value RECORD 事件參數值的記錄。
event_dim.params.value.string_value STRING 事件參數字串值。
event_dim.params.value.int_value INTEGER 事件參數整數值。
event_dim.params.value.double_value FLOAT 事件參數的雙精度浮點數值。
event_dim.timestamp_micros INTEGER 在用戶端上記錄到這個事件的時間 (以毫秒為單位,採用世界標準時間)。
event_dim.previous_timestamp_micros INTEGER 之前在用戶端上記錄到這個事件的時間 (以毫秒為單位,採用世界標準時間)。
這對您有幫助嗎?
我們應如何改進呢?
搜尋
清除搜尋內容
關閉搜尋框
Google 應用程式
主選單
搜尋說明中心
true
5054967
false