Skip to main content

Command Palette

Search for a command to run...

dbt คืออะไรนะ?

Updated
2 min read
K

I'm a data architect from Thailand. :)

ตอนนี้ในสายงาน Data Engineering มีเครื่องมือตัวหนึ่งที่เริ่มเป็นที่รู้จักกันแล้ว นั่นก็คือ dbt หรือ data build tool ครับ เรามาลองทำความรู้จักกับมันดีกว่า ว่ามันคืออะไร แล้วทำไมเราถึงควรให้ความสนใจ 😉

dbt (data build tool) enables data analysts and engineers to transform data in their warehouses.

จาก บทความ What, exactly, is dbt? ของ Tristan Handy, Founder & CEO @ dbt Labs และเป็นผู้สร้างเครื่องมือนี้ขึ้นมา

ผมจะแปลได้ประมาณว่า dbt เป็นเครื่องมือที่ช่วยให้ชีวิตของชาว Data Analysts และ Engineers ในการทำ Data Transformation หรือเปลี่ยนแปลงรูปแบบของข้อมูลใน Data Warehouse ดีขึ้น.. 😲 ซึ่งการใช้งาน dbt จะอยู่ในส่วนของ Data Warehouse เลย ทำหน้าที่หลักๆ คือส่วน "T" ใน ELT หรือส่วน Transform นั่นเอง ตามรูปด้านล่างนี้ 👇

dbt-in-data-pipeline.png

dbt น่าสนใจอย่างไร?

ก่อนอื่นเลยคือ ด้วยความที่เราสามารถเขียนโค้ด SQL บนเครื่องเราได้ แล้วสั่งให้ไปรันบน Data Warehouse ของเรา อีกทั้งยังสามารถแยก Environment ได้ว่าจะให้ไปรันที่ Development หรือ Production ตรงนี้ทำให้ Workflow ของเราในการทำ Analytics ดีขึ้น และคล่องขึ้น

การใช้ dbt ช่วยให้เราเขียน SQL Queries ได้ในขณะที่เราไม่ต้องกังวลเรื่องของ Dependencies เช่น เราต้องรัน Query A ก่อนนะ แล้วค่อยไปรัน Query B ข้อมูลใน View สุดท้ายเราถึงจะถูกต้อง ตรงนี้ dbt จัดการให้ ทำให้เรามั่นใจได้ว่าเราสามารถเขียน Query แยกออกจากกันเป็นส่วนๆ ได้ (ใช้ WITH Clause) โดยที่ผลลัพธ์ยังคงถูกต้อง

และเนื่องจากที่เราสามารถแยก Query เราออกเป็นส่วนๆ ได้แล้ว dbt ก็สามารถให้เราเอา SQL ที่เราเคยเขียนไปแล้วกลับมาใช้ได้ด้วย (reusable) 🤩

ความ Amazing ของ dbt ยังไม่จบนะ เครื่องมือตัวนี้ได้นำเอา Software Engineering Principles ต่างๆ เหล่านี้เข้ามาสู่โลก Analytics เช่น Testing, Documentation และ Version Control เป็นต้น

Testing

เราสามารถใช้ dbt ตรวจสอบคุณภาพของข้อมูล การเชื่อมต่อกันระหว่างตาราง และการทดสอบข้อมูลอะไรก็ตามที่เราเขียนขึ้นมาตาม Use Case ของเราเอง ในส่วนนี้เราสามารถเอาเข้าไปในกระบวนการ Continuous Integration ได้ด้วย

Documentation

dbt มีคำสั่งสร้าง Document ให้เราแบบอัตโนมัติเลย ตรงนี้ดีงามมาก เพราะเราสามารถเห็น Data Lineage ได้เลยว่า ข้อมูลจากตารางนี้ เกิดจากตารางไหนรวมกันกับตารางไหน หน้าตาแบบนี้เลย!

dbt-data-lineage-example.png

Version Control

ตรงนี้หลายคนอาจจะบอกว่า เราก็เขียน SQL ใน Data Warehouse แล้วก็เอาโค้ดมาเข้า Version Control (VC) สิ ซึ่งผมบอกได้เลยว่าชีวิตเราก็จะลำบากในการคัดลอกโค้ดตรงนั้นออกมา สุดท้ายแล้วเราอาจจะลืมเอาเข้า VC เองด้วย 😅 การที่เราใช้ dbt เราจะสามารถรันคำสั่งบนเครื่องของเราต่อไปยัง Data Warehouse ได้ เราแก้โค้ดเมื่อไหร่ เราก็เอาเข้า VC ได้เลยทันที

