Azure Data Factory ทำ ETL เชื่อม API to Database

Azure Data Factory ทำ ETL เชื่อม API to Database

การจัดการข้อมูลในสมัยนี้เป็นสิ่งสำคัญที่ไม่อาจหลีกเลี่ยงได้ในองค์กรขนาดใหญ่และเล็ก โดยเฉพาะเมื่อมีความต้องการในการนำข้อมูลจากแหล่งต่างๆ มาวิเคราะห์จึงเป็นเรื่องท้าทาย ซึ่ง Azure Data Factory (ADF) บริการบนคลาวด์จาก Microsoft ช่วยให้คุณทำ ETL (Extract, Transform, Load) ดึงข้อมูลจาก API ไปยัง Database ได้อย่างง่ายดาย

ดังนั้น การใช้ Azure Data Factory เพื่อทำ ETL และเชื่อม API กับฐานข้อมูลเป็นอีกหนึ่งวิธีที่มีประสิทธิภาพในการจัดการข้อมูลในองค์กร ทำให้การนำข้อมูลมาใช้ประโยชน์ในการตัดสินใจหรือการวิเคราะห์เป็นเรื่องที่ง่ายและมีประสิทธิภาพมากยิ่งขึ้น

เริ่มแรกก็ต้องทำการเข้าไปที่หน้า Azure Data Factory Studio และไปที่เมนู “Author” ที่เป็นเหมือนรูปดินสอทางซ้ายมือ ถ้าใครยังไม่ได้สร้าง Service นี้ ให้ทำการเข้าไปทำตามได้ที่บทความนี้เลย วิธีสร้าง Azure Data Factory บน Microsoft Azure

Rest API to Database in ADF

ใน Azure Data Factory สามารถทำได้ 2 รูปแบบหลักๆ คือ ทำผ่าน Pipelines กับ Data flows ซึ่งในบทความนี้เราจะพาไปทำความรู้จักทั้ง 2 อย่าง โดย Data flows เราจะทำเมื่อเรามีรูปแบบการทำที่ซ้ำๆ จะได้ไม่ต้องการ Create Pipelines ใหม่ทุกครั้ง และเมื่อทำการแก้ไข้ Data Flows นั้นๆ ทาง Pipelines ที่นำไปใช้ ก็จะถูกอัปเดตไปในตัว

Datasets

ในส่วนของ Datasets จะเป็นส่วนของการสร้างแหล่งข้อมูลหรือพื้นที่จัดเก็บของมูล ถ้าเราจะมองให้เข้าใจง่ายๆ โดยยกตัวอย่างเป็นเนื้อหาในบทความนี้ เราจะสร้าง Datasets ทั้งหมดสอง Datasets โดยอันแรกจะเป็น Dataset API ที่เราจะนำเข้ามา กับอีกอันคือ Dataset ที่เราจะนำเอาข้อมูลไปเก็บ หรือก็คือ Dataset Database นั้นเอง

เพื่อไม่ให้เป็นการเสียเวลา เรามาสร้าง Dataset แรกกัน กด New Datasets และค้นหา Rest API ได้เลย

Datasets API

  • Datasets เลือก +New
  • ค้นหาและเลือก REST
  • Linked service เลือก +New

ในส่วนของ New linked service ให้เรากรอกตาม Rest API ที่เราจะทำการเชื่อม

  • Name: ตั้งชื่อของ Source dataset
  • Description: รายละเอียดที่อยากจะอธิบาย
  • Connect via integration runtime: ให้เลือก Default ไว้ คือ “AutoResolveIntegrationRuntime”
  • Base URL: ตรงนี้ให้ใส่ link ของ API ที่เราจะทำการดึงข้อมูล โดยตัวอย่างในบทความนี้คือ jsonplaceholder.typicode.com/users
  • Authentication type: เป็นการเลือกประเภทของการ Authentication ในบทความนี้ผู้เขียนเลือก “Anonymous” ซึ่งในอนาคตตรงนี้เราจะต้องเลือกเป็นอย่างอื่น เช่น Basic หรือ OAuth2 เพื่อยืนยันสิทธิ์ก่อนจะเรียกใช้ API

