Blog JSystems - uwalniamy wiedzę!

Szukaj

Power Query w Excelu, Power BI i Fabric

Formula.Firewall: zapytanie przywołuje inne zapytania lub kroki - jak przebudować kombinację danych

W skrócie

  • Błąd Formula.Firewall: przywołuje inne zapytania lub kroki oznacza, że jeden krok jednocześnie czyta źródło danych i korzysta z wyniku innego zapytania albo kroku, na przykład ze ścieżki zapisanej w tabeli na arkuszu.
  • Zapora prywatności dzieli zapytania na partycje, czyli grupy kroków. Partycja może czytać źródła albo korzystać z innych partycji, ale nie jedno i drugie, bo wtedy zapora traci kontrolę nad tym, co trafia do źródła.
  • Wartość sterującą źródłem zamień na parametr, odczyt wartości i źródła przenieś do jednego zapytania albo rozdziel pobieranie danych i ich łączenie. Ignorowanie poziomów prywatności zostaw na ostateczność.

Błąd Formula.Firewall: przywołuje inne zapytania lub kroki zatrzymuje zapytania, które składają dane z kilku miejsc: ścieżkę pliku z komórki arkusza, adres API z innej tabeli, listę wartości z osobnego zapytania. Pokazujemy, jak zapora prywatności danych (ang. Data Privacy Firewall) dzieli zapytania, dlaczego odrzuca taki krok i jak przebudować kombinację danych bez wyłączania ochrony.

Jak to wygląda w praktyce

Zapytanie zatrzymuje się na kroku, który czyta źródło, a na żółtym pasku pojawia się komunikat. W polskim Excelu brzmi on tak (sprawdziliśmy na skoroszycie, w którym jedno zapytanie czyta plik spod ścieżki z drugiego):

Formula.Firewall: Element Zapytanie „Sprzedaz” (krok „Źródło”) przywołuje inne zapytania lub kroki, dlatego nie może uzyskać bezpośredniego dostępu do źródła danych. Utwórz ponownie tę kombinację danych.

W miejscu „Sprzedaz” i „Źródło” zobaczysz nazwy swojego zapytania i kroku. Słowo „Element” przed nazwą zapytania to dosłowne tłumaczenie z polskiej wersji, nie literówka. Angielski oryginał podaje dokumentacja Microsoft: Formula.Firewall: Query 'Query1' (step 'Source') references other queries or steps, so it may not directly access a data source. Please rebuild this data combination. Pliki językowe zawierają też wariant z brzmieniem zawiera odwołania do innych zapytań lub kroków i nie może uzyskać bezpośredniego dostępu do źródła danych. Nazwa zapytania i kroku z komunikatu to punkt startowy dalszych poszukiwań.

Dlaczego tak się dzieje

Zapora prywatności danych pilnuje, żeby dane z jednego źródła nie trafiły niezamierzenie do innego, na przykład wartości z firmowego pliku do adresu zapytania wysyłanego do publicznego serwisu. Dzieli zapytania na partycje, czyli grupy kroków (najmniejsza partycja to jeden krok), i stosuje regułę opisaną przez Microsoft: partycja może czytać zgodne źródła danych albo korzystać z innych partycji, ale nie jedno i drugie. Wszystko, co wpływa do partycji z innych partycji, przechodzi przez zaporę. Gdy ta sama partycja czyta też źródło, zapora nie może wykluczyć, że przekazana wartość trafi do tego źródła, więc przerywa obliczenie.

Przykład z Excela: folder ze sprzedażą zapisany w tabeli na arkuszu, odczytany zapytaniem Ustawienia i użyty w kroku źródła:

let
    ŚcieżkaFolderu = Ustawienia{0}[Folder],
    Źródło = Folder.Files(ŚcieżkaFolderu)
in
    Źródło

Krok Źródło czyta folder i korzysta z innego zapytania, a zapytanie Ustawienia czyta arkusz przez Excel.CurrentWorkbook(), co też jest dostępem do źródła (w oknie Ustawienia źródła danych widnieje ono jako Bieżący skoroszyt). Ten sam układ powstaje, gdy adres API składasz z kodów zapisanych w tabeli wczytanej z pliku albo gdy funkcja wołająca serwis działa na każdym wierszu takiej tabeli.

