ข้ามไปที่เนื้อหา

การส่งออกข้อมูล

ภาพรวม

การส่งออกข้อมูลคือฟีเจอร์ที่ดึงข้อมูลอีเวนต์ที่กำลังถูกนำเข้าไปยัง Hive Analytics ทุกชั่วโมง แล้วอัปโหลดไปยังที่เก็บข้อมูลบนคลาวด์

ข้อมูลที่ให้ใน Data Export เป็นข้อมูลดิบของอีเวนต์(raw) ซึ่งสามารถนำไปสร้างฐานข้อมูลเอง หรือประมวลผลต่อในรูปแบบที่ต้องการเพื่อใช้ในการวิเคราะห์ตามวัตถุประสงค์ได้

Hive Analytics เป็นผู้ให้บริการแปลงไฟล์และส่งข้อมูล แต่คุณจำเป็นต้องลงทะเบียนคลาวด์สตอเรจเป็นบริการของคลาวด์ที่คุณใช้งานอยู่ด้วย

Note

ข้อมูลจะถูกส่งตามอีเวนต์ และไม่รองรับการแยกส่งตามโปรเจกต์


ใช้ทำอะไรได้บ้าง?

นักวิเคราะห์ข้อมูล

  • สามารถนำข้อมูลที่รวบรวมใน Hive Analytics ไปใส่ฐานข้อมูลภายในองค์กรเอง แล้วประมวลผลต่อในรูปแบบที่ต้องการเพื่อวิเคราะห์เชิงลึก
  • เชื่อมต่อข้อมูลดิบเข้ากับเครื่องมือ BI ภายในองค์กรหรือสภาพแวดล้อมการวิเคราะห์เพื่อสร้างแดชบอร์ดแบบกำหนดเองได้

นักพัฒนา

  • สามารถนำข้อมูลอีเวนต์ของ Hive ไปลงใน data pipeline ภายในองค์กรโดยอัตโนมัติ
  • เชื่อมต่อกับ AWS S3 หรือ GCP Cloud Storage เพื่อใช้ข้อมูลอีเวนต์ล่าสุดทุกชั่วโมงได้ทันทีจากคลาวด์สตอเรจ

เริ่มต้นอย่างรวดเร็ว

หากเป็นครั้งแรกที่ตั้งค่าการส่งออกข้อมูล ให้ทำตามขั้นตอนด้านล่างเพื่อเชื่อมต่อคลาวด์สตอเรจให้เสร็จสมบูรณ์

  1. สร้างบัคเก็ตเฉพาะสำหรับการส่งออกข้อมูลในคลาวด์สตอเรจที่ต้องการใช้ (AWS S3 หรือ GCP Cloud Storage) และเตรียมคีย์ยืนยันตัวตน
  2. เข้าไปยังหน้า Analytics Console > Data > การส่งออกข้อมูล
  3. เลือกอีเวนต์(ล็อก)ที่จะดึงออกมา (สูงสุด 10 รายการ)
  4. เลือกที่เก็บข้อมูล (AWS S3 / GCP Cloud Storage) และกรอกชื่อบัคเก็ต
  5. เลือกประเภทข้อมูล (CSV / JSON)
  6. ลงทะเบียนคีย์ยืนยันตัวตน

Note

สำหรับวิธีสร้างบัคเก็ตและออกคีย์ยืนยันตัวตนของแต่ละคลาวด์สตอเรจ โปรดดูที่ ฟีเจอร์ทั้งหมด


ฟีเจอร์ทั้งหมด

ลอจิกของการส่งออกข้อมูล

data_export_01.png ข้อมูลอีเวนต์ที่ถูกจัดเก็บใน 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'

การตั้งค่าการส่งออกข้อมูล

data_export_02.png

การเลือกอีเวนต์

เลือกอีเวนต์(ล็อก)ที่จะดึงออกมา

  • สามารถค้นหาและเลือกได้โดยกรอกส่วนหนึ่งของชื่ออีเวนต์
  • เลือกอีเวนต์ได้สูงสุด 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 จะถูกดึง
  • เวลาที่เสร็จสิ้นอาจแตกต่างกันไปตามจำนวนไฟล์และปริมาณการอัปโหลด

การลงทะเบียนคีย์ยืนยันตัวตน

ต้องมีสิทธิ์ในการอัปโหลดข้อมูลไปยังคลาวด์สตอเรจ คุณต้องลงทะเบียนคีย์ยืนยันตัวตนหรือไฟล์คีย์ยืนยันตัวตนที่มีสิทธิ์เขียนข้อมูล การลงทะเบียนคีย์จะต่างกันไปตามบริการคลาวด์

  • S3 — ลงทะเบียนค่า ACCESS_KEY, ACCESS_SECRET_KEY data_export_03.png
  • GCS — ลงทะเบียนไฟล์คีย์ยืนยันตัวตน data_export_04.png

