11/22/2021
Để hiểu rõ về chủ đề này, chúng ta sẽ theo dõi một ví dụ cụ thể. Dưới đây là bảng tên các sân bay được lấy từ nguồn cấp dữ liệu OData công khai của TripPin:

Lưu ý cách cột Location chứa các nested value của kiểu dữ liệu Record và lưu ý rằng chúng ta chưa mở rộng cột này.
Dưới đây là một truy vấn khác với dữ liệu bán hàng cho các sân bay này đến từ Excel:

Bây giờ, giả sử chúng ta muốn kết hợp hai truy vấn này với nhau bằng thao tác Merge trong Power Query Editor. Khi bạn thực hiện việc này (bởi vì bạn đang kết hợp dữ liệu từ hai nguồn khác nhau và vì OData hỗ trợ tính năng gấp truy vấn) bạn sẽ được nhắc đặt cài đặt bảo mật dữ liệu trên các nguồn này (trừ khi bạn đã làm như vậy vào một thời điểm nào đó trước đây) vì Merge có thể dẫn đến việc dữ liệu được gửi từ Excel đến nguồn OData.
Nếu bạn đặt mức độ riêng tư của dữ liệu thành Private trên mỗi nguồn, nó sẽ trông như sau:

… thì bạn đang muốn cho Power Query biết rằng nó không bao giờ được gửi dữ liệu từ các nguồn này đến bất kỳ nguồn nào khác. Do đó, Power Query phải tải dữ liệu từ cả hai nguồn, đệm dữ liệu đó vào bộ nhớ và thực hiện Merge bên trong công cụ của chính nó.
Khi bạn thực hiện Merge, mọi thứ lúc đầu trông bình thường:

Nhưng khi bạn mở rộng cột Airports, bạn sẽ thấy rằng các nested value trong cột Location đã được chuyển thành văn bản “[Record]” và do đó không thể mở rộng được nữa.

Điều này là do Power Query đã phải đệm các giá trị trong truy vấn Airports nhưng nó không thể đệm các nested value.
Có hai cách để sửa lỗi này. Trước hết, bạn có thể thay đổi cài đặt bảo mật dữ liệu hoặc tắt hoàn toàn. Bạn có thể không nên tắt chúng hoàn toàn vì điều này chỉ có thể thực hiện được trong Power BI Desktop chứ không phải trong Power BI Service và thậm chí việc thay đổi cài đặt bảo mật dữ liệu có thể dẫn đến một số sự cố không mong muốn sau này. Ví dụ: nếu bạn đặt cấp độ bảo mật dữ liệu cho cả hai nguồn thành Public như sau …:

… thì không cần lưu vào bộ đệm (vì dữ liệu hiện có thể được gửi từ nguồn này sang nguồn khác) và các nested value trong trường Location có thể được mở rộng:

… và tất nhiên bạn sẽ phải làm như hình sau:

Tuy nhiên, bạn có thể quên rằng bạn phải đặt lại mức độ bảo mật dữ liệu của mình sau khi xuất bản tập dữ liệu của bạn lên Power BI Service. Và nếu sau đó bạn hoặc người khác đặt các mức bảo mật dữ liệu trở lại Private, bạn sẽ gặp lỗi sau trong đầu ra của truy vấn:

Thông báo lỗi ở đây là:
“Expression.Error: We cannot convert the value “[Record]” to type Record.”
Tùy thuộc vào kiểu dữ liệu của trường nested mà bạn có thể nhận được:
“Expression.Error: We cannot convert the value “[Table]” to type Table.”
hoặc
“Expression.Error: We cannot convert the value “[List]” to type List.”
Cách thứ hai để khắc phục sự cố dễ dàng hơn và có lẽ là an toàn hơn: bạn chỉ cần mở rộng cột Location trước thao tác Merge thay vì thực hiện sau. Bằng cách đó, không có trường nested nào hiện diện khi Merge diễn ra để tất cả các giá trị có thể được lưu vào bộ đệm. Dưới đây là giao diện của bảng Airports sau khi cột Location đã được mở rộng, trước khi Merge:

… và đây là đầu ra của Merge ngay cả khi mức độ bảo mật dữ liệu cho cả hai nguồn được đặt thành Private:

Nguồn: blog.crossjoin.co.uk
12/11/2025