Blog JSystems - uwalniamy wiedzę!

Szukaj

Power Query w Excelu, Power BI i Fabric

Formula.Firewall: źródła danych z poziomami prywatności, które nie mogą być używane razem

W skrócie

  • Gdy poziomy prywatności nie mogą być używane razem, Power Query przerywa zapytanie błędem Formula.Firewall. Dzieje się tak, gdy jedno zapytanie samo czyta dwa źródła o niezgodnych poziomach, na przykład plik firmowy i publiczne API.
  • W jednej partycji zapory zgodne są tylko dwa źródła Publiczne albo dwa Organizacyjne. Każde inne połączenie, w tym dowolne źródło Prywatne, grozi przesłaniem danych między źródłami, więc zapora go nie dopuszcza.
  • Ustaw poziomy zgodnie z charakterem danych, a źródła o różnych poziomach czytaj w osobnych zapytaniach i łącz przez odwołanie. Zapora buforuje wtedy dane i różnica poziomów przestaje przeszkadzać.

Komunikat, że poziomy prywatności nie mogą być używane razem, pojawia się na przykład wtedy, gdy w jednym zapytaniu dokładasz drugie źródło: kursy walut z API do sprzedaży z pliku albo tabelę z arkusza do danych z bazy. Wyjaśniamy, które poziomy są ze sobą zgodne, jak sprawdzić i zmienić poziom źródła oraz jak przebudować zapytania, żeby nie oznaczać danych niezgodnie z ich charakterem.

Jak to wygląda w praktyce

Zapytanie zatrzymuje się na kroku, a żółty pasek pokazuje komunikat. W polskim Excelu nazwa zapytania i kroku trafia na początek komunikatu tak samo jak w błędzie o przywoływaniu innych zapytań, który sprawdziliśmy na skoroszycie:

Formula.Firewall: Element Zapytanie „Sprzedaz” (krok „Scalone zapytania”) próbuje uzyskać dostęp do źródeł danych z poziomami prywatności, które nie mogą być używane razem. Utwórz ponownie tę kombinację danych.

W miejscu „Sprzedaz” i „Scalone zapytania” zobaczysz nazwy swojego zapytania i kroku. Słowo „Element” przed nazwą zapytania to dosłowne tłumaczenie z polskiej wersji. Angielski oryginał z dokumentacji Microsoft: Formula.Firewall: Query 'Query1' (step 'Source') is accessing data sources that have privacy levels which cannot be used together. Please rebuild this data combination. Jeśli któreś ze źródeł nie ma jeszcze ustawionego poziomu, Power Query zamiast tego poprosi o informacje dotyczące prywatności danych.

Dlaczego tak się dzieje

Każde źródło ma poziom prywatności: Brak, Publiczne, Organizacyjne albo Prywatne. Według dokumentacji Microsoft dane ze źródła Prywatnego nie mogą trafiać do żadnego innego źródła, nawet innego Prywatnego. Dane Organizacyjne mogą trafiać do źródeł Prywatnych i Organizacyjnych, ale nie do Publicznych, a dane Publiczne wszędzie. Podczas składania zapytań (ang. query folding) Power Query potrafi przekazać dane jednego źródła do drugiego, na przykład wstawić wartości z pliku do zapytania wysyłanego do bazy, więc zapora sprawdza poziomy, zanim do tego dopuści.

Zapora dzieli zapytania na partycje. Kroki jednego zapytania, które nie korzystają z innych zapytań, mogą trafić do jednej partycji, a w niej dwa źródła muszą być zgodne w obie strony. Microsoft wymienia tylko dwie takie pary: oba źródła Publiczne albo oba Organizacyjne. Plik firmowy (Organizacyjne) i API NBP (Publiczne) czytane w jednym zapytaniu tego warunku nie spełniają. Wymóg dotyczy jednak tylko wnętrza partycji: gdy jedno zapytanie korzysta z drugiego przez odwołanie, zapora buforuje przekazywane dane i poziomy nie muszą być zgodne.