การตั้งค่าคลาวด์สตอเรจ

GCP - Google Cloud Storage

หากต้องการส่งออกข้อมูลไปยัง Google Cloud จำเป็นต้องตั้งค่าดังต่อไปนี้

  1. ไปที่หน้า Google Cloud Console ที่ Cloud Storage

    data_export_05.png 2. สร้าง บัคเก็ต(bucket) สำหรับใช้ส่งออกข้อมูลโดยเฉพาะ - ชื่อบัคเก็ตเมื่อกำหนดแล้วจะไม่สามารถเปลี่ยนได้ หากจำเป็นต้องใช้ชื่อใหม่ ต้องลบบัคเก็ตเดิมแล้วสร้างใหม่ - แนะนำให้สร้างเป็นบัคเก็ตเฉพาะสำหรับการส่งออกข้อมูล 3. ต้องสร้าง service key ที่จะใช้กับการส่งออกข้อมูลและให้สิทธิ์เขียนลงบัคเก็ต 1. จากหน้า Console ไปที่เมนู IAM และผู้ดูแลระบบ → service account 2. คลิก สร้าง service account เพื่อสร้างบัญชีใหม่ - ID ที่ใช้กับบัญชีสามารถตั้งชื่อได้ตามต้องการ (เช่น: hive_data_transfer_account@projectId.iam.gserviceaccount.com) data_export_06.png - หลังสร้างบัญชีแล้ว ให้ไปที่แท็บคีย์และสร้างคีย์สำหรับบริการ - เพิ่มคีย์ → สร้างคีย์ใหม่ เพื่อสร้างไฟล์คีย์ในรูปแบบ JSON - ดาวน์โหลดไฟล์คีย์ที่สร้างแล้วและเก็บรักษาไว้อย่างปลอดภัย 3. กลับไปที่ Cloud Storage แล้วไปที่แท็บสิทธิ์ของ บัคเก็ต(bucket) ที่สร้างไว้ data_export_07.png - ในแท็บสิทธิ์ ให้เลือกให้สิทธิ์เข้าถึง → เพิ่ม principal แล้วกรอก service account ID ที่สร้างใหม่ - ในการกำหนดบทบาท ให้เพิ่มสิทธิ์ 2 รายการจาก Cloud Storage ได้แก่ Storage Object Creator, Storage Object Viewer แล้วคลิกยืนยัน 4. เมื่อตั้งค่าทั้งหมดเสร็จแล้ว ให้นำเข้าไฟล์คีย์สำหรับบริการไปลงทะเบียนในหน้าตั้งค่าการส่งออกข้อมูลของ Hive Analytics

AWS - S3

หากต้องการส่งออกข้อมูลไปยัง AWS จำเป็นต้องตั้งค่าดังต่อไปนี้

  1. ไปที่หน้า AWS Console ที่ StorageS3 data_export_08.png
  2. สร้าง บัคเก็ต(bucket) สำหรับการส่งออกข้อมูลโดยเฉพาะ
    • ชื่อบัคเก็ตเมื่อกำหนดแล้วจะไม่สามารถเปลี่ยนได้ หากจำเป็นต้องใช้ชื่อใหม่ ต้องลบบัคเก็ตเดิมแล้วสร้างใหม่
    • แนะนำให้ใช้บัคเก็ตนี้เฉพาะสำหรับการส่งออกข้อมูลเท่านั้น
  3. ต้องสร้างบัญชีสำหรับการส่งออกข้อมูล
    • ผู้ใช้นี้ควรใช้เป็นบัญชีเฉพาะสำหรับการส่งออกข้อมูลเท่านั้น IAM user ให้สร้างใหม่
  4. สร้าง access key ของบัญชีที่สร้างไว้ ดูข้อมูลที่เกี่ยวข้องได้ที่ IAM user access key management - สร้าง access key
    • เก็บ access key ไว้ในที่ที่ปลอดภัย
  5. เพิ่ม 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/*"]
    }
  ]
}
  1. เมื่อทำงานทั้งหมดเสร็จแล้ว ให้นำ access key ที่เก็บไว้ไปเพิ่มใน [Analytics Console > Data > การส่งออกข้อมูล] ตั้งค่า

รูปแบบการบันทึกไฟล์

โครงสร้างไดเรกทอรีบันทึกข้อมูล

รูปแบบเส้นทางไฟล์ทั่วไป:

withhive/data_export/ประเภทบิลด์/YYYY/MM/DD/ชื่ออีเวนต์/ชื่ออีเวนต์_YYYY_MM_DD_UUID.นามสกุลไฟล์
  • ประเภทบิลด์: มีค่า 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%