โดยเมื่อเราเลือกรูปแบบการ Authentication เป็น Anonymous แล้ว ใน่สวนหัวข้ออื่นๆ เราตั้งค่าเป็น Default ไว้ได้เลย และทำการกดปุ่ม Test Connection ถ้า Success ก็ Create ได้เลย

Datasets SQL

ในส่วนของ Dataset ที่จะมาเป็นฐานข้อมูลฝั่งรับ อาจเรียกได้ว่าเป็นจุดที่เราจะ Load ข้อมูลเข้าไปจัดเก็บ หรือก็คือ Database ในบทความนี้นั้นเอง

  • Datasets เลือก +New
  • ค้นหาและเลือก Azure SQL Database หรือถ้าจะทำการเชื่อมกับฐานข้อมูลชนิดอื่น ก็สามารถเลือกตรงจุดนี้ได้เลย
  • Linked service เลือก +New ถ้าเรายังไม่เคยนำฐานข้อมูลเข้ามาใน ADF

ในส่วนของ New linked service ให้เรากรอกตามฐานข้อมูลที่เราจะทำการเชื่อม Azure subscription , Server name , Database name, Authentication type กรอกตามข้อมูลที่เรามีได้เลย ส่วนข้อมูลอื่นๆ เราตั้งค่า Default ไว้ได้เลย

เมื่อเรากรอกข้อมูลการเชื่อมต่อของ Database เสร็จแล้ว (ถ้าใครยังไม่ได้สร้าง Database สามารถคลิ๊กดูการสร้าง Database) จะกลับมาหน้า Set properties เพื่อทำการเลือก Tables ซึ่งถ้าเรายังไม่มี Table หรือเว้นว่างไว้ แต่ถ้ามีอยู่แล้วก็เลือกได้เลย ส่วน Import schema ให้เป็น None ไว้ หลังจากนั้นกด OK ได้เลย

Create Pipelines

รูปแบบแรกที่เราจะมาทำคือรูปแบบ pipelines

  • ทำการสร้าง pipelines ใหม่ “add new resource”
  • ตั้งชื่อให้จดจำง่ายและเข้าใจว่า pipelines นี้เอาไว้ทำอะไร
  • เลือก “Copy data” โดยการ Drag & Drop

General

สำหรับแท็ปแรก General ให้เราตั้งชื่อ Activities นี้ โดยผู้เขียนขอใช้ว่า Copy data from API to Database แลถ้าต้องการตั้งค่าอะไรพื้นฐาน จะ Activated หรือ Deactivated ตัว Activities ก็สามารถทำได้ที่แท็ปนี้ได้เลย

Source

Source dataset ให้เราทำการเลือก dataset ที่เราได้ทำการสร้างเอาไว้แล้ว และเราต้องใจเอามาไว้ Extract ข้อมูล ซึ่งในบทความนี้ Source ตั้งต้นของเราคือ API

  • Request method: จะให้เราเลือกระหว่าง GET กับ POST ซึ่งถ้าเราเลือก POST จะมีช่อง Request body มาให้เรากรอกเพิ่มเติม
  • Request timeout:
  • Request interval (ms):
  • Additional headers: ถ้าเรามี header ที่ต้องระบุ ก็สามารถระบุเข้าไปได้เลยในนี้
  • Pagination rules:
  • Additional columns: ถ้าเรามีข้อมูลอะไรเพิ่มเติมนอกเหนือจาก Source ที่เราทำมา ก็สามารถใส่เข้าไปตรงนี้ได้

Sink

Sink dataset ให้เราทำการเลือก dataset ที่เราได้ทำการสร้างเอาไว้แล้ว และเราต้องใจจะนำข้อมูลที่ Extract มา Load ใส่ ซึ่งในบทความนี้ Sink ของเราคือ SQL Database

  • Write behavior: สำหรับบทความนี้เราจะทำการ Insert เข้า Database เพราะฉะนั้นให้เลือก Insert
  • Bulk insert table lock:
  • Table option:
  • Pre-copy script:
  • Write batch timeout:
  • Write batch size:
  • Max concurrent connections:
  • Disable performance metrics analytics:

Mapping

