การส่งออกข้อมูล¶
ภาพรวม¶
การส่งออกข้อมูลคือฟีเจอร์ที่ดึงข้อมูลอีเวนต์ที่กำลังถูกนำเข้าไปยัง Hive Analytics ทุกชั่วโมง แล้วอัปโหลดไปยังที่เก็บข้อมูลบนคลาวด์
ข้อมูลที่ให้ใน Data Export เป็นข้อมูลดิบของอีเวนต์(raw) ซึ่งสามารถนำไปสร้างฐานข้อมูลเอง หรือประมวลผลต่อในรูปแบบที่ต้องการเพื่อใช้ในการวิเคราะห์ตามวัตถุประสงค์ได้
Hive Analytics เป็นผู้ให้บริการแปลงไฟล์และส่งข้อมูล แต่คุณจำเป็นต้องลงทะเบียนคลาวด์สตอเรจเป็นบริการของคลาวด์ที่คุณใช้งานอยู่ด้วย
Note
ข้อมูลจะถูกส่งตามอีเวนต์ และไม่รองรับการแยกส่งตามโปรเจกต์
ใช้ทำอะไรได้บ้าง?¶
นักวิเคราะห์ข้อมูล¶
- สามารถนำข้อมูลที่รวบรวมใน Hive Analytics ไปใส่ฐานข้อมูลภายในองค์กรเอง แล้วประมวลผลต่อในรูปแบบที่ต้องการเพื่อวิเคราะห์เชิงลึก
- เชื่อมต่อข้อมูลดิบเข้ากับเครื่องมือ BI ภายในองค์กรหรือสภาพแวดล้อมการวิเคราะห์เพื่อสร้างแดชบอร์ดแบบกำหนดเองได้
นักพัฒนา¶
- สามารถนำข้อมูลอีเวนต์ของ Hive ไปลงใน data pipeline ภายในองค์กรโดยอัตโนมัติ
- เชื่อมต่อกับ AWS S3 หรือ GCP Cloud Storage เพื่อใช้ข้อมูลอีเวนต์ล่าสุดทุกชั่วโมงได้ทันทีจากคลาวด์สตอเรจ
เริ่มต้นอย่างรวดเร็ว¶
หากเป็นครั้งแรกที่ตั้งค่าการส่งออกข้อมูล ให้ทำตามขั้นตอนด้านล่างเพื่อเชื่อมต่อคลาวด์สตอเรจให้เสร็จสมบูรณ์
- สร้างบัคเก็ตเฉพาะสำหรับการส่งออกข้อมูลในคลาวด์สตอเรจที่ต้องการใช้ (AWS S3 หรือ GCP Cloud Storage) และเตรียมคีย์ยืนยันตัวตน
- เข้าไปยังหน้า Analytics Console > Data > การส่งออกข้อมูล
- เลือกอีเวนต์(ล็อก)ที่จะดึงออกมา (สูงสุด 10 รายการ)
- เลือกที่เก็บข้อมูล (AWS S3 / GCP Cloud Storage) และกรอกชื่อบัคเก็ต
- เลือกประเภทข้อมูล (CSV / JSON)
- ลงทะเบียนคีย์ยืนยันตัวตน
Note
สำหรับวิธีสร้างบัคเก็ตและออกคีย์ยืนยันตัวตนของแต่ละคลาวด์สตอเรจ โปรดดูที่ ฟีเจอร์ทั้งหมด
ฟีเจอร์ทั้งหมด¶
ลอจิกของการส่งออกข้อมูล¶
ข้อมูลอีเวนต์ที่ถูกจัดเก็บใน BigQuery จะถูกแปลงเป็นไฟล์ตามรอบการส่งออกข้อมูลทุกชั่วโมง แล้วอัปโหลดไปยังคลาวด์สตอเรจที่ลงทะเบียนไว้
เกณฑ์การดึงข้อมูล¶
- ดึงข้อมูลอีเวนต์ที่เลือกแล้วส่งไฟล์ไปยังคลาวด์สตอเรจ
- ระบบจะดึงข้อมูลตามรอบการส่งข้อมูลรายชั่วโมงโดยอิง UTC
- เช่น 1 กันยายน 2023 01:00 (UTC) จะดึงและส่งข้อมูลช่วง 1 กันยายน 2023 00:00:00 ~ 00:59:59 (UTC)
- เกณฑ์การพาร์ทิชันจะถูกกำหนดสำหรับแอตทริบิวต์ dateTime เป็นวัน -1 เมื่อเทียบกับวันสอบถาม
- เช่น เมื่อดึงข้อมูลช่วง 1 กันยายน 2023 00:00:00 ~ 00:59:59(UTC) จะใช้ 30 สิงหาคม 2023 00:00:00
- หากค่าของ datetime น้อยกว่าวัน -1 เมื่อเทียบกับเวลาที่สอบถาม จะไม่รวมอยู่ในข้อมูลส่งออก
- ระบบจะสอบถามข้อมูลตามเวลาที่ข้อมูลถูกบันทึกลงใน BigQuery
- อิงแอตทริบิวต์
bigqueryRegistTimestamp - ตัวอย่างคิวรีสำหรับดึงข้อมูล
- อิงแอตทริบิวต์
SELECT *
FROM bigquery_table
WHERE bigqueryRegistTimestamp BETWEEN '2023-09-01 00:00:00' and '2023-09-01 00:59:59'
and dateTime >= '2023-08-31 00:00:00'
การตั้งค่าการส่งออกข้อมูล¶
การเลือกอีเวนต์¶
เลือกอีเวนต์(ล็อก)ที่จะดึงออกมา
- สามารถค้นหาและเลือกได้โดยกรอกส่วนหนึ่งของชื่ออีเวนต์
- เลือกอีเวนต์ได้สูงสุด 10 รายการ
การเลือกที่เก็บข้อมูล¶
ต้องใช้คลาวด์สตอเรจเป็นที่เก็บข้อมูล
คลาวด์ที่รองรับ:
- AWS S3
- GCP Google Cloud Storage
ตำแหน่ง (ชื่อบัคเก็ต)¶
กรอกชื่อบัคเก็ต(bucket)ของที่เก็บข้อมูล
- หากชื่อบัคเก็ต AWS S3 คือ
s3://s3_bucket_name→ กรอกเพียงs3_bucket_name - หากชื่อบัคเก็ต Google Cloud Storage คือ
gs://google_bucket_name→ กรอกเพียงgoogle_bucket_name
ประเภทข้อมูล¶
มีประเภทข้อมูล 2 แบบ
- CSV
- JSON
- ไฟล์ทั้งหมดเข้ารหัสด้วย UTF-8
รอบการอัปโหลดไฟล์¶
ระบบจะดึงข้อมูลช่วงเวลาหนึ่งชั่วโมงทุกชั่วโมงและทำการอัปโหลด
- เวลาจะถูกดึงตามค่าแอตทริบิวต์
bigqueryRegistTimestamp(อ้างอิง UTC)- เช่น เริ่มดึงและอัปโหลดข้อมูลเวลา 15:00 (UTC): ข้อมูลใน
bigqueryRegistTimestampช่วง 05:00:00 ~ 05:59:59 จะถูกดึง
- เช่น เริ่มดึงและอัปโหลดข้อมูลเวลา 15:00 (UTC): ข้อมูลใน
- เวลาที่เสร็จสิ้นอาจแตกต่างกันไปตามจำนวนไฟล์และปริมาณการอัปโหลด
การลงทะเบียนคีย์ยืนยันตัวตน¶
ต้องมีสิทธิ์ในการอัปโหลดข้อมูลไปยังคลาวด์สตอเรจ คุณต้องลงทะเบียนคีย์ยืนยันตัวตนหรือไฟล์คีย์ยืนยันตัวตนที่มีสิทธิ์เขียนข้อมูล การลงทะเบียนคีย์จะต่างกันไปตามบริการคลาวด์
การตั้งค่าคลาวด์สตอเรจ¶
GCP - Google Cloud Storage¶
หากต้องการส่งออกข้อมูลไปยัง Google Cloud จำเป็นต้องตั้งค่าดังต่อไปนี้
-
ไปที่หน้า Google Cloud Console ที่ Cloud Storage
2. สร้าง บัคเก็ต(bucket) สำหรับใช้ส่งออกข้อมูลโดยเฉพาะ - ชื่อบัคเก็ตเมื่อกำหนดแล้วจะไม่สามารถเปลี่ยนได้ หากจำเป็นต้องใช้ชื่อใหม่ ต้องลบบัคเก็ตเดิมแล้วสร้างใหม่ - แนะนำให้สร้างเป็นบัคเก็ตเฉพาะสำหรับการส่งออกข้อมูล 3. ต้องสร้าง service key ที่จะใช้กับการส่งออกข้อมูลและให้สิทธิ์เขียนลงบัคเก็ต 1. จากหน้า Console ไปที่เมนู IAM และผู้ดูแลระบบ → service account 2. คลิก สร้าง service account เพื่อสร้างบัญชีใหม่ - ID ที่ใช้กับบัญชีสามารถตั้งชื่อได้ตามต้องการ (เช่น: hive_data_transfer_account@projectId.iam.gserviceaccount.com)
- หลังสร้างบัญชีแล้ว ให้ไปที่แท็บคีย์และสร้างคีย์สำหรับบริการ - เพิ่มคีย์ → สร้างคีย์ใหม่ เพื่อสร้างไฟล์คีย์ในรูปแบบ JSON - ดาวน์โหลดไฟล์คีย์ที่สร้างแล้วและเก็บรักษาไว้อย่างปลอดภัย 3. กลับไปที่ Cloud Storage แล้วไปที่แท็บสิทธิ์ของ บัคเก็ต(bucket) ที่สร้างไว้
- ในแท็บสิทธิ์ ให้เลือกให้สิทธิ์เข้าถึง → เพิ่ม principal แล้วกรอก service account ID ที่สร้างใหม่ - ในการกำหนดบทบาท ให้เพิ่มสิทธิ์ 2 รายการจาก Cloud Storage ได้แก่ Storage Object Creator, Storage Object Viewer แล้วคลิกยืนยัน 4. เมื่อตั้งค่าทั้งหมดเสร็จแล้ว ให้นำเข้าไฟล์คีย์สำหรับบริการไปลงทะเบียนในหน้าตั้งค่าการส่งออกข้อมูลของ Hive Analytics
AWS - S3¶
หากต้องการส่งออกข้อมูลไปยัง AWS จำเป็นต้องตั้งค่าดังต่อไปนี้
- ไปที่หน้า AWS Console ที่ Storage → S3

