dbt Charts mã nguồn mở: Ngôn ngữ khai báo giúp AI tạo dashboard có kiểm soát

Công nghệ14 tháng 9, 2026·8 phút đọc

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 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 chatSự 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ỉ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 đồ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.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