ในส่วนของ Mapping เราสามารถทำแบบ Auto ได้ด้วยการ “Import schemas” หรือเราจะทำเองทีละฟิวล์ด้วยการเลือก “New mapping” และทำกรอก Columns ของฝั่ง Source กับ Columns ของฝั่ง Sink

Create Data flows

รูปแบบที่สองที่เราสามารถทำได้ นั้นคือรูปแบบ data flows

  • ทำการสร้าง data flows ใหม่ “add new dataflow” หรือจะสร้าง folder จัดระเบียบก่อนก็ได้
  • ตั้งชื่อให้จดจำง่ายและเข้าใจว่า data flows นี้เอาไว้ทำอะไร

Add Source

เมื่อทำการ add source แล้ว จะมีแท็ปต่างๆ ให้เราทำการ config

Source setting

Source setting จะมี dataset ให้เลือก dataset ที่เราได้ทำการสร้างเอาไว้แล้ว และเราต้องใจเอามาไว้ Extract ข้อมูล ซึ่งในบทความนี้ Source ตั้งต้นของเราคือ API

Source option

ในส่วนของ Source option ตรงนี้ จะเปลี่ยนแปลงไปตาม Source setting ที่เราเลือก ซึ่งถ้าเราเลือกเป็นแบบ API เมนูในส่วนของ Source option ก็จะเป็นเรื่องของการใส่ค่า Request method GET, POST หรือถ้าใส่ Source เป็น blob ก็จะเป็นการจัดการไฟล์ เช่น

  • Column to store file name: เราสามารถสร้าง columns ใหม่ ที่มีข้อมูล path และชื่อไฟล์ได้ โดยกำหนดชื่อ columns ลงไปในช่องนี้
  • After completion: ตามชื่อเลย ถ้าเราเลือก Delete source file หรือ Move เมื่อ data flows ชุดนี้ completion แล้ว เราต้องการให้ delete หรือ move ไฟล์ไปไหนก็ได้

Sink

หลังจากทำการ Add Source แล้ว เราก็ต้องเพิ่ม flow sink เข้าไปด้วยอีกหนึ่งอัน เพื่อทำการจัดเก็บข้อมูลที่ Extract มา Load ใส่

Slink

แท็ปนี้ให้เรามา config ในหัวข้อ Dataset โดยเลือก Datasets ที่เราสร้างไว้ ในบทความนี้คือ SQL Database

Setting

แท็ป setting ก็จะคล้ายๆ กับ source option ของฝั่ง flow source กล่าวคือ ถ้าเราเลือก slink dataset เป็น REST API ในส่วนนี้ก็จะเป็นลักษณะให้ setting Request method GET, POST ซึ่งในบทความนี้เรา set slink dataset เป็น SQL Database

Mapping

ใน่ส่วนของแท็ป mapping ก็จะคล้ายๆ กับ mapping ใน pipelines กล่าวคือมี Auto mapping ให้เราหรือเราจะทำเองทีละฟิวล์ด้วยการเลือก “Addmapping” และทำกรอก Columns ของฝั่ง Source กับ Columns ของฝั่ง Sink

ทดสอบ

การทดสอบเราจะต้องทดสอบที่ pipelines ถ้าเราทำ Data Flows ก็ให้ไปเพิ่ม Flows ที่ pipelines ก่อนทำการทดสอบ ส่วนการทดสอบนั้นให้คลิ๊กปุ่ม “Trigger Now” ที่หน้า pipelines ได้เลย โดยทั้งหมดนี้ อย่าลืมทำการ Save หรือ Publish All กันด้วยนะ


ก็จบไปแล้วสำหรับการใช้งาน Azure Data Factory กับการทำ ETL เบื้องต้น โดยการเชื่อม API แล้วดึงข้อมูลมาจัดเก็บลงใน Database โดยรูปแบบจะมีให้เลือกได้ 2 รูปแบบ นั้นคือ Pipelines กับ Data flows ซึ่งในรูปแบบของ Pipelines นั้น สามารถที่จะนำ Data flows เข้ามาใช้ใน Pipelines ได้ด้วย หรือถ้าจะมองได้อีกมุม ก็อาจจะตอบได้ว่า Data flows สามารถทำเป็น flow ย่อยใน Pipelines ได้นั้นเอง

0