Jak to rozwiązać krok po kroku

  1. Otwórz krok wskazany w komunikacie na pasku formuły albo w Edytorze zaawansowanym i wypisz, z czego korzysta: nazwy innych zapytań i kroków oraz funkcje czytające źródła, takie jak File.Contents, Folder.Files, Web.Contents, Sql.Database czy Excel.CurrentWorkbook. Jeśli w jednym kroku są obie grupy, to on łamie regułę.
  2. Wartość, która tylko steruje źródłem (folder, adres serwera, data graniczna), zamień na parametr: na karcie Strona główna rozwiń Zarządzaj parametrami, wybierz Nowy parametr, wpisz wartość w polu Wartość bieżąca i użyj parametru w kroku źródła. Zapora dołącza parametr do kroku, który z niego korzysta, dlatego Folder.Files(FolderSprzedazy) działa. Tak zbudowaliśmy parametr FolderSprzedazy w kursie.
  3. Gdy wartość musi pochodzić z danych, przenieś jej odczyt do tego samego zapytania, w którym czytasz źródło, przed krok źródła. Oba odczyty trafią do jednej partycji, a zapora zażąda tylko zgodnych poziomów prywatności. Zgodne są wyłącznie dwa źródła Publiczne albo dwa Organizacyjne, więc dane firmowe oznacz w obu źródłach jako Organizacyjne.
  4. Przy scalaniu i dołączaniu tabel z różnych źródeł rozdziel role: każde źródło wczytuj osobnym zapytaniem, które tylko pobiera i czyści dane, a łączenie zrób w zapytaniu, które tylko odwołuje się do nich, na przykład utworzonym przez Scal zapytania jako nowe. Takie zapytanie nie czyta źródła, więc spełnia regułę.
  5. Zamiast wołać serwis osobno dla każdego wiersza tabeli z innego zapytania, pobierz jego dane raz, w osobnym zapytaniu, i połącz je z tabelą. W kursie kursy walut NBP pobiera zapytanie Kursy_NBP, a funkcja fxKursNBP tylko filtruje gotową tabelę i niczego nie wysyła do API.
  6. W Power BI Desktop od wersji z lipca 2026 r. krok, który korzysta z innego zapytania i czyta źródło, jest dozwolony, jeśli poziomy prywatności źródeł są zgodne. Microsoft włączył to domyślnie, tak samo działa usługa Power BI i Power Query Online. Jeśli w Power BI Desktop nadal widzisz ten błąd, zaktualizuj program i sprawdź poziomy prywatności źródeł.
  7. Ostateczność: na karcie Dane rozwiń Pobierz dane, wybierz Opcje zapytania, w grupie Bieżący skoroszyt kliknij Prywatność i zaznacz Ignorowanie poziomów prywatności i potencjalne poprawianie wydajności. Zapora przestaje wtedy kontrolować przepływ danych między źródłami, co według Microsoft może ujawnić poufne dane nieupoważnionej osobie. W usłudze Power BI modele semantyczne tego ustawienia nie respektują. Włączaj je tylko wtedy, gdy wszystkie źródła są Twoje.
Okno Opcje w Power BI Desktop: Bieżący plik, Prywatność i dwie opcje łączenia danych, zgodnie z poziomami prywatności albo z ich ignorowaniem
Opcje pliku w Power BI Desktop: pozycja Prywatność w grupie Bieżący plik (1) i dwie opcje łączenia danych (2), zgodnie z poziomem prywatności każdego źródła albo z ignorowaniem poziomów prywatności.

Jak sprawdzić, że zadziałało

Kliknij Odśwież podgląd i zaznacz krok z komunikatu: podgląd ma pokazać dane. Potem odśwież skoroszyt na karcie Dane przyciskiem Odśwież wszystko, bo zapora działa także przy odświeżaniu poza edytorem. Na koniec otwórz na karcie Widok okno Zależności zapytań i sprawdź, czy zapytania czytające źródła nie korzystają z innych zapytań poza parametrami.

Na przyszłość trzymaj podział: zapytania źródłowe tylko czytają i czyszczą dane, łączenie odbywa się w osobnych zapytaniach, a wartości sterujące źródłami, takie jak foldery, serwery i daty graniczne, są parametrami. Poziomy prywatności ustaw dla wszystkich źródeł, zanim zaczniesz je łączyć.

Wróć do listy: 88 najczęstszych pytań i problemów związanych z Power Query

Baner szkolenia Microsoft Excel - Power Query w JSystems z edytorem Power Query na ekranie laptopa

Szkolenie Microsoft Excel - Power Query --> Dwa dni warsztatów z Excela: pobieranie danych z plików, folderów, SharePointa i baz SQL, ich czyszczenie i łączenie w Power Query, praca w języku M, a na koniec model danych i oparta na nim tabela przestawna. Prowadzi Sebastian Stasiak.

To szkolenie może być dofinansowane dla Ciebie z KFS lub BUR.

★★★★★Średnia ocena naszych szkoleń w Google: 5/5

Najczęściej zadawane pytania

Czy zmiana poziomów prywatności usunie błąd przywołuje inne zapytania lub kroki?
Sama zmiana poziomów nie usuwa przyczyny, jeśli krok jednocześnie czyta źródło i korzysta z innego zapytania. Zgodne poziomy wystarczą tam, gdzie obowiązuje złagodzona reguła: w Power BI Desktop od wersji z lipca 2026 r., w usłudze Power BI i w Power Query Online. W pozostałych przypadkach przebuduj zapytania.
Dlaczego parametr działa, a zapytanie z wartością z arkusza nie?
Parametr nie czyta żadnego źródła i nie odwołuje się do innych zapytań, więc zapora dołącza go do kroku, który z niego korzysta. Zapytanie z wartością z arkusza czyta bieżący skoroszyt, czyli źródło danych, i tworzy osobną partycję. Krok, który z niego korzysta i sam czyta plik, łamie regułę.
Czy mogę po prostu włączyć ignorowanie poziomów prywatności?
Możesz, ale to ostateczność. Ustawienie wyłącza kontrolę przepływu danych między źródłami, co według Microsoft może ujawnić poufne dane nieupoważnionej osobie. W usłudze Power BI modele semantyczne go nie respektują. Włączaj je tylko wtedy, gdy wszystkie źródła są Twoje i żadne dane nie wymagają ochrony.
Gdzie w Excelu ustawić poziomy prywatności źródeł?
Na karcie Dane rozwiń Pobierz dane i wybierz Ustawienia źródła danych. Zaznacz źródło, kliknij Edytuj uprawnienia i wybierz poziom: Brak, Publiczne, Organizacyjne albo Prywatne. W jednej partycji mogą się spotkać tylko dwa źródła Publiczne albo dwa Organizacyjne.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...