Thủ thuật
Databricks tối ưu chi phí dbt với tính năng gán nhãn truy vấn (Query Tags)
(giờ Việt Nam)
Tóm tắt AI
Databricks ra mắt tính năng gán nhãn truy vấn giúp theo dõi chi phí tính toán chi tiết cho từng mô hình dbt, hỗ trợ doanh nghiệp kiểm soát ngân sách và tối ưu tài nguyên hiệu quả.
Bản dịch AI

Dự án dbt của bạn chạy 80 mô hình mỗi đêm. Hóa đơn kho dữ liệu (warehouse) đã tăng gấp đôi trong quý vừa qua. Hiệu suất mô hình biến động mạnh và hiệu quả của các tối ưu hóa gần đây nhất vẫn chưa rõ ràng. Bộ phận tài chính hỏi đội ngũ nào chịu trách nhiệm. Bạn mở lịch sử truy vấn và thấy... 80 dòng giống hệt nhau được gắn nhãn 'Databricks Dbt'. Chúc bạn may mắn.
Với Query Tags (hiện đã có bản Public Preview), các đội ngũ dữ liệu giờ đây có thể hưởng lợi từ các thẻ tự động được chèn sẵn (out-of-the-box), chẳng hạn như dbt_model_name, giúp làm phong phú thêm thông tin cho mỗi lần chạy. Bạn cũng có thể đính kèm các thẻ tùy chỉnh của riêng mình — đội ngũ, trung tâm chi phí, môi trường, bất cứ thứ gì — vào mọi truy vấn mà pipeline của bạn tạo ra.
Các thẻ được ghi lại trong system.query.history, giúp việc phân bổ chi phí, gỡ lỗi hiệu suất và giám sát khối lượng công việc trở nên đơn giản chỉ với một truy vấn SQL (xem chi tiết đầy đủ trong tài liệu).
Bài viết này hướng dẫn thực hiện một dự án dbt mã nguồn mở hoàn chỉnh, minh họa Query Tags từ đầu đến cuối: từ cấu hình cho đến các bảng điều khiển phân bổ chi phí. Mọi thứ được mô tả ở đây đều có sẵn dưới dạng kho lưu trữ GitHub mà bạn có thể sao chép (clone) và triển khai vào không gian làm việc của riêng mình, hoặc chỉ cần hỏi Genie.
Cách dbt-databricks tích hợp với Query Tags
Bộ điều hợp (adapter) dbt-databricks (phiên bản 1.11+) hỗ trợ Query Tags một cách nguyên bản. Có ba cấp độ mà tại đó các thẻ có thể được áp dụng, mỗi cấp độ đều kế thừa từ cấp độ trước đó:
Các thẻ tự động chèn (Auto-injected tags)
Ngoài các thẻ tùy chỉnh của bạn, dbt-databricks tự động chèn siêu dữ liệu về mỗi lần thực thi mô hình:
Thẻ (Tag)
Giá trị ví dụ
Mô tả
@@dbt_model_name
fct_daily_usage_by_sku
Mô hình dbt đang được thực thi
@@dbt_materialized
table
Chiến lược cụ thể hóa (table, view, incremental, metric_view)
@@dbt_core_version
1.11.6
Phiên bản dbt-core
@@dbt_databricks_version
1.12.0a1
Phiên bản bộ điều hợp dbt-databricks
Những thẻ tự động này đồng nghĩa với việc bạn có được khả năng hiển thị theo từng mô hình mà không cần cấu hình — bộ điều hợp sẽ thực hiện điều đó thay cho bạn.
Thẻ cấp hồ sơ (Profile-level tags)
Cách tiếp cận đơn giản nhất: thêm trường query_tags vào một mục tiêu (target) cụ thể trong hồ sơ dbt của bạn. Mọi truy vấn trong dự án sẽ tự động kế thừa các thẻ này.
Ví dụ, dòng đơn lẻ này gắn thẻ cho mọi truy vấn với bốn chiều dữ liệu: ai sở hữu nó (team), chi phí thuộc về đâu (cost_center), nó thuộc pipeline nào (project_name) và nó chạy trong môi trường nào (env).
Thẻ cấp mô hình (Model-level tags)
Để phân bổ chi tiết hơn, bạn có thể cung cấp các thẻ trên các mô hình cụ thể trong dbt_project.yml hoặc cấu hình mô hình trong định nghĩa sql của nó.
Các thẻ cấp mô hình sẽ hợp nhất với các thẻ cấp hồ sơ. Nếu cả hai cùng định nghĩa một khóa (key) giống nhau, giá trị ở cấp mô hình sẽ được ưu tiên.
Nơi các thẻ xuất hiện – system.query.history
Sau khi chạy dbt run, mọi câu lệnh SQL sẽ xuất hiện trong system.query.history với cột query_tags được điền dưới dạng MAP<STRING, STRING>. Bạn có thể truy vấn nó bằng cú pháp truy cập map tiêu chuẩn:
Lệnh này trả về mọi truy vấn được gắn thẻ trong 7 ngày qua, với các thẻ tùy chỉnh và thẻ tự động chèn được trích xuất thành các cột riêng biệt — sẵn sàng cho việc tổng hợp.
Bạn cũng có thể tìm thấy Query Tags cho truy vấn bạn đã chạy trong giao diện Query History hoặc giao diện SQL Warehouse Monitoring.

Ở góc dưới bên phải của Query Profile, bạn sẽ thấy các Query Tags mà bạn đã định nghĩa, cung cấp cho bạn tất cả thông tin cần thiết trong nháy mắt.

Phân bổ chi phí với Query Tags
Query Tags cho phép xác định việc phân bổ sử dụng chi tiết trực tiếp thông qua các truy vấn SQL, loại bỏ nhu cầu phân tích nhật ký thủ công hoặc chia nhỏ tài nguyên kho dữ liệu.
Bài viết được AI dịch và tổng hợp tự động từ Databricks: Blog. Liên kết bài gốc ở phía trên. Dữ liệu đồng bộ qua API công khai được ghi nguồn tại AI HOT (canonical) ↗. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.