- สร้าง บัคเก็ต(bucket) สำหรับการส่งออกข้อมูลโดยเฉพาะ
- ชื่อบัคเก็ตเมื่อกำหนดแล้วจะไม่สามารถเปลี่ยนได้ หากจำเป็นต้องใช้ชื่อใหม่ ต้องลบบัคเก็ตเดิมแล้วสร้างใหม่
- แนะนำให้ใช้บัคเก็ตนี้เฉพาะสำหรับการส่งออกข้อมูลเท่านั้น
- ต้องสร้างบัญชีสำหรับการส่งออกข้อมูล
- ผู้ใช้นี้ควรใช้เป็นบัญชีเฉพาะสำหรับการส่งออกข้อมูลเท่านั้น IAM user ให้สร้างใหม่
- สร้าง access key ของบัญชีที่สร้างไว้ ดูข้อมูลที่เกี่ยวข้องได้ที่ IAM user access key management - สร้าง access key
- เก็บ access key ไว้ในที่ที่ปลอดภัย
- เพิ่ม inline policy ให้กับบัญชีที่สร้างไว้
- หากต้องการรวม inline policy ของ user group ให้สร้าง policy ตามรายการที่ระบุ
- เลือกแท็บ JSON เพื่อสร้าง policy แล้ววางโค้ด JSON ต่อไปนี้
- รายการ
YOUR-BUCKET-NAME-HEREให้กรอกชื่อบัคเก็ตที่สร้างไว้
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetBucketLocation", "s3:ListBucket"],
"Resource": ["arn:aws:s3:::YOUR-BUCKET-NAME-HERE"]
},
{
"Effect": "Allow",
"Action": ["s3:PutObject"],
"Resource": ["arn:aws:s3:::YOUR-BUCKET-NAME-HERE/*"]
}
]
}
- เมื่อทำงานทั้งหมดเสร็จแล้ว ให้นำ access key ที่เก็บไว้ไปเพิ่มใน [Analytics Console > Data > การส่งออกข้อมูล] ตั้งค่า
รูปแบบการบันทึกไฟล์¶
โครงสร้างไดเรกทอรีบันทึกข้อมูล¶
รูปแบบเส้นทางไฟล์ทั่วไป:
- ประเภทบิลด์: มีค่า 2 แบบคือ
sandboxและliveหากตั้งค่าใน sandbox จะถูกบันทึกเป็น sandbox - YYYY/MM/DD: ปี/เดือน/วันที่เป็นเกณฑ์ในการดึงข้อมูล (อ้างอิง UTC)
- UUID: ค่ารันดอมเพื่อป้องกันการเขียนทับจากชื่อไฟล์ซ้ำ
- นามสกุลไฟล์: แตกต่างกันตามประเภทไฟล์ที่เลือก
| ประเภทไฟล์ | มีการบีบอัด | ชื่อไฟล์สุดท้าย |
|---|---|---|
| json | V | withhive/data_export/ประเภทบิลด์/YYYY/MM/DD/ชื่ออีเวนต์/ชื่ออีเวนต์_YYYY_MM_DD_UUID.json.gzip |
| csv | V | withhive/data_export/ประเภทบิลด์/YYYY/MM/DD/ชื่ออีเวนต์/ชื่ออีเวนต์_YYYY_MM_DD_UUID.csv.gzip |
นามสกุลไฟล์¶
- csv.gzip: ไฟล์ที่ประกอบด้วยข้อมูลซึ่งแยกฟิลด์ด้วยเครื่องหมายจุลภาค( , ) ไม่สามารถตั้งค่าการเข้ารหัสเมื่อบีบอัดไฟล์ได้(ไม่รองรับ)
- json.gzip: ไฟล์ที่ประกอบด้วยข้อมูลแบบตัวอักษรซึ่งมีโครงสร้างตามไวยากรณ์ของอ็อบเจ็กต์ JavaScript แยกเป็นบรรทัด และเป็นไฟล์ JSON ที่บีบอัดด้วย gzip ไม่สามารถตั้งค่าการเข้ารหัสเมื่อบีบอัดไฟล์ได้(ไม่รองรับ)
ข้อควรระวัง & Tips¶
- ไม่สามารถย้อนส่งข้อมูลอดีตได้: การส่งออกข้อมูลจะเริ่มทำงานตั้งแต่เวลาที่ลงทะเบียน ข้อมูลย้อนหลังที่เก็บก่อนการลงทะเบียนจะไม่ถูกส่งย้อนหลัง
- จำกัดจำนวนอีเวนต์สูงสุด: จำนวนอีเวนต์ที่เลือกได้สูงสุดคือ 10
- จำกัดขนาดรวมของข้อมูลที่ดึงต่ออีเวนต์: หากดึงข้อมูลแล้วเกิน 500Mbytes จะไม่รวมในการส่ง ข้อมูลที่ส่งจริงจะถูกบีบอัดประมาณ 15%


