Giản đồ BigQuery Export

30/11/2019

Bài viết này giải thích định dạng và giản đồ của dữ liệu Google Analytics cho Firebase xuất sang BigQuery.

Tập dữ liệu

Với mỗi dự án Firebase được liên kết với BigQuery, một tập dữ liệu riêng lẻ có tên "analytics_ " được thêm vào dự án BigQuery của bạn. ID thuộc tính là ID thuộc tính Analytics trong Cài đặt Analytics trong Firebase. Mỗi ứng dụng mà tính năng BigQuery Export được bật sẽ xuất dữ liệu của ứng dụng sang tập dữ liệu riêng lẻ đó.

Bảng

Trong mỗi tập dữ liệu, bảng được nhập cho mỗi ngày xuất. Các bảng này có định dạng "events_YYYYMMDD". Ngoài ra, một bảng khác được nhập cho các sự kiện đã nhận trong suốt ngày hiện tại.  Bảng này có tên là “events_intraday_YYYYMMDD” và được điền trong thời gian thực khi các sự kiện được thu thập.

Hàng

Mỗi hàng trong một bảng tương ứng với một sự kiện đã được SDK Analytics tải lên.

Cột

Các cột bên trong dữ liệu xuất được liệt kê bên dưới.

 

Tên trường Loại dữ liệu Mô tả
Ứng dụng    
app_info RECORD Bản ghi thông tin về ứng dụng.
app_info.id STRING Tên gói hoặc ID gói của ứng dụng.
app_info.firebase_app_id STRING ID ứng dụng Firebase được liên kết với ứng dụng
app_info.install_source STRING Cửa hàng cài đặt ứng dụng.
app_info.version STRING versionName của ứng dụng (Android) hoặc phiên bản nhóm ngắn.
Thiết bị    
thiết bị RECORD Bản ghi thông tin thiết bị.
device.category STRING Danh mục thiết bị (điện thoại di động, máy tính bảng, máy tính để bàn).
device.mobile_brand_name STRING Thương hiệu thiết bị.
device.mobile_model_name STRING Tên mẫu thiết bị.
device.mobile_marketing_name STRING Tên tiếp thị của thiết bị.
device.mobile_os_hardware_model STRING Thông tin về mẫu thiết bị được truy xuất trực tiếp từ hệ điều hành.
device.operatingSystem STRING Hệ điều hành của thiết bị.
device.operating_system_version STRING Phiên bản hệ điều hành.
device.vendor_id STRING IDFV (chỉ có khi IDFA không được thu thập).
device.advertising_id STRING ID quảng cáo/IDFA.
device.language STRING Ngôn ngữ hệ điều hành.
device.time_zone_offset_seconds INTEGER Chênh lệch so với giờ GMT theo giây.
device.is_limited_ad_tracking BOOLEAN Cài đặt Giới hạn theo dõi quảng cáo của thiết bị.
Luồng và nền tảng    
stream_id STRING ID bằng số của luồng.
platform STRING Nền tảng nơi ứng dụng được xây dựng.
Người dùng    
user_first_touch_timestamp INTEGER Thời gian (bằng micrô giây) khi người dùng mở ứng dụng lần đầu tiên.
user_id STRING ID người dùng được đặt thông qua API setUserId.
user_pseudo_id STRING ID gán biệt danh (ví dụ: ID bản sao ứng dụng) cho người dùng.
user_properties RECORD Bản ghi trùng lặp các thuộc tính người dùng được đặt thông qua API setUserProperty.
user_properties.key STRING Tên của thuộc tính người dùng
user_properties.value RECORD Bản ghi giá trị thuộc tính người dùng.
user_properties.value.string_value STRING Giá trị chuỗi của thuộc tính người dùng.
user_properties.value.int_value INTEGER Giá trị số nguyên của thuộc tính người dùng.
user_properties.value.double_value FLOAT Giá trị gấp đôi của thuộc tính người dùng.
user_properties.value.float_value FLOAT Trường này hiện chưa được sử dụng.
user_properties.value.set_timestamp_micros INTEGER Thời gian (bằng micrô giây) khi đặt thuộc tính người dùng lần gần đây nhất.
user_ltv RECORD Bản ghi thông tin Giá trị lâu dài về người dùng. Với các bảng trong ngày, trường này không điền dữ liệu.
user_ltv.revenue FLOAT Giá trị lâu dài (doanh thu) của người dùng. Với các bảng trong ngày, trường này không điền dữ liệu.
user_ltv.currency STRING Giá trị lâu dài (tiền tệ) của người dùng. Với các bảng trong ngày, trường này không điền dữ liệu.
Chiến dịch   Lưu ý: phân bổ traffic_source được dựa trên nhấp chuột cuối cùng của nhiều kênh.
traffic_source RECORD Tên của nguồn lưu lượng truy cập được dùng để chuyển đổi người dùng. Với các bảng trong ngày, trường này không điền dữ liệu.
traffic_source.name STRING Tên của chiến dịch tiếp thị đã chuyển đổi người dùng. Với các bảng trong ngày, trường này không điền dữ liệu.
traffic_source.medium STRING Tên của phương tiện (tìm kiếm có trả tiền, tìm kiếm không phải trả tiền, email, v.v.) đã chuyển đổi người dùng. Với các bảng trong ngày, trường này không điền dữ liệu.
traffic_source.source STRING Tên của mạng đã chuyển đổi người dùng. Với các bảng trong ngày, trường này không điền dữ liệu.
Địa lý    
geo RECORD Bản ghi thông tin địa lý của người dùng.
geo.continent STRING Lục địa mà từ đó các sự kiện được báo cáo theo địa chỉ IP.
geo.sub_continent STRING Tiểu lục địa mà từ đó các sự kiện được báo cáo theo địa chỉ IP.
geo.country STRING Quốc gia mà từ đó các sự kiện được báo cáo theo địa chỉ IP.
geo.region STRING Vùng mà từ đó các sự kiện được báo cáo theo địa chỉ IP.
geo.metro STRING Thành phố lớn mà từ đó các sự kiện được báo cáo theo địa chỉ IP.
geo.city STRING Thành phố mà từ đó các sự kiện được báo cáo theo địa chỉ IP.
Sự kiện    
event_date STRING Ngày đã ghi nhật ký cho sự kiện này (định dạng YYYYMMDD theo múi giờ đã đăng ký của ứng dụng).
event_timestamp INTEGER Thời gian (tính bằng micrô giây, UTC) mà tại đó sự kiện được ghi lại trên ứng dụng.
event_previous_timestamp INTEGER Thời gian (tính bằng micrô giây, UTC) mà tại đó sự kiện được ghi nhật ký trước đó trên ứng dụng.
event_name STRING Tên của sự kiện.
event_params RECORD Bản ghi trùng lặp các thông số liên quan đến sự kiện này.
event_params.key STRING Khóa của thông số sự kiện.
event_params.value RECORD Bản ghi giá trị của thông số sự kiện.
event_params.value.string_value STRING Giá trị chuỗi của thông số sự kiện.
event_params.value.int_value INTEGER Giá trị số nguyên của thông số sự kiện.
event_params.value.double_value FLOAT Giá trị gấp đôi của thông số sự kiện.
event_params.value.float_value FLOAT Giá trị có kiểu dữ liệu nổi của thông số sự kiện.  Trường này hiện chưa được sử dụng.
event_value_in_usd FLOAT Giá trị quy đổi tiền tệ (bằng USD) của thông số "giá trị" của sự kiện.
event_bundle_sequence_id INTEGER ID thứ tự của nhóm mà các sự kiện này được tải lên.
event_server_timestamp_offset INTEGER Dấu thời gian bù giữa thời gian thu thập và thời gian tải lên tính theo micrô giây.
Web    
web_info RECORD Bản ghi thông tin cho dữ liệu web.
web_info.hostname STRING Tên máy chủ được liên kết với sự kiện đã đăng nhập.
web_info.browser STRING Trình duyệt mà người dùng sử dụng để xem nội dung.
web_info.browser_version STRING Phiên bản trình duyệt mà người dùng sử dụng để xem nội dung.

 

 

