Thông báo lỗi
Bạn đã xây dựng các truy vấn và sẵn sàng kết hợp dữ liệu, nhưng Excel lại ngăn bạn bằng một thông báo khó hiểu. Nó thường trông như thế này:
Formula.Firewall: Query 'SalesData' (step 'Source') references other queries or steps, so it may not directly access a data source. Please rebuild this data combination.
Đây là một trở ngại khó chịu, nhưng nó tồn tại vì một lý do chính đáng. Hãy cùng tìm hiểu lý do tại sao nó xảy ra và cách để khắc phục.
Tại sao lỗi này xảy ra
Power Query sử dụng một "Data Privacy Firewall" (Tường lửa Bảo mật Dữ liệu) để bảo vệ thông tin của bạn. Hãy coi nó như một nhân viên bảo vệ. Nhiệm vụ của nó là ngăn chặn dữ liệu từ một nguồn riêng tư—như tệp CSV cục bộ trên máy tính của bạn—vô tình bị rò rỉ sang một nguồn công khai, chẳng hạn như Web API hoặc SQL Server.
Lỗi này xảy ra khi một truy vấn phụ thuộc vào một truy vấn khác để xác định nguồn dữ liệu của nó. Ví dụ: nếu bạn sử dụng một giá trị từ Bảng A để lọc Bảng B, Power Query có thể chặn việc "mashup" (kết hợp) vì nó không thể đảm bảo rằng dữ liệu của Bảng A sẽ không bị gửi qua mạng trong quá trình này. Điều này thường gặp khi kết hợp một bảng cục bộ nhỏ với một cơ sở dữ liệu đám mây khổng lồ chứa hơn 100.000 hàng.
Cách khắc phục 1: Điều chỉnh cài đặt Mức độ bảo mật (Cách nhanh nhất)
Nếu bạn tin tưởng các nguồn dữ liệu của mình và không lo lắng về việc dữ liệu bị rò rỉ giữa chúng, bạn chỉ cần yêu cầu Excel bỏ qua vấn đề này. Đây là cách khắc phục phổ biến nhất cho các dự án nội bộ.
- Trong Excel, hãy chuyển đến tab Data và chọn Get Data > Query Options.
- Nhìn vào thanh bên trái. Trong mục Current Workbook, nhấp vào Privacy.
- Chọn Ignore the Privacy Levels and potentially improve performance.
- Nhấn OK và Refresh truy vấn của bạn.
Lưu ý rằng cài đặt này chỉ áp dụng cho tệp hiện tại (workbook). Nếu bạn gửi tệp này cho đồng nghiệp, họ có thể sẽ gặp lỗi tương tự cho đến khi họ thay đổi cài đặt của riêng mình.
Cách khắc phục 2: Đồng bộ hóa Mức độ bảo mật
Nếu bạn muốn giữ tường lửa hoạt động, hãy đảm bảo tất cả các nguồn dữ liệu của bạn có cùng một chỉ định mức độ bảo mật.
- Đi tới Data > Get Data > Data Source Settings.
- Chọn một nguồn dữ liệu và nhấp vào Edit Permissions.
- Đặt Privacy Level thành "Organizational" cho tất cả mọi thứ.
- Lặp lại điều này cho mọi nguồn trong truy vấn và làm mới.
Cách khắc phục 3: Cấu trúc lại mã M (Cách tiếp cận chuyên nghiệp)
Các chính sách của công ty đôi khi cấm vô hiệu hóa các cài đặt bảo mật. Trong những trường hợp này, bạn phải thay đổi cách xây dựng các truy vấn của mình. Tường lửa thường "không thích" khi một bước duy nhất cố gắng lấy dữ liệu bên ngoài bằng một biến mà nó vừa tính toán từ một nguồn khác.
Mã nguồn gây lỗi
let
// Lấy một API key từ một bảng Excel cục bộ
SourceKey = Excel.CurrentWorkbook(){[Name="Config"]}[Content]{0}[Key],
// Cố gắng sử dụng khóa đó để lấy dữ liệu web trong cùng một truy vấn
// Điều này kích hoạt lỗi Firewall!
Data = Json.Document(Web.Contents("https://api.example.com/v1/" & SourceKey))
in
Data
Chiến lược sửa lỗi
Cách tốt nhất để khắc phục điều này là sử dụng Staging Queries (Truy vấn trung gian). Tạo một truy vấn để lấy API key hoặc tiêu chí lọc của bạn. Sau đó, tạo một truy vấn thứ hai độc lập để lấy dữ liệu thô. Cuối cùng, tạo một truy vấn thứ ba để kết hợp cả hai. Việc tách biệt này thông báo cho Power Query rằng quá trình lấy dữ liệu độc lập với quá trình tính toán, giúp vượt qua kiểm tra tường lửa.
Ngoài ra, bạn có thể sử dụng Table.Buffer(). Bao bọc một bước trong Table.Buffer buộc Power Query phải tải hoàn toàn dữ liệu đó vào bộ nhớ trước khi chuyển sang bước tiếp theo, điều này thường làm đứt liên kết khiến tường lửa lo ngại.
Các bước xác minh
Bạn sẽ biết mình đã thành công khi:
- Bản xem trước trong Power Query Editor tải mà không có thanh báo lỗi màu đỏ.
- Nhấp vào Refresh Preview hiển thị ngay lập tức tất cả 50 cột dữ liệu của bạn.
- Close & Load điền thành công kết quả đã kết hợp vào bảng tính Excel của bạn.
Mẹo phòng ngừa
- Chuẩn bị dữ liệu (Stage your data): Luôn đưa dữ liệu thô vào các truy vấn riêng biệt trước khi thực hiện kết hợp hoặc nối.
- Tránh các tiêu đề động: Cố gắng không xây dựng URL hoặc chuỗi kết nối SQL của bạn bằng logic từ một bảng khác trong cùng một truy vấn.
- Xác thực đầu vào của bạn: Nếu bạn đang kết hợp dữ liệu cho các tác vụ mạng, chẳng hạn như ánh xạ dải IP, hãy kiểm tra lại logic của bạn trước. Tôi sử dụng Subnet Calculator trên ToolCraft để xác minh các khối CIDR trước khi nhập chúng vào cấu hình Excel của mình. Đây là một công cụ trình duyệt nhanh, không tải dữ liệu của bạn lên, giúp "Tường lửa Bảo mật Dữ liệu" trong đầu bạn cũng cảm thấy yên tâm.