อีกความสามารถหนึ่งของ dbt ก็คือการสามารถใช้ Template หรือ Macro ได้ นั่นทำให้เราสามารถทำอะไรนอกเหนือจากที่ SQL ปกติทำได้ 👍

สรุป

dbt เป็น Open-Source Tool ตัวหนึ่งที่น่าสนใจมากๆ น่าจะพัฒนามาได้ประมาณ 5 ปีแล้ว (นับปีจากตอนที่เขียนบทความนี้อยู่) แล้วก็เริ่มดังก็ประมาณ 2 ปีที่แล้ว (ผมนับจากที่มีคนไปพูดในงาน DataEngConf หรือ Data Council ในปัจจุบัน อิอิ)

นอกจากเครื่องมือตัวนี้จะช่วยส่งเสริมให้ Workflow และการทำงานต่างๆ เกี่ยวกับการปรับเปลี่ยน หรือบิดข้อมูลใน Data Warehouse ของเราดีขึ้น ยังช่วยให้เราทำงานร่วมกับคนอื่นได้ดีขึ้นด้วย เพราะมีข้อดีหลายๆ อย่างตามที่กล่าวไปด้านบน ลองดูกันครับ แล้วชีวิตของการทำ Data Transformation ของเราจะเปลี่ยนไป! (ในทางที่ดีขึ้นนะ)

ส่วนถ้าใครสงสัยเรื่องการเริ่มต้นใช้งาน เดี๋ยวบทความหน้าเราจะมาลองดูกันครับ 😎

More from this blog

Data Engineer Cafe: Data Engineering Center of Excellence ของคนไทย เพื่อคนไทย

ตอนนี้ผมพยายามอยากจะสร้าง community ของชาว data engineer ในเมืองไทย เป้าหมายคืออยากจะเป็น center of excellence ที่ใครก็ตามอยากทำงานในสายงานนี้ หรือมีความสนใจจะเข้ามาพูดคุยแลกเปลี่ยนความคิดเห็นกัน ก็จะสามารถเข้ามาแสดงความคิดเห็นได้อย่างมีอิสระเสรีภาพเ...

Apr 17, 20221 min read452
Data Engineer Cafe: Data Engineering Center of Excellence ของคนไทย เพื่อคนไทย

มาลองเล่น Dagster เบื้องต้นกัน

Dagster ตามชื่อของมันเลยคือ data orchestrator สำหรับงานพวก machine learning, analytics และ ETL ซึ่งเป็นเครื่องมือที่ช่วยเรื่อง workflow management อีกตัวหนึ่งที่กำลังมาแรงไม่แพ้ Airflow เลยทีเดียว จริงๆ แล้ว Nick Schrock (ผู้พัฒนา) ไม่ได้ตั้งใจจะทำอ...

Sep 24, 20213 min read1.2K
มาลองเล่น Dagster เบื้องต้นกัน

Scraping ข้อมูลประกาศรับสมัคร Data Engineer บนเว็บ Indeed.com

เกริ่น ในสายงาน Data Science & Engineering การทำ Scraping เป็นวิธีหนึ่งในการดึงข้อมูลจากระบบหนึ่งๆ ในกรณีที่เค้าไม่ได้มี API ไว้ให้เราใช้ อย่างเช่น หน้าเว็บไซต์ต่างๆ หรือข้อมูลที่อยู่ในไฟล์พวก PDF เป็นต้น ถ้าเรามีความสามารถในการเขียนโค้ดทำ Scraping ไ...

Aug 28, 20212 min read719
Scraping ข้อมูลประกาศรับสมัคร Data Engineer บนเว็บ Indeed.com

รีวิวหนังสือ "Data Pipelines Pocket Reference: Moving and Processing Data for Analytics"

เป็นหนังสือที่เขียนโดย James Densmore, Director of Data Infrastructure ที่ HubSpot ขอสรุปออกมา 3 ประโยค 😎 ครบเครื่องในการออกแบบและสร้าง Data Pipeline ที่ดี เริ่มตั้งแต่ Data Pipeline คืออะไร มีบทบาทอย่างไรใน Data Infrastructure แนวทางการออกแบบ และ...

Aug 26, 20211 min read888
รีวิวหนังสือ "Data Pipelines Pocket Reference: Moving and Processing Data for Analytics"

Kan Ouivirach

13 posts

Data Craftsman. Passionate in software engineering, data engineering, and data science. ❤️