Sử dụng tập lệnh này để di chuyển các tập dữ liệu BigQuery hiện có từ giản đồ xuất cũ sang giản đồ mới

  1. Đăng nhập vào trang Bảng điều khiển Cloud Platform >: Tài nguyên người quản lý.
  2. Mở dự án có dữ liệu bạn muốn di chuyển và nhấp vào Kích hoạt Google Cloud Shell ở đầu trang.
  3. Khi màn hình mở ra, hãy sao chép tập lệnh bên dưới vào tệp có tên migration_script.sql:
    1. Thêm lệnh cat > migration_script.sql
    2. Sao chép và dán tập lệnh bên dưới vào màn hình.
    3. Nhấn Ctrl+D để lưu và thoát.

    Tập lệnh (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. Mở một màn hình mới và sao chép tập lệnh bash bên dưới vào tệp có tên migration.sh:
    1. Thêm lệnh cat > migration.sh
    2. Sao chép và dán tập lệnh bên dưới vào màn hình.
    3. Nhấn Ctrl+D để lưu và thoát.
    Sửa đổi tập lệnh sau để bao gồm ID thuộc tính Analytics, ID dự án BigQuery, ID ứng dụng Firebase, tên tập dữ liệu BigQuery, cùng với ngày bắt đầu và ngày kết thúc của dữ liệu bạn muốn.

    Tập lệnh (migration.sh):

    # ID thuộc tính Analytics cho Dự án. Hãy tìm thông tin này trong Cài đặt Analytics trong Firebase 
    PROPERTY_ID=ID thuộc tính Analytics của bạn 
    
    # Dự án Bigquery Export
    BQ_PROJECT_ID="ID dự án BigQuery của bạn" (ví dụ: "dự án-firebase-công khai")
    
    # ID ứng dụng Firebase cho ứng dụng.
    FIREBASE_APP_ID = "ID ứng dụng Firebase của bạn" (ví dụ: "1: 300830567303: ios: 09b1ab1d3ca29bda") 
    
    # Tập dữ liệu cần nhập.
    BQ_DATASET="tên của tập dữ liệu BigQuery mà bạn muốn nhập" (ví dụ: "com_firebase_demo_IOS") 
    
    # Nền tảng
    PLATFORM = "nền tảng của ứng dụng. ANDROID hoặc IOS "
    
    # Phạm vi ngày mà bạn muốn thực hiện sự di chuyển, bao gồm [START_DATE, END_DATE].
    START_DATE = 20180324
    END_DATE = 20180327 
    
    # Không sửa đổi tập lệnh bên dưới, trừ khi bạn biết mình đang làm gì :)
    startdate=$(date -d "$ START_DATE" +%Y%m%d) || exit -1 
    enddate=$(date-d "$ END_DATE" +%Y%m%d) || exit -1 
    
    # Lặp lại qua các ngày.
    DATE = "$startdate"
    while [ "$ DATE" -le "$ enddate"]; do 
    
    # Bảng BQ được xây dựng từ các thông số trên.
            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
    
    # HẾT TẬP LỆNH
    
    
  5. Mở một giao diện mới và thêm lệnh bash migration.sh.

 

Giản đồ xuất cũ

user_dim

Tên trường Loại dữ liệu Mô tả
user_dim RECORD Bản ghi các thứ nguyên người dùng.
user_dim.user_id STRING ID người dùng được đặt thông qua API setUserId.
user_dim.first_open_timestamp_micros INTEGER Thời gian (bằng micrô giây) khi người dùng mở ứng dụng lần đầu tiên.
user_dim.user_properties RECORD Bản ghi trùng lặp các thuộc tính người dùng được đặt thông qua API setUserProperty.
user_dim.user_properties.key STRING Tên của thuộc tính người dùng
user_dim.user_properties.value RECORD Bản ghi thông tin về thuộc tính người dùng.
user_dim.user_properties.value.value RECORD Bản ghi giá trị thuộc tính người dùng.
user_dim.user_properties.value.value.string_value STRING Giá trị chuỗi của thuộc tính người dùng.
user_dim.user_properties.value.value.int_value INTEGER Giá trị số nguyên của thuộc tính người dùng.
user_dim.user_properties.value.value.double_value FLOAT Giá trị gấp đôi của thuộc tính người dùng.
user_dim.user_properties.value.set_timestamp_usec INTEGER Thời gian (bằng micrô giây) khi đặt thuộc tính người dùng lần gần đây nhất.
user_dim.user_properties.value.index INTEGER Chỉ mục (0-24) của thuộc tính người dùng.
user_dim.device_info RECORD Bản ghi thông tin thiết bị.
user_dim.device_info.device_category STRING Danh mục thiết bị (điện thoại di động, máy tính bảng, máy tính để bàn).
user_dim.device_info.mobile_brand_name STRING Thương hiệu thiết bị.
user_dim.device_info.mobile_model_name STRING Tên mẫu thiết bị.
user_dim.device_info.mobile_marketing_name STRING Tên tiếp thị của thiết bị.
user_dim.device_info.device_model STRING Mẫu thiết bị.
user_dim.device_info.platform_version STRING Phiên bản hệ điều hành.
user_dim.device_info.device_id STRING IDFV (chỉ có khi không có IDFA).
user_dim.device_info.resettable_device_id STRING ID quảng cáo/IDFA.
user_dim.device_info.user_default_language STRING Ngôn ngữ hệ điều hành.
user_dim.device_info.device_time_zone_offset_seconds INTEGER Chênh lệch so với giờ GMT theo giây.
user_dim.device_info.limited_ad_tracking BOOLEAN Cài đặt Giới hạn theo dõi quảng cáo của thiết bị.
user_dim.geo_info RECORD Bản ghi thông tin địa lý của người dùng.
user_dim.geo_info.continent STRING Lục địa mà từ đó các sự kiện được báo cáo theo địa chỉ IP.
user_dim.geo_info.country STRING Quốc gia mà từ đó các sự kiện được báo cáo theo địa chỉ IP.
user_dim.geo_info.region STRING Vùng mà từ đó các sự kiện được báo cáo theo địa chỉ IP.
user_dim.geo_info.city STRING Thành phố mà từ đó các sự kiện được báo cáo theo địa chỉ IP.
user_dim.app_info RECORD Bản ghi thông tin về ứng dụng.
user_dim.app_info.app_version STRING versionName của ứng dụng (Android) hoặc phiên bản nhóm ngắn.
user_dim.app_info.app_instance_id STRING ID duy nhất cho phiên bản này của ứng dụng.
user_dim.app_info.app_store STRING Cửa hàng đã cài đặt ứng dụng này.
user_dim.app_info.app_platform STRING Nền tảng mà ứng dụng này đang chạy.
user_dim.traffic_source RECORD Tên của nguồn lưu lượng truy cập dùng để có được người dùng. Với các bảng trong ngày, trường này không điền dữ liệu.
user_dim.traffic_source.user_acquired_campaign STRING Ten của chiến dịch tiếp thị có được người dùng. Với các bảng trong ngày, trường này không điền dữ liệu.
user_dim.traffic_source.user_acquired_medium STRING Tên của phương tiện (tìm kiếm có trả tiền, tìm kiếm không phải trả tiền, email, v.v.) có được người dùng. Với các bảng trong ngày, trường này không điền dữ liệu.
user_dim.traffic_source.user_acquired_source STRING Tên của mạng có được người dùng. Với các bảng trong ngày, trường này không điền dữ liệu.
user_dim.bundle_info RECORD Bản ghi thông tin liên quan đến nhóm mà các sự kiện này đã được tải lên.
user_dim.bundle_info.bundle_sequence_id INTEGER ID thứ tự của nhóm mà các sự kiện này đã được tải lên.
user_dim.ltv_info RECORD Bản ghi thông tin về Giá trị lâu dài của người dùng này. Với các bảng trong ngày, trường này không điền dữ liệu.
user_dim.ltv_info.revenue FLOAT Giá trị lâu dài (doanh thu) của người dùng này. Với các bảng trong ngày, trường này không điền dữ liệu.
user_dim.ltv_info.currency STRING Giá trị lâu dài (đơn vị tiền tệ) của người dùng này. Với các bảng trong ngày, trường này không điền dữ liệu.
 

event_dim

Tên trường Loại dữ liệu Mô tả
event_dim RECORD Bản ghi trùng lặp các thông tin liên quan đến các sự kiện trong nhóm này.
event_dim.date STRING Ngày đã ghi nhật ký cho sự kiện này (định dạng YYYYMMDD theo múi giờ đã đăng ký của ứng dụng.)
event_dim.name STRING Tên sự kiện này.
event_dim.params RECORD Bản ghi trùng lặp các thông số liên quan đến sự kiện này.
event_dim.params.key STRING Khóa của thông số sự kiện.
event_dim.params.value RECORD Bản ghi giá trị của thông số sự kiện.
event_dim.params.value.string_value STRING Giá trị chuỗi của thông số sự kiện.
event_dim.params.value.int_value INTEGER Giá trị số nguyên của thông số sự kiện.
event_dim.params.value.double_value FLOAT Giá trị gấp đôi của thông số sự kiện.
event_dim.timestamp_micros INTEGER Thời gian (bằng micrô giây, giờ UTC) khi sự kiện này được ghi nhật ký trên ứng dụng.
event_dim.previous_timestamp_micros INTEGER Thời gian (bằng micrô giây, giờ UTC) khi sự kiện này được ghi nhật ký trước đó trên ứng dụng.

* Nguồn: Google Analytics