Trong bài viết trước, chúng ta đã tìm hiểu về các chế độ lưu trữ dữ liệu (storage mode) trong Power BI Desktop. Tiếp nối chuỗi bài viết về storage mode, hôm nay, chúng ta sẽ khám phá chi tiết về DirectQuery – một kiểu kết nối dữ liệu quan trọng trong Power BI.
DirectQuery cho phép chúng ta truy vấn và kết nối trực tiếp với cơ sở dữ liệu có dung lượng lớn, lên đến hàng petabyte. Chúng ta sẽ tìm hiểu cách DirectQuery hoạt động và cách áp dụng loại kết nối này trong quá trình làm việc với dữ liệu trên Power BI.
Mục lục
DirectQuery là gì?
DirectQuery là một loại storage mode trong Power BI bên cạnh các chế độ khác như Import, Live connection, Composite (Hay còn gọi là Dual Mode). Power BI sẽ lưu dữ liệu vào bộ nhớ khi sử dụng chế độ Import.
Với DirectQuery, không có một bản ghi nào được lưu trữ trong máy tính của chúng ta. Thay vào đó, Power BI tạo một kết nối trực tiếp với nguồn dữ liệu (Datasource). Khi người dùng có tương tác với report hoặc report được load lại, Power BI gửi truy vấn đến datasource và dữ liệu mới nhất sẽ được visualize cho người xem.
DirectQuery hoạt động như thế nào?
DirectQuery trong Power BI hoạt động bằng cách thiết lập kết nối trực tiếp với nguồn dữ liệu. Khi ta tạo một báo cáo trong Power BI sử dụng chế độ DirectQuery, mỗi khi báo cáo được truy cập, các truy vấn sẽ được gửi từ Power BI đến nguồn dữ liệu để lấy dữ liệu tương ứng. Kết quả truy vấn sẽ được trả về và hiển thị trực tiếp trên báo cáo. Chính điều này khiến DirectQuery trở nên khác biệt so với chế độ Import. Khi dùng chế độ DirectQuery, data có thể được coi là gần như real-time.

Trong quá trình này, Power BI không tải toàn bộ dữ liệu vào bộ nhớ như trong chế độ Import, mà chỉ truy xuất dữ liệu cần thiết từ nguồn dữ liệu mỗi khi cần. Điều này cho phép Power BI làm việc với các nguồn dữ liệu có kích thước lớn, bao gồm cả hàng petabyte dữ liệu, mà không gây tốn tài nguyên bộ nhớ hệ thống.
Tuy nhiên, việc truy xuất dữ liệu trực tiếp từ nguồn dữ liệu có thể làm chậm quá trình hiển thị báo cáo so với chế độ Import, đặc biệt khi xử lý các truy vấn phức tạp hoặc khi làm việc với cơ sở dữ liệu có độ phức tạp cao. Do đó, việc lựa chọn chế độ DirectQuery cần được xem xét dựa trên yêu cầu và hiệu suất của dự án.
Nguồn dữ liệu nào hỗ trợ DirectQuery?
Không giống như Import được hỗ trợ trong tất cả các loại nguồn dữ liệu, DirectQuery chỉ được hỗ trợ bởi một số nguồn dữ liệu. Chúng ta không thể sử dụng Direct Query với những nguồn on-premises file như Excel, CSV… hay các nguồn như Googlesheet, Onedrive, Web…
Thông thường, Direct query chỉ sử dụng được khi data source là Relational Database hoặc một số nguồn khác có hỗ trợ chế độ này. Dưới đây là một số nguồn dữ liệu được hỗ trợ thông qua DirectQuery:
- Amazon Redshift
- Azure HDInsight Spark
- Azure SQL Database
- Azure SQL Data Warehouse
- Google BigQuery
- IBM Netezza
- Impala
- Oracle Database
- SAP Business Warehouse
- SAP HANA
- Snowflake
- Spark
- SQL Server
- Teradata Database
- Vertica
Một số ưu điểm của DirectQuery
- Data gần như realtime: Với DirectQuery, dữ liệu trên báo cáo được cập nhật theo thời gian thực từ nguồn dữ liệu. Khi có thay đổi trong nguồn dữ liệu, báo cáo sẽ tự động cập nhật để hiển thị dữ liệu mới nhất. Điều này đảm bảo tính chính xác và độ tin cậy của thông tin trong báo cáo.
- Khả năng làm việc với dữ liệu lớn: Với DirectQuery, không có giới hạn về kích thước dữ liệu mà bạn có thể làm việc. Bạn có thể truy cập và phân tích dữ liệu từ các nguồn có kích thước lớnmà không cần tải toàn bộ dữ liệu vào bộ nhớ. Điều này rất hữu ích khi làm việc với dữ liệu quy mô lớn và giúp tối ưu hóa tài nguyên hệ thống.
- Vẫn có thể xây dựng Data Model: Trong chế độ DirectQuery, bạn có thể kết hợp dữ liệu từ nhiều nguồn khác nhau để tạo báo cáo phức tạp và đa nguồn. Bạn có thể tạo các liên kết và quan hệ giữa các bảng dữ liệu từ các nguồn khác nhau và thực hiện các phép biến đổi, truy vấn phức tạp để xử lý dữ liệu.
Một số nhược điểm của DirectQuery
- Hiệu suất chậm hơn: So với chế độ Import, DirectQuery thường có hiệu suất chậm hơn do việc truy vấn dữ liệu trực tiếp từ nguồn dữ liệu. Thời gian phản hồi có thể lâu hơn khi truy vấn dữ liệu trực tiếp và xử lý các phép toán phức tạp trên nguồn dữ liệu.
- Hạn chế trong việc biến đổi dữ liệu: Trong DirectQuery, không phải tất cả các phép biến đổi dữ liệu được hỗ trợ. Một số phép biến đổi phức tạp và hàm DAX có thể không khả dụng hoặc gây ra vấn đề về hiệu suất. Điều này có thể hạn chế khả năng xử lý và làm việc với dữ liệu trong môi trường DirectQuery. Nếu bạn sử dụng một chuyển đổi không được hỗ trợ, bạn sẽ nhận được thông báo lỗi cho biết “This step results in a query that is not supported in DirectQuery mode” (Ảnh bên dưới).

