คู่มือการออกแบบและส่งอีเวนต์¶
อีเวนต์เท็กโซโนมีคืออะไร?¶
Event Taxonomy คือ ระบบการจำแนกที่จัดโครงสร้างอีเวนต์และแอตทริบิวต์ที่เก็บมาอย่างเป็นระบบด้วยโครงสร้างที่สอดคล้องกันและกฎการตั้งชื่อที่เป็นมาตรฐาน
หากเก็บข้อมูลพฤติกรรมมากมายที่เกิดขึ้นในเกม เช่น การเข้าสู่ระบบ การซื้อ การอัปเลเวล โดยไม่มีหลักเกณฑ์ ทีมต่าง ๆ อาจส่งข้อมูลชุดเดียวกันภายใต้ชื่อที่ต่างกัน หรือไม่สามารถเข้าใจได้ว่าเมื่อวิเคราะห์แล้ว ข้อมูลใดหมายถึงอะไร Event Taxonomy ช่วยป้องกันความสับสนเช่นนี้ และทำให้ใช้ข้อมูลที่เก็บมาแล้วในการวิเคราะห์ได้ทันที
ทำไมจึงจำเป็น?¶
| สถานการณ์ปัญหา | เมื่อใช้ Taxonomy |
|---|---|
| ทีมต่าง ๆ ส่งอีเวนต์เดียวกันด้วยชื่อที่ต่างกัน | รวมข้อมูลได้ด้วยชื่อที่สอดคล้องกัน |
| ไม่ชัดเจนว่าแอตทริบิวต์ใดอยู่ในอีเวนต์ใด | โครงสร้างแอตทริบิวต์ชัดเจน ทำให้เข้าใจขอบเขตการวิเคราะห์ได้เร็วขึ้น |
| เพิ่มอีเวนต์ใหม่โดยกำหนดแบบไม่มีมาตรฐาน | ขยายได้อย่างสอดคล้องตามกฎเดิม |
| พบปัญหาคุณภาพข้อมูลช้าเกินไป | ตรวจสอบล่วงหน้าได้ตามสคีมา |
โครงสร้าง¶
Event Taxonomy ของ Analytics ประกอบด้วย 2 ชั้น คือ อีเวนต์ และ แอตทริบิวต์
อีเวนต์ (Event)
├── แอตทริบิวต์แพลตฟอร์ม (Platform Attribute) ← เก็บอัตโนมัติจากการเชื่อมต่อ SDK เท่านั้น
└── แอตทริบิวต์อีเวนต์ (Event Attribute) ← ส่งพร้อมอีเวนต์โดยตรง
อีเวนต์คืออะไร?¶
อีเวนต์คือหน่วยข้อมูลที่บันทึกการกระทำเฉพาะของผู้ใช้ในเกม "เมื่อไหร่ ใคร ทำอะไร" และเป็นหน่วยพื้นฐานที่สุดของการวิเคราะห์
- ตัวอย่าง: ผู้ใช้ซื้อไอเท็ม → เกิดอีเวนต์
item_purchase - ตัวอย่าง: ผู้ใช้เคลียร์สเตจหนึ่งได้ → เกิดอีเวนต์
stage_clear - ตัวอย่าง: ผู้ใช้เข้าสู่ระบบแอป → เกิดอีเวนต์
login
แอตทริบิวต์คืออะไร?¶
แอตทริบิวต์คือรายละเอียดที่บันทึกพร้อมกับอีเวนต์เมื่อเกิดขึ้น อีเวนต์เพียงอย่างเดียวจะบอกได้แค่ว่า "เกิดอะไรขึ้น" แต่แอตทริบิวต์ช่วยให้เข้าใจได้ถึง "เกิดขึ้นภายใต้เงื่อนไขใด และมีค่าเท่าไร"
- ตัวอย่าง: แอตทริบิวต์ของอีเวนต์
item_purchase→ รหัสไอเท็ม ยอดชำระ สกุลเงิน - ตัวอย่าง: แอตทริบิวต์ของอีเวนต์
stage_clear→ หมายเลขสเตจ เวลาเคลียร์ ตัวละครที่ใช้
แอตทริบิวต์แบ่งเป็น 2 ประเภทตามผู้ส่งข้อมูล
- แอตทริบิวต์แพลตฟอร์ม: แอตทริบิวต์ที่ Hive เก็บเป็นค่าพื้นฐานโดยไม่ต้องตั้งค่าเพิ่มเติม เพียงเชื่อมต่อ SDK ก็เพียงพอ เช่น ประเทศ OS เวอร์ชันแอป หรือรหัสเซิร์ฟเวอร์
- แอตทริบิวต์อีเวนต์: แอตทริบิวต์ที่ส่งพร้อมกับอีเวนต์โดยตรง คุณกำหนดและส่งรายการที่จำเป็นต่อการวิเคราะห์ได้เอง
การส่งอีเวนต์ที่ผู้ใช้กำหนดเอง¶
สามารถส่งอีเวนต์ที่กำหนดเองในเกมเองตามสคีมาการเก็บข้อมูลด้านล่าง เพื่อให้นำไปใช้ในการวิเคราะห์ใน Analytics ได้
การส่งข้อมูลจริงใช้วิธี Hive SDK client log transmission สามารถสร้างซอร์สโค้ดที่จำเป็นสำหรับการส่งได้อัตโนมัติตามภาษาในแท็บ [สร้างซอร์ส] ของ อีเวนต์
หากกำหนดชื่ออีเวนต์และแอตทริบิวต์ไว้ล่วงหน้าใน อีเวนต์ ก่อนส่ง จะสะดวกต่อการแชร์และจัดการภายในทีม อย่างไรก็ตาม แม้จะส่งข้อมูลโดยไม่กำหนดไว้ล่วงหน้า Analytics ก็จะรับรู้ข้อมูลที่ได้รับโดยอัตโนมัติ และจะสะท้อนในรายการอีเวนต์ภายในไม่เกิน 1 ชั่วโมง
Note
อีเวนต์ที่ตรวจพบอัตโนมัติจะแสดง system เป็นผู้สร้างในรายการอีเวนต์ และสามารถเพิ่มคำอธิบายหรือข้อมูลแอตทริบิวต์ได้จากหน้าจออีเวนต์เพื่อจัดการต่อไป
สคีมาการเก็บข้อมูลของ Analytics¶
นี่คือสคีมาพื้นฐานที่ใช้เมื่อส่งอีเวนต์ที่ผู้ใช้กำหนดเอง ทุกอีเวนต์ต้องส่งในรูปแบบด้านล่าง
| ฟิลด์ | จำเป็น | คำอธิบาย |
|---|---|---|
| identifierProvider | จำเป็น | ระบุระบบที่ออกตัวระบุผู้ใช้ หากเชื่อมต่อ Hive SDK ให้กรอกเป็น hive |
| userId | จำเป็น | ตัวระบุผู้ใช้ตามบัญชี หากไม่มีค่า สามารถเป็น null ได้ |
| deviceId | จำเป็น | ตัวระบุผู้ใช้ตามอุปกรณ์ หากไม่มีค่า สามารถเป็น null ได้ |
| appId | จำเป็น | กรอก app ID ที่ลงทะเบียนไว้ใน Hive Console > App Center |
| dateTime | จำเป็น | วันที่และเวลาที่เกิดอีเวนต์ |
| timezone | จำเป็น | ไทม์โซนของเวลาที่เกิดอีเวนต์ |
| category | จำเป็น | ค่าจำแนกที่กำหนดตารางที่จะเก็บข้อมูล อีเวนต์ที่ผู้ใช้กำหนดเองต้องส่งโดยล็อกเป็น raw_event_log เท่านั้น หากกรอกค่าอื่น ข้อมูลอีเวนต์จะไม่ถูกเก็บในตารางที่ถูกต้อง |
| eventName | จำเป็น | ชื่ออีเวนต์ที่ใช้จำแนกอีเวนต์ |
| eventAttribute | จำเป็น | กลุ่มแอตทริบิวต์ที่ส่งพร้อมกับอีเวนต์ ต้องกำหนดทุกฟิลด์ และหากไม่มีค่า สามารถเป็น null ได้ |
| hiveAttribute | จำเป็น | กลุ่มแอตทริบิวต์แพลตฟอร์มที่มาจากเซิร์ฟเวอร์ provisioning ของ Hive ปัจจุบันยังต้องให้ผู้พัฒนาเป็นผู้กำหนดค่าและส่งเอง ต้องกำหนดทุกฟิลด์ และหากไม่มีค่า สามารถเป็น null ได้ |
Warning
โปรดระวังไม่ให้ทั้ง userId และ deviceId เป็น null พร้อมกัน หากไม่มีทั้งสองค่า จะไม่สามารถระบุตัวผู้ใช้ได้ และอาจวิเคราะห์ผู้ใช้ตามโคฮอร์ตได้ยาก
กฎการตั้งชื่ออีเวนต์¶
แนะนำให้ตั้งชื่ออีเวนต์ที่จะใช้ใน eventName ตามกฎต่อไปนี้
- อักขระที่แนะนำ: ตัวอักษรภาษาอังกฤษ(a–z, A–Z, แยกตัวพิมพ์เล็ก/ใหญ่), ตัวเลข(0–9), ขีดล่าง(
_), ขีดกลาง(-) - ตัวคั่น: ใช้ขีดล่าง(
_) แทนการเว้นวรรคระหว่างคำ - รูปแบบ: แนะนำให้ใช้รูปแบบ
คำนาม_คำกริยาที่อธิบายอีเวนต์ได้ชัดเจน - ตัวอย่าง:
item_purchase,level_up,tutorial_complete,stage_start
Warning
ชื่ออีเวนต์ที่ไม่เป็นไปตามกฎข้างต้นอาจมีข้อจำกัดในการนำไปใช้วิเคราะห์
ตัวอย่างโครงสร้างของ hiveAttribute / eventAttribute¶
hiveAttribute และ eventAttribute จะถูกส่งในรูปแบบอ็อบเจ็กต์ JSON แยกกัน
hiveAttribute — แอตทริบิวต์แพลตฟอร์มจากเซิร์ฟเวอร์ provisioning ของ Hive โดยมีข้อมูลเช่นมาร์เก็ตหรือรหัสเซิร์ฟเวอร์ และปัจจุบันผู้พัฒนาต้องกำหนดค่าและส่งเอง ก่อนที่จะเปลี่ยนเป็นการเก็บอัตโนมัติในอนาคต
eventAttribute — แอตทริบิวต์ที่ส่งพร้อมกับอีเวนต์โดยตรง เก็บรายละเอียดที่จำเป็นต่อการวิเคราะห์อีเวนต์นั้น
Note
ไม่ว่ารูปแบบการส่งจะเป็นแบบใด ค่าของแอตทริบิวต์จะถูก Analytics รับรู้เป็นชนิดข้อความตามค่าเริ่มต้น หากแอตทริบิวต์ใดต้องใช้ในการรวมข้อมูลแบบตัวเลขหรือวันที่ ให้เปลี่ยนชนิดข้อมูลของแอตทริบิวต์นั้นใน [แท็บแอตทริบิวต์] ของหน้าจอ อีเวนต์
กฎการตั้งชื่อแอตทริบิวต์¶
แนะนำให้ตั้งชื่อคีย์ของ eventAttribute และ hiveAttribute ตามกฎต่อไปนี้
- อักขระที่แนะนำ: ตัวอักษรภาษาอังกฤษ(a–z, A–Z, แยกตัวพิมพ์เล็ก/ใหญ่), ตัวเลข(0–9), ขีดล่าง(
_), ขีดกลาง(-) - ตัวคั่น: ใช้ขีดล่าง(
_) แทนการเว้นวรรคระหว่างคำ - ตัวอย่าง:
item_id,contents-type,stage_level
Warning
คีย์ของแอตทริบิวต์ที่ไม่เป็นไปตามกฎข้างต้นอาจมีข้อจำกัดในการนำไปใช้วิเคราะห์
กฎการแปลงคีย์ของแอตทริบิวต์¶
เมื่อส่งแอตทริบิวต์ ระบบจะเปลี่ยนชื่อคีย์บางรายการอัตโนมัติตามกฎด้านล่าง โปรดระวังว่าในการวิเคราะห์ ชื่อคีย์ที่ใช้ค้นหาอาจแตกต่างไป
คำต่อท้าย -Hive (hiveAttribute)¶
คีย์ ทุกรายการใน hiveAttribute จะถูกเติม -Hive ต่อท้ายอัตโนมัติ
| คีย์ที่ส่ง | คีย์ที่แสดงใน Analytics |
|---|---|
country | country-Hive |
market | market-Hive |
คำต่อท้าย -Event (eventAttribute)¶
คีย์ใน eventAttribute จะถูกเติม -Event อัตโนมัติเฉพาะกรณีที่ชื่อซ้ำกับ 8 ฟิลด์ส่วนกลาง ด้านล่างเท่านั้น
- timezone, dateTime, identifierProvider, userId, deviceId, appId, category, eventName
| คีย์ที่ส่ง | มีการชนกับฟิลด์ส่วนกลางหรือไม่ | คีย์ที่แสดงใน Analytics |
|---|---|---|
category | O | category-Event |
level | X | level (ไม่มีการแปลง) |
Warning
ทั้ง hiveAttribute และ eventAttribute จะถูกจัดเก็บข้อมูลตามชื่อคีย์หลังการแปลง โปรดค้นหาแอตทริบิวต์ด้วยชื่อที่ถูกแปลงแล้ว(-Hive, -Event) เมื่อวิเคราะห์
อีเวนต์แนะนำ¶
ด้านล่างเป็นตัวอย่างอีเวนต์ที่มีประโยชน์สูงต่อการวิเคราะห์ใน Analytics หากส่งแต่ละอีเวนต์ตาม eventName และ eventAttribute ที่กำหนด จะสามารถวิเคราะห์ได้ทันทีด้วยฟีเจอร์ทั้งหมดของ Analytics เช่น ชาร์ต ฟันเนล และรีเทนชัน
การอัปเลเวล¶
| eventName | คำอธิบาย |
|---|---|
account_level_up | อัปเลเวลบัญชี |
character_level_up | อัปเลเวลตัวละคร |
guild_level_up | อัปเลเวลกิลด์ |
skill_level_up | อัปเลเวลสกิล |
eventAttribute (ร่วมกัน):
| แอตทริบิวต์ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
levelPrev | เลเวลก่อนอัปเกรด | 10 |
level | เลเวลหลังอัปเกรด | 11 |
สกุลเงินในเกม¶
| eventName | คำอธิบาย |
|---|---|
asset_earn | ได้รับสกุลเงินในเกม |
asset_spend | ใช้สกุลเงินในเกม |
eventAttribute (ร่วมกัน):
| แอตทริบิวต์ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
assetName | ชื่อสกุลเงินในเกม | diamond, gold |
actionName | สาเหตุของการเปลี่ยนแปลง | inapp_purchase, quest_reward |
amountPrev | ปริมาณสกุลเงินก่อนเปลี่ยนแปลง | 500 |
amountVar | จำนวนที่เปลี่ยนแปลง | 100 |
amountCurr | ปริมาณสกุลเงินหลังเปลี่ยนแปลง | 600 |
isPaid | เป็นสกุลเงินแบบเสียเงินหรือไม่ | Y, N |
คอนเทนต์¶
| eventName | คำอธิบาย |
|---|---|
contents_start | ยอมรับ/เริ่มคอนเทนต์ |
contents_success | คอนเทนต์สำเร็จ |
contents_fail | คอนเทนต์ล้มเหลว |
contents_cancel | ยกเลิกคอนเทนต์ |
eventAttribute (ร่วมกัน):
| แอตทริบิวต์ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
modeTypeName | ประเภทคอนเทนต์ | raid, quest |
userLevel | เลเวลผู้ใช้ | 50 |
playTimeSec | เวลาเล่น(วินาที) | 120 |
Tip
หากสร้างฟันเนลโดยใช้ flow contents_start → contents_success / contents_fail / contents_cancel จะสามารถวิเคราะห์อัตราสำเร็จและจุดที่หลุดออกไปของแต่ละคอนเทนต์ได้
ร้านค้าในแอป¶
| eventName | คำอธิบาย |
|---|---|
store_view | ดูรายละเอียดสินค้าร้านค้า |
store_purchase_click | คลิกซื้อสินค้าร้านค้า |
eventAttribute (ร่วมกัน):
| แอตทริบิวต์ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
productLocation | ตำแหน่งการแสดงสินค้า | package, main_shop |
productType | ประเภทสินค้า | pay, free, advertisement |
Tip
สามารถวิเคราะห์อัตราแปลงการคลิกของแต่ละสินค้าด้วยฟันเนล store_view → store_purchase_click
เมท¶
| eventName | คำอธิบาย |
|---|---|
mate_earn | ได้รับเมท |
mate_spend | ใช้/ขาย/ลบเมท |
eventAttribute (ร่วมกัน):
| แอตทริบิวต์ | คำอธิบาย | ตัวอย่าง |
|---|---|---|
mateId | รหัสเมท | pet_001 |
mateGrade | เกรดของเมท | rare, epic |
mateChangeFlag | เส้นทางการเปลี่ยนแปลง | gacha, purchase, upgrade, sell |
mateChangeAmount | จำนวนที่เปลี่ยนแปลง | 1 |
กิจกรรมทางสังคม¶
| eventName | คำอธิบาย |
|---|---|
party_action | กิจกรรมปาร์ตี้ (เชิญ/เข้าร่วม/ออก) |
friend_action | กิจกรรมเพื่อน (เพิ่ม/ลบ) |
guild_action | กิจกรรมกิลด์ (เข้าร่วม/ออก/ไล่ออก) |