dbt Charts mã nguồn mở: Ngôn ngữ khai báo giúp AI tạo dashboard có kiểm soát
dbt Labs vừa mã nguồn mở dbt Charts — ngôn ngữ YAML khai báo dùng để xây dựng dashboard và biểu đồ, cho phép cả con người lẫn AI agent tạo báo cáo trực quan từ chat nhưng vẫn đảm bảo khả năng quản trị, kiểm toán và đồng bộ với Git. Đây được xem là bước tiếp theo trong quá trình "tách lớp" của các công cụ BI truyền thống.

dbt Charts mã nguồn mở: Ngôn ngữ khai báo giúp AI tạo dashboard có kiểm soát
dbt Labs vừa công bố mã nguồn mở dbt Charts — một ngôn ngữ khai báo mới dùng để xây dựng dashboard và biểu đồ, cho phép cả con người lẫn AI agent tạo báo cáo trực quan chỉ từ một đoạn chat nhưng vẫn đảm bảo tính quản trị và khả năng kiểm toán.
Công cụ này hứa hẹn giải quyết bài toán nan giải của làn sóng AI cho dữ liệu: ai cũng có thể "chat" ra một báo cáo trong vài giờ, nhưng kết quả thường là một mớ file lộn xộn, khó truy vết và không thể kiểm soát.
Cuộc chiến giữa code và công cụ BI
Khi AI tạo báo cáo theo cách thông thường, nó biến một báo cáo đơn giản thành hàng loạt file: HTML, CSS, JavaScript, vài thư viện vẽ biểu đồ, rồi thêm cả ứng dụng React hoặc Streamlit khi cần chạy trực tiếp. Việc truy vết một kết quả về nguồn gốc đòi hỏi phải lần theo nhiều ngôn ngữ và file khác nhau — vừa chậm cho người kiểm tra, vừa tốn thời gian và token của AI mỗi lần chỉnh sửa.
Các công cụ BI truyền thống thì đi theo hướng ngược lại: gắn thêm trợ lý AI vào giao diện có sẵn. Cách này giữ AI trên "đường ray" được kiểm soát, nhưng đường ray lại quá hẹp — agent chỉ có thể làm những gì giao diện cho phép.
"Vậy là hôm nay bạn phải chọn giữa sự tự do lộn xộn của code và sự kiểm soát chật hẹp của công cụ BI."
dbt Charts được xây dựng như một lựa chọn thứ ba. Theo Tristan Handy — nhà sáng lập dbt Labs — trong bài viết "BI's Second Unbundling", các công cụ BI ban đầu vốn là sản phẩm trọn gói: nạp dữ liệu, biến đổi, tính toán, lưu đệm, ngữ nghĩa, trực quan hóa, định danh đều nằm trong một sản phẩm.
Sự phát triển của biểu đồ hướng tới chat
Từ khoảng năm 2015 đến 2022, các lớp hạ tầng này lần lượt bị tách ra thành những dịch vụ chuyên biệt: tính toán về các ông lớn cloud, nạp dữ liệu về Fivetran, biến đổi về dbt. Công cụ BI chỉ còn lại phần trực quan hóa, giao diện phân tích tương tác, định nghĩa ngữ nghĩa, quản lý truy cập và lưu trữ web — trong đó biểu đồ là phần lớn nhất.
Biểu đồ rời khỏi công cụ BI
Bước đi mới của dbt Labs là đưa biểu đồ ra khỏi công cụ BI và đặt vào code. Cụ thể, dbt Charts sử dụng ngôn ngữ YAML có cấu trúc, cho phép khai báo một dashboard tương tác hoàn chỉnh chỉ trong một file YAML duy nhất, dễ đọc và dễ kiểm toán.
Trong dbt Charts, SQL vẫn là ngôn ngữ khai báo bạn muốn xem dữ liệu gì, còn YAML bao bọc xung quanh để khai báo cách bạn muốn hiển thị dữ liệu đó. Markdown đảm nhiệm phần văn bản mô tả, còn Jinja — như trong dbt — đảm nhiệm biến và macro.
Một ví dụ nhỏ gồm một biến (bộ lọc giao diện), một truy vấn và một biểu đồ:
variables:
status:
column: main.documents.status
queries:
doc_growth: |
SELECT DATE_TRUNC('month', created_at) AS month,
SUM(COUNT(*)) OVER (ORDER BY month) AS num_docs
FROM main.documents
WHERE {{ filter('status', status) }}
GROUP BY 1
charts:
growth:
title: Documents created, all time
type: area
query: doc_growth
x: month
y: num_docs
rows:
- growth
Chỉ với file đó là đã đủ cho cả một dashboard. Công cụ dòng lệnh có thể kết xuất bất kỳ file board nào thành SVG tĩnh, hoặc HTML, PNG, PDF và cả terminal — chạy trên laptop hay trong CI đều được, và có thể phục vụ cả thư mục như một trang web:
dct render charts/documents.yml --format svg # hoặc html, png, pdf, terminal
dct serve
Ngôn ngữ này khá sâu về khả năng biểu đạt: hiện có hơn 1.100 tùy chọn cấu hình, trải trên 16 loại biểu đồ và các biểu đồ ghép được tạo từ chúng. Người dùng hiếm khi phải đặt thủ công từng tùy chọn, vì style được kế thừa theo tầng: biểu đồ kế thừa từ board, board kế thừa từ theme, và đổi theme chỉ tốn một dòng. Một board cũng có thể extends: từ board khác, cho phép định nghĩa phong cách chung hoặc báo cáo chuẩn một lần rồi tái sử dụng ở mọi nơi.
Tích hợp sâu với dbt
Không bắt buộc phải dùng dbt Charts chung với dự án dbt, nhưng khi kết hợp thì rất nhiều thứ được mở khóa. Lớp biểu đồ nằm trực tiếp trên lớp biến đổi, và tích hợp càng sâu thì việc thay đổi cả hai càng dễ.
Với dbt Charts, thư mục charts/ nằm cạnh thư mục models/ trong cùng một kho Git, nên thay đổi ở model và biểu đồ đi chung một nhánh, qua cùng một lần chạy CI, và có thể phát hiện lỗi trước khi lên production:
your_dbt_project/
.git/
dbt_project.yml
models/
charts/ # thư mục mới trong repo dbt cho dashboard
revenue.yml
Các truy vấn tiếp cận model thông qua ref(), được phân giải từ manifest của dự án. Nhờ đó, một model bị đổi tên hay một cột bị thiếu sẽ làm hỏng pull request gây ra lỗi đó, trước cả khi dbt run xây dựng lại kho dữ liệu:
dbt parse && dct validate charts/
Kế hoạch sắp tới là hỗ trợ dbt Semantic Layer, để một board có thể dùng metric theo cách dự án định nghĩa sẵn thay vì phải lặp lại câu SQL.
Được thiết kế cho chat
AI agent thường khá "mù" về ngữ cảnh và làm việc tốt nhất khi có vòng phản hồi chặt chẽ. dbt Charts mang lại đúng điều đó: kiểm tra nghiêm ngặt cả YAML lẫn SQL, cùng một bộ kiểm tra trực quan hóa rộng khắp để phát hiện vấn đề trước khi bất kỳ ai nhìn thấy board:
$ dct render charts/revenue.yml
WARN-BAR-BAND-WIDTH-TOO-NARROW
182 bands x 2 series across 640px
Fix: roll up to a coarser grain.
WARN-TABLE-COLUMNS-OVERFLOW
Table needs 980px but only 640px is available.
Fix: drop columns or widen the slot.
Để biến những dòng cảnh báo này thành một hệ thống báo cáo đẹp và đồng bộ, dbt Labs đã mời RJ Andrews — nhà thiết kế, tác giả và nhà nghiên cứu lịch sử đồ họa dữ liệu — tham gia thiết kế biểu đồ. Nhiều công cụ hiện nay xử lý bằng cách dùng các thẻ và khung giả căn chỉnh, đánh đổi bằng sự nhiễu hình ảnh và không gian bị mất. Thay vào đó, dbt Charts tính toán kỹ khoảng cách, kích thước và bố cục của từng biểu đồ, cả khi đứng một mình lẫn khi nằm cạnh các biểu đồ khác.
Thiết kế biểu đồ được chăm chút tỉ mỉ
Nền tảng dbtCharts.com
Song song với ngôn ngữ mã nguồn mở, dbt Labs cho ra mắt dbtCharts.com dưới dạng bản beta công khai — một nền tảng lưu trữ cho phần còn lại của BI. Khi biểu đồ đã được tách ra, phần còn lại chủ yếu là lưu trữ, kiểm soát truy cập và giao diện người dùng. Bản chất của những phần này có lẽ không thể tách rời, nên nền tảng đảm nhiệm chúng trên nền ngôn ngữ mã nguồn mở.
Nền tảng kết nối tới kho dữ liệu của bạn và bổ sung phân tích hội thoại, trình biên tập trực quan cho các chỉnh sửa cuối, lịch sử phiên bản, và chia sẻ kèm quyền cho người dùng và nhóm — nhờ đó người đọc board không cần đăng nhập vào kho dữ liệu.
Nền tảng tích hợp chat và biểu đồ
Vì được xây trên ngôn ngữ mở, mọi thay đổi từ chat, trình biên tập trực quan hay code đều ghi vào cùng một file YAML trong kho Git. Không có gì bị khóa chặt: cùng một board chạy được trên laptop, trong CI và trên nền tảng, cho phép các nhóm tự phục vụ với sự hỗ trợ của agent mà không tạo ra một "data stack ngầm" thứ hai.
Dùng thử
Ngôn ngữ dbt Charts được mở theo giấy phép Apache 2.0, bạn có thể tự viết, kết xuất và phục vụ board ngay trên máy mà không cần tạo tài khoản. Cài đặt bằng một dòng lệnh:
uv tool install dbt-charts
Hoặc giao cho AI agent của bạn:
Make charts of this with dbt Charts. Start with: uv tool install dbt-charts && dct skills intro
dbt Charts hiện ở giai đoạn tiền 1.0 và vẫn đang thay đổi. Khi ngữ pháp được cập nhật, các board sẽ tự động di trú khi được phân giải, nên những board viết hôm nay vẫn tiếp tục hiển thị được.
Với các đội ngũ dữ liệu tại Việt Nam đang tìm cách kết hợp sức mạnh của AI agent vào quy trình phân tích mà không đánh mất khả năng kiểm soát và truy vết, dbt Charts là một hướng tiếp cận đáng để theo dõi — đặc biệt khi nó tận dụng được chính kho Git và các model dbt đã có sẵn.