Jak to rozwiązać krok po kroku

  1. Sprawdź, jakie źródła czyta zapytanie z komunikatu. Otwórz Edytor zaawansowany i znajdź funkcje dostępu do danych, na przykład File.Contents, Sql.Database, Web.Contents albo Excel.CurrentWorkbook. Jeśli w jednym zapytaniu są co najmniej dwie, to te źródła spotykają się w partycji.
  2. Otwórz poziomy prywatności: w Excelu na karcie Dane rozwiń Pobierz dane i wybierz Ustawienia źródła danych, w Power BI w edytorze Power Query kliknij Ustawienia źródła danych na karcie Narzędzia główne. Zaznacz źródło, kliknij Edytuj uprawnienia i odczytaj pole Poziom prywatności.
  3. Ustaw poziomy zgodnie z charakterem danych, a nie pod błąd: pliki i bazy firmy to Organizacyjne, dane dostępne publicznie, takie jak kursy NBP, to Publiczne, dane poufne, na przykład oceny pracowników, to Prywatne. Jeśli oba źródła to dane firmowe, ustawienie obu na Organizacyjne usuwa błąd.
  4. Gdy źródła mają różne poziomy z prawdziwego powodu, rozdziel je: każde źródło czytaj w osobnym zapytaniu i łącz je przez odwołanie. W kursie kursy NBP pobiera osobne zapytanie Kursy_NBP. Scalenie ze sprzedażą zrób przyciskiem Scal zapytania albo Scal zapytania jako nowe, wybierając Kursy_NBP jako drugą tabelę. Zapora zbuforuje wtedy dane kursów i nie wymaga zgodnych poziomów.
  5. Źródło Prywatne trzymaj zawsze w osobnym zapytaniu, bo w jednej partycji nie łączy się z niczym, nawet z innym źródłem Prywatnym.
  6. Nie zmieniaj poziomu publicznego serwisu na Organizacyjne tylko po to, żeby zniknął błąd. Dwa źródła Organizacyjne mogą wymieniać dane w obie strony, więc zapora przestanie chronić dane firmowe przed wysłaniem do serwisu, na przykład w adresie zapytania.
  7. Ostateczność to opcja Ignorowanie poziomów prywatności i potencjalne poprawianie wydajności: w Excelu w oknie Opcje zapytania (Bieżący skoroszyt, Prywatność), w Power BI w menu Plik, Opcje i ustawienia, Opcje (Bieżący plik, Prywatność). Wyłącza ona ochronę w całym pliku, a w usłudze Power BI nie działa dla modeli semantycznych.
Rozwinięta lista poziomów prywatności w Power BI Desktop: Brak, Publiczne, Organizacyjne, Prywatne dla źródła API NBP
Lista poziomów prywatności w Power BI Desktop dla źródła api.nbp.pl, którego poświadczenia to Anonimowy: Brak, Publiczne, Organizacyjne i Prywatne.

Jak sprawdzić, że zadziałało

Po zmianie poziomów albo przebudowie zapytań kliknij Odśwież podgląd i zaznacz krok z komunikatu: podgląd ma pokazać dane. Otwórz ponownie Ustawienia źródła danych i sprawdź, czy każde źródło ma poziom zgodny z charakterem danych, a nie dobrany pod błąd. W Power BI po publikacji obejrzyj pierwsze odświeżenie w usłudze, bo tam ustawienie ignorowania poziomów nie działa dla modeli semantycznych.

Żeby błąd nie wracał, ustawiaj poziom już przy pierwszym połączeniu ze źródłem i trzymaj zasadę: jedno źródło na jedno zapytanie bazowe, a łączenie przez odwołania w osobnych krokach albo zapytaniach.

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

Które poziomy prywatności można łączyć w jednym zapytaniu?
W jednej partycji zapory zgodne są tylko dwa źródła Publiczne albo dwa Organizacyjne. Każde inne połączenie, w tym Publiczne z Organizacyjnym i każde źródło Prywatne, kończy się tym błędem. Źródła o niezgodnych poziomach czytaj w osobnych zapytaniach i łącz przez odwołanie.
Czy mogę ustawić wszystkie źródła jako Organizacyjne?
Tylko jeśli wszystkie są faktycznie firmowe. Poziom Organizacyjne dla publicznego serwisu oznacza zgodę na przesyłanie do niego danych firmowych, na przykład w adresie zapytania. Dla danych publicznych wybierz Publiczne, a różnicę poziomów rozwiąż osobnymi zapytaniami.
Co oznacza poziom Brak?
Brak oznacza, że źródło nie ma ustawień prywatności. Microsoft zaleca go tylko w kontrolowanym środowisku deweloperskim, do testów i pomiarów wydajności, i przypomina, że przepisy o ochronie danych trzeba wtedy zapewnić w inny sposób.
Dlaczego po rozdzieleniu na osobne zapytania błąd znika?
Wymóg zgodności dotyczy tylko wnętrza jednej partycji. Gdy zapytanie korzysta z innego przez odwołanie, zapora buforuje przekazywane dane, czyli wczytuje je do pamięci i przestaje składać je do źródła. Dzięki temu dane jednego źródła nie trafią do drugiego.

Komentarze (0)

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

Brak komentarzy...