โครงสร้างการจัดเก็บเหตุการณ์¶
โครงร่าง¶
คุณสามารถดูวิธีการจัดเก็บบันทึกเหตุการณ์ที่ส่งได้ใน BigQuery โครงสร้างโดยละเอียดของฟิลด์ attributes และ JSON และวิธีกักกันบันทึกที่ละเมิดกฎการส่ง
โครงสร้างตาราง¶
บันทึกเหตุการณ์ที่ส่งจะถูกจัดเก็บไว้ในตาราง t_raw_event_log ในชุดข้อมูล BigQuery เฉพาะบริษัท
โครงสร้างคอลัมน์ตาราง¶
สถานที่จัดเก็บ¶
| รายการ | รูปแบบ |
|---|---|
| ตาราง | t_raw_event_log |
| การแบ่งพาร์ติชัน | พาร์ติชันรายวันโดย dateTime |
คำจำกัดความของคอลัมน์¶
| ชื่อคอลัมน์ | ชนิดข้อมูล | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
userId | STRING | ค่าที่ส่งเป็นแอตทริบิวต์ที่ต้องการ userId | 100001 |
identifierProvider | STRING | ค่าที่ส่งเป็นแอตทริบิวต์ที่ต้องการ identifierProvider | hive |
deviceId | STRING | ค่าที่ส่งเป็นแอตทริบิวต์ที่ต้องการ deviceId | 100000 |
appId | STRING | ค่าที่ส่งเป็นแอตทริบิวต์ที่ต้องการ appId | "com.com2us.game.ios" |
appIdGroup | STRING | ค่าที่แปลงเป็นชื่อเกมใน App Center Hive ตามแอตทริบิวต์ที่ต้องการ appId | com.com2us.game |
dateTime | TIMESTAMP | แอตทริบิวต์ที่จำเป็น eventTime แปลงเป็น UTC | 2026-07-20T05:01:01Z |
eventName | STRING | ค่าที่ส่งเป็นแอตทริบิวต์ที่ต้องการ eventName | asset_drop |
checksum | STRING | ค่าแฮชที่สร้างขึ้นสำหรับแต่ละเหตุการณ์ | HW2FTEB56TEEWER |
bigqueryRegistTimestamp | TIMESTAMP | เหตุการณ์ถูกเก็บไว้ที่ UTC ที่ UTC | 2026-07-20T05:02:01Z |
attributes | JSON | JSON ฟิลด์ที่เก็บคุณสมบัติแบบกำหนดเองและรวบรวมอัตโนมัติ | ดูด้านล่าง |
attributes ตัวอย่าง
{
"hiveAttributes": {
"dataSource": "custom_server",
"geoIpCountry": "KR"
},
"eventAttributes": {
"eventTime": "2026-07-20T14:01:01+09:00",
"level": 10,
"character_name": "AA",
"stage_id": "stage_101"
}
}
ข้อควรระวังเกี่ยวกับโครงสร้างตาราง & Tips¶
- เหตุการณ์เดียวกันอาจถูกจัดเก็บซ้ำซ้อนเนื่องจากการส่งสัญญาณซ้ำ ฯลฯ ดังนั้นจึงขอแนะนำให้ใช้แบบสอบถามการลบซ้ำโดยยึดตาม
checksumเมื่อทำการค้นหา - บันทึกเหตุการณ์ที่ละเมิดกฎการขนส่งจะถูกจัดเก็บไว้ในตาราง rescue ไม่ใช่ตารางนี้ สำหรับข้อมูลเพิ่มเติม โปรดดูที่ การแยกข้อมูล
attributes คุณสมบัติโดยละเอียด¶
Note
คอลัมน์ attributes เป็นประเภท JSON และแบ่งออกเป็นสองส่วน: hiveAttributes และ eventAttributes
attributes ตัวอย่าง¶
{
"hiveAttributes": {
"dataSource": "custom_server",
"geoIpCountry": "KR"
},
"eventAttributes": {
"eventTime": "2026-07-20T14:01:01+09:00",
"level": 10,
"character_name": "AA"
}
}
hiveAttributes¶
นี่คือพื้นที่ที่ไปป์ไลน์ประมวลผลและจัดเก็บโดยอัตโนมัติ
| ชื่อแอตทริบิวต์ | ชนิดข้อมูล | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
dataSource | STRING | เครื่องส่งสัญญาณบันทึกเหตุการณ์ ดูรายละเอียด dataSource ด้านล่าง | custom_server |
geoIpCountry | STRING | รหัสประเทศที่กำหนดโดยไปป์ไลน์ตาม IP (ISO 3166 alpha-2) | KR |
dataSource รายละเอียด¶
dataSource ระบุถึงเอนทิตีที่ส่งบันทึกเหตุการณ์ และตั้งค่าเป็นค่าใดค่าหนึ่งต่อไปนี้โดยอัตโนมัติ:
| ค่า | คำอธิบาย |
|---|---|
airbridge | เหตุการณ์ที่รวบรวมผ่าน Airbridge |
appsflyer | เหตุการณ์ที่รวบรวมผ่าน Appsflyer |
adjust | เหตุการณ์ที่รวบรวมผ่าน Adjust |
singular | เหตุการณ์ที่รวบรวมผ่าน Singular |
hive_server | Hive เหตุการณ์ที่รวบรวมโดยอัตโนมัติผ่านการตรวจสอบสิทธิ์ การเรียกเก็บเงิน ฯลฯ |
hive_sdk | เหตุการณ์ เช่น ช่องทางที่รวบรวมโดยอัตโนมัติโดย Hive SDK |
custom_server | เหตุการณ์ที่กำหนดเองที่ลูกค้าส่งจากเซิร์ฟเวอร์ |
custom_sdk | เหตุการณ์ที่กำหนดเองที่ลูกค้าส่งผ่านฟังก์ชันการส่งบันทึกเหตุการณ์ของ Hive SDK |
custom_sdk_mig | เหตุการณ์ที่กำหนดเองที่ลูกค้าส่งไปยัง Analytics เวอร์ชันเก่าผ่านคุณสมบัติส่งบันทึกเหตุการณ์ใน Hive SDK |
custom_server_mig | เหตุการณ์ที่กำหนดเองที่ลูกค้าส่งจากเซิร์ฟเวอร์ไปยัง Analytics เวอร์ชันเก่า |
custom_except | เหตุการณ์ที่สร้างและส่ง eventAttribute, hiveAttribute เป็นกรณีพิเศษในระหว่างกระบวนการแปลงเหตุการณ์ |
eventAttributes¶
นี่คือพื้นที่ที่แอตทริบิวต์ที่ผู้ใช้ส่งและแอตทริบิวต์ที่รวบรวมโดยอัตโนมัติโดย SDK จะถูกจัดเก็บ
| ชื่อแอตทริบิวต์ | ชนิดข้อมูล | คำอธิบาย |
|---|---|---|
eventTime | STRING | eventTime ค่าดั้งเดิมที่ส่งเป็นแอตทริบิวต์ที่ต้องการ |
| (คุณสมบัติที่ผู้ใช้กำหนด) | ตัวเลข/ตัวอักษร | แอตทริบิวต์ที่กำหนดเองส่งโดยผู้ใช้โดยตรง |
| (รวบรวมคุณสมบัติอัตโนมัติ) | แตกต่างกันไปตามแอตทริบิวต์ | ข้อมูลลูกค้าที่รวบรวมโดยอัตโนมัติโดย SDK (เมื่อส่งไคลเอ็นต์) |
attributes ข้อควรระวัง & Tips¶
hiveAttributesไม่ใช่พื้นที่ที่นักพัฒนาตั้งค่าโดยตรง แต่เป็นพื้นที่ที่ไปป์ไลน์เติมโดยอัตโนมัติ ค่าอื่นที่ไม่ใช่dataSourceและgeoIpCountryจะไม่ถูกบันทึก- ทั้งคุณสมบัติที่กำหนดเองและคุณสมบัติที่รวบรวมอัตโนมัติ SDK จะถูกจัดเก็บไว้ด้วยกันใน
eventAttributesเมื่อค้นหาจะต้องจำแนกตามชื่อแอตทริบิวต์ - คุณสามารถค้นหาโดยแยกแยะเส้นทางการส่งข้อมูลของบันทึกเหตุการณ์ (SDK/ server/MMP ฯลฯ) โดยใช้ค่า
dataSource
การแยกข้อมูล¶
Warning
บันทึกเหตุการณ์ที่ไม่เป็นไปตามกฎการขนส่งจะไม่ถูกจัดเก็บไว้ในตารางปกติ (t_raw_event_log) แต่จะถูกจัดเก็บแยกต่างหากใน ตารางกักกัน (t_raw_event_log_rescue) ตารางกักเก็บจะเก็บ JSON ต้นฉบับไว้ ดังนั้นคุณจึงสามารถระบุสาเหตุของการกักเก็บ แก้ไข และส่งอีกครั้งได้
เหตุผลในการกักกัน¶
| สาเหตุข้อผิดพลาด | คำอธิบาย | วิธีการตอบกลับ |
|---|---|---|
| แอตทริบิวต์ที่จำเป็นขาดหายไป | แอตทริบิวต์ที่จำเป็นทั้งเจ็ดรายการ (userId, identifierProvider, deviceId, appId, eventTime, eventName, appIdGroup) หายไปหรือมีค่าว่าง | ส่งอีกครั้งโดยขาดแอตทริบิวต์ที่จำเป็น |
| การใช้คำสงวน | เมื่อ attributes, eventAttributes และ hiveAttributes ถูกใช้เป็นชื่อแอตทริบิวต์ (ตัวพิมพ์ไม่เกี่ยวข้อง) | เปลี่ยนชื่อคุณสมบัติเป็นชื่ออื่น |
| ไม่อนุญาตให้ใช้ค่าแอตทริบิวต์ | หากค่าคุณสมบัติอยู่ในรูปแบบของอ็อบเจ็กต์ JSON ({}) หรืออาร์เรย์ JSON ([]) | เปลี่ยนค่าคุณสมบัติเป็นสตริงหรือตัวเลข |
| รูปแบบผิดพลาด eventTime | eventTime ไม่อยู่ในรูปแบบ RFC 3339 หรือไม่สามารถแยกวิเคราะห์ | RFC แก้ไขเป็นรูปแบบ 3339 (รวมเขตเวลา) |
| eventTime อยู่นอกช่วง | eventTime อยู่นอก 31 วันในอดีตหรือ 31 วันในอนาคต ณ เวลาปัจจุบัน | eventTime ตรวจสอบค่าและแก้ไขให้อยู่ในช่วงปกติ |
| การแยกวิเคราะห์ JSON ล้มเหลว | ข้อความที่ส่งไม่อยู่ในรูปแบบ JSON | ที่ถูกต้อง JSON ตรวจสอบรูปแบบและส่ง อีกครั้ง |
โครงสร้างตารางแบบแยกส่วน¶
บันทึกเหตุการณ์ที่แยกออกมาจะถูกจัดเก็บไว้ในตาราง t_raw_event_log_rescue โดยมีโครงสร้างดังต่อไปนี้:
| ชื่อคอลัมน์ | ชนิดข้อมูล | คำอธิบาย |
|---|---|---|
userId | STRING | ส่ง userId (หากแยกวิเคราะห์ได้) |
identifierProvider | STRING | ส่ง identifierProvider |
deviceId | STRING | ส่ง deviceId |
appIdGroup | STRING | ส่ง appIdGroup |
dateTime | STRING | ค่าดั้งเดิมของการส่ง eventTime (บันทึกเป็นสตริง ไม่ใช่ TIMESTAMP) |
eventName | STRING | ส่ง eventName |
bigqueryRegistTimestamp | TIMESTAMP | BigQuery ประหยัดเวลา |
checksum | STRING | ค่าแฮช |
rawData | STRING | ส่งต้นฉบับ JSON ทั้งหมดแล้ว |
errorReason | STRING | รหัสเหตุผลของการกักกัน |
errorStackTrace | STRING | รายละเอียดการกักกัน (ชื่อช่องหายไป ฯลฯ) |
เมนูที่เกี่ยวข้อง¶
- ส่งคุณสมบัติเหตุการณ์ — กฎโดยละเอียดสำหรับคุณสมบัติที่จำเป็น/รวบรวมโดยอัตโนมัติ/กำหนดแบบกำหนดเอง
- การส่งบันทึกเหตุการณ์ — วิธีการส่งข้อมูลผ่าน Hive SDK v4, Hive Axyl, Fluentd, HTTP