Blog JSystems - uwalniamy wiedzę!

Szukaj

Power Query w Microsoft Fabric

Dataflow Gen2 nie zapisuje danych - brak miejsca docelowego danych

W skrócie

  • Przepływ Dataflow Gen2 uruchamia się z powodzeniem, a w Lakehouse nie ma tabeli z wynikiem, bo zapytanie nie ma ustawionego miejsca docelowego danych.
  • W przepływie utworzonym z obszaru roboczego każde zapytanie wynikowe trzeba jawnie połączyć z miejscem docelowym. Zapytanie bez niego trafia najwyżej do wewnętrznego magazynu przemieszczania, dostępnego tylko dla przepływów.
  • W sekcji Miejsce docelowe danych kliknij plus, wybierz Lakehouse, wskaż schemat dbo i nazwę nowej tabeli, a potem uruchom przepływ poleceniem Zapisz i uruchom i sprawdź tabelę w Lakehouse.

Miejsce docelowe danych w Dataflow Gen2 decyduje, czy wynik zapytania trafi do Lakehouse, magazynu Warehouse albo innej bazy. Bez niego przepływ może się wykonać bez błędów i niczego nie zapisać tam, skąd korzystają raporty. Pokazujemy, jak rozpoznać zapytanie bez miejsca docelowego i jak je ustawić tak, jak w lekcji o Fabric.

Jak to wygląda w praktyce

  • W Lakehouse nie ma tabeli z wynikiem przepływu albo tabela ma stare dane, choć przepływ uruchomił się bez błędów.
  • W panelu ustawień zapytania, w sekcji Miejsce docelowe danych, zapytanie ma wpis „Brak miejsca docelowego danych”.
  • Na pasku stanu edytora widać odnośnik Dodaj domyślne miejsce docelowe danych, czyli przepływ nie ma też domyślnego miejsca docelowego, które mogłoby przejąć to zapytanie.
  • W szczegółach uruchomienia brakuje działania z końcówką _WriteToDataDestination dla tego zapytania. Zapytanie zapisujące wynik ma takie działanie, na przykład sprzedaz_WriteToDataDestination.

Dlaczego tak się dzieje

W Excelu wynik zapytania trafia do arkusza, a w Power BI do modelu. W Dataflow Gen2 wynik ma trafić do miejsca docelowego, na przykład tabeli w Lakehouse, i o tym miejscu decydujesz osobno dla każdego zapytania. Według dokumentacji Microsoft miejsce docelowe może mieć każde zapytanie tabelaryczne, ale nie funkcja ani lista, a w przepływie utworzonym z obszaru roboczego trzeba je przypisać jawnie. Wyjątkiem jest przepływ utworzony z poziomu Lakehouse, Warehouse albo bazy KQL: tam nowe zapytania od razu dostają ten element jako domyślne miejsce docelowe.

Zapytanie bez miejsca docelowego nie jest błędem. Służy jako zapytanie pomocnicze, jak słownik tProdukty scalany ze sprzedażą w lekcji o Fabric. Jeśli ma włączone przemieszczanie (ang. staging), jego wynik trafia do wewnętrznego magazynu, który według dokumentacji jest dostępny tylko dla przepływów danych. W Lakehouse, z którego korzystają raporty i zapytania SQL, nic się nie pojawi.

Jak to rozwiązać krok po kroku

  1. Zaznacz zapytanie wynikowe. Otwórz przepływ i w panelu zapytań kliknij zapytanie, którego wynik ma trafić do Lakehouse, na przykład sprzedaz. Zapytania pomocnicze, takie jak słowniki, zostaw bez miejsca docelowego.
  2. Dodaj miejsce docelowe. W prawym dolnym rogu, w sekcji Miejsce docelowe danych panelu ustawień zapytania, kliknij plus i wybierz Lakehouse. Pozostałe miejsca docelowe, na przykład bazy Azure SQL, PostgreSQL czy Snowflake, znajdziesz pod pozycją Więcej.
  3. Wskaż Lakehouse, schemat i tabelę. Po wybraniu połączenia rozwiń obszar roboczy i Lakehouse, na przykład NordvellaLH, i zaznacz schemat dbo. Na górze zostaw Nowa tabela i wpisz nazwę, na przykład sprzedaz. Samo zaznaczenie Lakehouse nie wystarczy: przycisk Następne zostaje nieaktywny, dopóki nie wskażesz schematu.
  4. Zatwierdź ustawienia zapisu. Na ekranie ustawień zostaw włączone Użyj ustawień automatycznych, jeśli przepływ za każdym razem czyta wszystkie pliki: metoda Zastąp nadpisze tabelę przy każdym uruchomieniu. Komunikat o wyłączeniu przemieszczania dla zapytania źródłowego jest informacją, a nie błędem. Zapisz ustawienia przyciskiem na dole okna.
  5. Zapisz i uruchom przepływ. Rozwiń pierwszy przycisk na wstążce i wybierz Zapisz i uruchom. Samo Zapisz zapisuje zmiany bez uruchomienia, więc tabela w Lakehouse jeszcze nie powstanie.
  6. Kilka zapytań do jednego Lakehouse: domyślne miejsce docelowe. Domyślne miejsce docelowe ustawisz przyciskiem na wstążce albo odnośnikiem Dodaj domyślne miejsce docelowe danych na pasku stanu. Edytor zapyta, które zapytania z nim powiązać: wszystkie albo tylko zaznaczone. Dla Lakehouse domyślne miejsce docelowe używa metody Zastąp i schematu dynamicznego, a jego ustawień nie da się zmienić.
Menu miejsca docelowego danych w Dataflow Gen2: Lakehouse, Warehouse, Baza danych SQL, SharePoint i Więcej
Menu miejsca docelowego. Pozycja Domyślne miejsce docelowe jest wyszarzona, bo przepływ nie ma jeszcze ustawionego domyślnego celu.

Jak sprawdzić, że zadziałało

Edytor nie zamyka się po Zapisz i uruchom, a przepływ wykonuje się w tle. Otwórz okno Ostatnie uruchomienia (ikona zegara na wstążce): stan ma być Powodzenie. W szczegółach uruchomienia zapytanie z miejscem docelowym widać jako działanie z końcówką _WriteToDataDestination. Potem otwórz Lakehouse i sprawdź tabelę. Podgląd pokazuje najwyżej 1000 wierszy, więc pełną liczbę policz w punkcie końcowym analizy SQL: w lekcji o Fabric zapytanie SELECT COUNT(*) FROM sprzedaz zwróciło 9256 wierszy.

Żeby problem nie wracał, po dodaniu każdego zapytania wynikowego sprawdzaj sekcję Miejsce docelowe danych. Po najechaniu kursorem na ustawioną pozycję Lakehouse edytor pokazuje obszar roboczy, Lakehouse, schemat, tabelę, metodę aktualizacji i sposób mapowania kolumn.

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

Baner szkolenia Kompleksowe szkolenie Power BI - Desktop, DAX i Online + Copilot w JSystems

Szkolenie Power BI - Desktop, DAX i Online --> Pięć dni od pierwszego raportu do publikacji w usłudze Power BI: Power Query, model danych z wielu tabel, DAX, wizualizacje i Copilot. To szkolenie ma terminy gwarantowane.

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 każde zapytanie w Dataflow Gen2 musi mieć miejsce docelowe?
Nie. Miejsce docelowe ustawiasz tylko dla zapytań, których wynik ma trafić do Lakehouse albo innej bazy. Zapytania pomocnicze, na przykład słowniki scalane z główną tabelą, mogą zostać bez niego, a funkcje i listy w ogóle nie mogą go mieć.
Gdzie trafia wynik zapytania bez miejsca docelowego?
Jeśli zapytanie ma włączone przemieszczanie, wynik trafia do wewnętrznego magazynu, który według dokumentacji Microsoft jest dostępny tylko dla przepływów danych. W Lakehouse ani w jego punkcie końcowym analizy SQL taka tabela się nie pojawi.
Dlaczego przycisk Następne jest nieaktywny przy wyborze Lakehouse?
Samo zaznaczenie Lakehouse nie wystarczy. Gdy Lakehouse ma włączone schematy, trzeba go rozwinąć w drzewie i zaznaczyć schemat, zwykle dbo. Dopiero wtedy przycisk Następne staje się aktywny.
Czym różni się metoda Zastąp od Dołącz?
Zastąp przy każdym uruchomieniu usuwa dane z tabeli i wpisuje wynik przepływu od nowa. Dołącz dopisuje wynik do istniejących wierszy, więc przy przepływie czytającym za każdym razem wszystkie pliki z folderu dublowałby wiersze z poprzednich miesięcy.

Komentarze (0)

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

Brak komentarzy...