- Giới hạn về tính năng và quy mô dữ liệu: DirectQuery có một số hạn chế về tính năng so với chế độ Import. Một số tính năng như xem tag data view, tạo calculated table và sử dụng Date hierarhy có thể không khả dụng trong DirectQuery. Ngoài ra, mặc dù không có giới hạn về kích thước dữ liệu, nhưng DirectQuery phụ thuộc vào khả năng và hạn chế của nguồn dữ liệu. Điều này có thể gây ra hạn chế về quy mô và khả năng mở rộng của hệ thống.
- Phụ thuộc vào kết nối mạng và nguồn dữ liệu: Trong DirectQuery, hiệu suất và khả năng truy cập dữ liệu phụ thuộc vào tốc độ kết nối mạng và khả năng phản hồi của nguồn dữ liệu. Nếu kết nối mạng không ổn định hoặc nguồn dữ liệu không phản hồi nhanh, có thể gây trễ và ảnh hưởng đến trải nghiệm người dùng.
- Giới hạn trong việc làm mới dữ liệu: Trong DirectQuery, không có khả năng làm mới dữ liệu theo lịch trình như chế độ Import. Dữ liệu được cập nhật chỉ khi người dùng truy cập báo cáo. Điều này có thể hạn chế trong việc theo dõi và quản lý dữ liệu cập nhật.
- Tốn thêm chi phí đối với một số datasource: Đối với các datasource có cơ chế thu tiền dựa trên mỗi câu lệnh Query (Ví dụ như GoogleBigquery), thì việc dùng DirectQuery trên PowerBI có thể tốn thêm một phần chi phí. Nguyên nhân là do mỗi lần report được load hay có sự tương tác của người dùng, thì PowerBI lại gửi resquest query đến datasource và chúng ta sẽ bị tính phí cho lần query đó (Phí của datasource).
Các bài toán phù hợp sử dụng chế độ DirectQuery
Chế độ DirectQuery thích hợp cho các bài toán mà có kích thước dữ liệu lớn và thường xuyên thay đổi, đồng thời phía business yêu cầu report phải được cập nhật liên tục theo sự thay đổi đó. Điển hình của bài toán này đó là theo dõi tình hình giao dịch chứng khoán trong phiên, theo dõi tình trạng sản xuất sản phẩm của doanh nghiệp…Có một yêu cầu đối với các bài toán sử dụng DirectQuery, đó là data model của bài toán không được quá phức tạp. Do dữ liệu không được lưu trữ trên Power BI, nên nếu data model quá phức tạp, việc truy xuất dữ liệu từ nguồn datasource sẽ gặp vấn đề về hiệu năng hoặc gây lỗi data.
Một số lưu ý khác
Bạn có thể chuyển đổi từ mode DirectQuery sang Import tại tab model, nhưng một khi đã chuyển đổi sang Import thì không thể chuyển về DirectQuery.

Kết luận
Qua bài viết này, chúng ta đã tìm hiểu được sâu hơn về các khía cạnh của chế độ DirectQuery. DirectQuery khá hữu ích khi làm việc với dữ liệu lớn hoặc cần có tính real-time. Tuy nhiên, ngoài những ưu điểm ra thì chế độ này cũng tồn tại các mặt hạn chế. Hai vấn đề lớn chúng ta cần cân nhắc khi sử dụng đó là hiệu năng xử lý bị chậm và một số tính năng liên quan đến DAX, clean và transform bị giới hạn. Tùy từng bài toán cụ thể, chúng ta cần xem xét và cân nhắc đánh đổi những ưu điểm và nhược điểm của DirectQuery.
Các bạn có thể xem thêm nội dung các bài viết liên quan tại đây: