Typowe problemy
Power Query
Zachowywanie sortowania
Można założyć, że jeśli posortujesz dane, wszystkie operacje podrzędne zachowają kolejność sortowania.
Jeśli na przykład posortujesz tabelę sprzedaży tak, aby największa sprzedaż w każdym sklepie jest wyświetlana jako pierwsza, możesz oczekiwać, że wykonanie operacji "Usuń duplikaty" zwróci tylko najwyższą sprzedaż dla każdego sklepu. I ta operacja może w rzeczywistości wydawać się działać. Jednak to zachowanie nie jest gwarantowane.
Ze względu na sposób, w jaki dodatek Power Query optymalizuje niektóre operacje, w tym pomijanie ich lub odciążanie ich do źródeł danych (które mogą mieć własne unikatowe zachowanie porządkowania), kolejność sortowania nie gwarantuje zachowania za pomocą agregacji (takich jak ), scalania (np. ) lub usuwania duplikatów (takich Table.Distinct
jak Table.Group
Table.NestedJoin
).
Istnieje wiele sposobów, aby obejść ten temat. Oto kilka propozycji:
- Wykonaj sortowanie po zastosowaniu operacji podrzędnej. Na przykład podczas grupowania wierszy posortuj zagnieżdżonych tabelę w każdej grupie przed zastosowaniem dalszych kroków. Oto przykładowy kod języka M, który demonstruje to podejście:
Table.Group(Sales_SalesPerson, {"TerritoryID"}, {{"SortedRows", each Table.Sort(_, {"SalesYTD", Order.Descending})}})
- Buforuj dane (przy użyciu metody
Table.Buffer
) przed zastosowaniem operacji podrzędnej. W niektórych przypadkach ta operacja powoduje, że operacja podrzędna zachowuje buforowaną kolejność sortowania. - Użyj klasyfikacji. Na przykład zamiast używać
Table.Distinct
metody , można uporządkować według kolumn zawierających zduplikowane wartości, klasyfikację na podstawie kolumny podziału tie-breaker (na przykładmodified_date
), a następnie filtrować, aby zachować tylko 1 wiersze rangi.
Wnioskowanie typu danych
Czasami dodatek Power Query może niepoprawnie wykryć typ danych kolumny. Wynika to z faktu, że dodatek Power Query wywnioskuje typy danych przy użyciu tylko pierwszych 200 wierszy danych. Jeśli dane w pierwszych 200 wierszach różnią się w jakiś sposób od danych po wierszu 200, dodatek Power Query może odebrać nieprawidłowy typ. (Należy pamiętać, że niepoprawny typ nie zawsze generuje błędy. Czasami wynikowe wartości są po prostu niepoprawne, co utrudnia wykrywanie problemu).
Załóżmy na przykład, że kolumna zawierająca liczby całkowite w pierwszych 200 wierszach (takich jak wszystkie zera), ale zawiera liczby dziesiętne po wierszu 200. W tym przypadku dodatek Power Query wywnioskuje typ danych kolumny jako Liczba całkowita (Int64.Type). To wnioskowanie powoduje obcięcie części dziesiętnych wszystkich liczb nieliczbowych.
Możesz też wyobrazić sobie kolumnę zawierającą tekstowe wartości dat w pierwszych 200 wierszach i inne rodzaje wartości tekstowych po wierszu 200. W tym przypadku dodatek Power Query wywnioskuje typ danych kolumny jako Data. To wnioskowanie powoduje, że wartości tekstowe inne niż data są traktowane jako błędy konwersji typów.
Ponieważ wykrywanie typów działa w pierwszych 200 wierszach, ale profilowanie danych może działać w całym zestawie danych, możesz rozważyć użycie funkcji profilowania danych, aby uzyskać wczesne wskazanie w Edytor Power Query o błędach (z wykrywania typu lub dowolnej liczbie innych przyczyn) poza pierwszymi N wierszy.
Połączenia wymuszone przez hosta zdalnego
Podczas nawiązywania połączenia z różnymi interfejsami API może zostać wyświetlone następujące ostrzeżenie:
Data source error: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host
Jeśli wystąpi ten błąd, najprawdopodobniej występuje problem z siecią. Ogólnie rzecz biorąc, pierwszymi osobami, z którymi należy się skontaktować, są właściciele źródła danych, z którym próbujesz nawiązać połączenie. Jeśli nie uważają, że są to te, które zamykają połączenie, możliwe jest, że coś po drodze to (na przykład serwer proxy, routery pośrednie/bramy itd.).
Niezależnie od tego, czy jest to odtwarzane tylko przy użyciu danych, czy tylko większych rozmiarów danych, prawdopodobnie w trasie występuje limit czasu sieci. Jeśli jest to tylko większe dane, klienci powinni skonsultować się z właścicielem źródła danych, aby sprawdzić, czy ich interfejsy API obsługują stronicowanie, aby umożliwić im podzielenie żądań na mniejsze fragmenty. Nie można tego zrobić, należy stosować alternatywne sposoby wyodrębniania danych z interfejsu API (zgodnie z najlepszymi rozwiązaniami dotyczącymi źródła danych).
Pakiety szyfrowania RSA z użyciem TLS są przestarzałe
W dniu 30 października 2020 następujące pakiety szyfrowania są przestarzałe na naszych serwerach.
- "TLS_RSA_WITH_AES_256_GCM_SHA384"
- "TLS_RSA_WITH_AES_128_GCM_SHA256"
- "TLS_RSA_WITH_AES_256_CBC_SHA256"
- "TLS_RSA_WITH_AES_128_CBC_SHA256"
Poniższa lista zawiera obsługiwane zestawy szyfrowania:
- "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"
- "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"
- "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
- "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
- "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256"
- "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384"
- "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256"
- "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384"
Pakiety szyfrowania służą do szyfrowania komunikatów w celu zabezpieczenia połączenia sieciowego między klientami a innymi serwerami. Usuwamy powyższą listę zestawów szyfrowania, aby zapewnić zgodność z bieżącymi protokołami zabezpieczeń. Na początku 1 marca 2021 klienci mogą używać tylko standardowych pakietów szyfrowania.
Są to zestawy szyfrowania, z którymi łączysz się serwer, musi obsługiwać nawiązywanie połączeń z usługi Power Query Online lub Power BI.
W programie Power Query Desktop (Power BI, Excel) nie kontrolujemy zestawów szyfrowania. Jeśli próbujesz nawiązać połączenie z platformą Power Platform (na przykład przepływami danych platformy Power Platform) lub usługą Power BI, musisz włączyć jeden z tych zestawów szyfrowania w systemie operacyjnym. Można uaktualnić wersję systemu Windows lub zaktualizować rejestr systemu Windows w zakresie protokołu TLS, aby upewnić się, że serwerowy punkt końcowy obsługuje jeden z tych szyfrów.
Aby sprawdzić, czy serwer jest zgodny z protokołem zabezpieczeń, można przeprowadzić test przy użyciu narzędzia szyfrowania i skanera TLS. Jednym z przykładów może być SSLLABS.
Klienci muszą uaktualnić swoje serwery do 1 marca 2021. Aby uzyskać więcej informacji na temat konfigurowania kolejności mechanizmu szyfrowania TLS, zobacz Manage Transport Layer Security (TLS).
Odwołanie certyfikatu
Nadchodząca wersja programu Power BI Desktop powoduje niepowodzenie połączeń SSL z programu Desktop, gdy w łańcuchu SSL brakuje certyfikatów stanu odwołania certyfikatów. Jest to zmiana z bieżącego stanu, w którym odwołanie powodowało tylko niepowodzenie połączenia w przypadku jawnego odwołania certyfikatu. Inne problemy z certyfikatami mogą obejmować nieprawidłowe podpisy i wygaśnięcie certyfikatu.
Ponieważ istnieją konfiguracje, w których stan odwołania może zostać pozbawiony, na przykład w przypadku serwerów proxy firmy, udostępnimy inną opcję ignorowania certyfikatów, które nie mają informacji o odwołaniu. Ta opcja umożliwia sytuacje, w których informacje o odwołaniu są pozbawione w niektórych przypadkach, ale nie chcesz całkowicie obniżyć zabezpieczeń, aby kontynuować pracę.
Nie jest to zalecane, ale użytkownicy mogą nadal być w stanie całkowicie wyłączyć kontrole odwołania.
Błąd: Ocena została anulowana
Dodatek Power Query zwraca komunikat "Ocena została anulowana", gdy analiza w tle jest wyłączona, a użytkownik przełącza się między zapytaniami lub zamyka Edytor Power Query podczas odświeżania zapytania.
Błąd: klucz nie był zgodny z żadnymi wierszami w tabeli
Istnieje wiele powodów, dla których dodatek Power Query może zwrócić błąd, że klucz nie pasuje do żadnych wierszy w tabeli. Po wystąpieniu tego błędu aparat mashupu nie może odnaleźć nazwy tabeli, która jest wyszukiwana. Przyczyny wystąpienia tego błędu obejmują:
- Nazwa tabeli została zmieniona, na przykład w samym źródle danych.
- Konto używane do uzyskiwania dostępu do tabeli nie ma wystarczających uprawnień do odczytania tabeli.
- Może istnieć wiele poświadczeń dla jednego źródła danych, które nie jest obsługiwane w usłudze Power BI podczas korzystania z osobistych połączeń w chmurze. Ten błąd może wystąpić na przykład wtedy, gdy źródło danych jest źródłem danych w chmurze, a wiele kont jest używanych do uzyskiwania dostępu do źródła danych w tym samym czasie przy użyciu różnych poświadczeń. Jeśli źródło danych jest lokalne, musisz użyć lokalnej bramy danych.
Ograniczenie: wymaganie przyłączone do domeny dla maszyn bramy podczas korzystania z uwierzytelniania systemu Windows
Korzystanie z uwierzytelniania systemu Windows z bramą lokalną wymaga przyłączenia maszyny bramy do domeny. Dotyczy to wszystkich połączeń skonfigurowanych przy użyciu opcji "Uwierzytelnianie systemu Windows za pośrednictwem bramy*. Konta systemu Windows używane do uzyskiwania dostępu do źródła danych mogą wymagać dostępu do odczytu do składników udostępnionych w katalogu systemu Windows i instalacji bramy.
Ograniczenie: odświeżanie OAuth2 między dzierżawami nie jest obsługiwane w usługa Power BI
Jeśli chcesz nawiązać połączenie ze źródłem danych z usługa Power BI przy użyciu protokołu OAuth2, źródło danych musi znajdować się w tej samej dzierżawie co usługa Power BI. Obecnie scenariusze połączeń z wieloma dzierżawami nie są obsługiwane w przypadku protokołu OAuth2.
Ograniczenie: Niestandardowy punkt końcowy uwierzytelniania usług AD FS nie jest obsługiwany w usługa Power BI
Możliwość korzystania z niestandardowego punktu końcowego uwierzytelniania usług Active Directory Federation Services (AD FS) nie jest obsługiwana w usługa Power BI. Użytkownicy mogą napotkać następujący błąd: usługa tokenu zgłoszona przez zasób nie jest zaufana.
Ograniczenie: konta gościa nie są obsługiwane
Używanie kont gości dzierżawy do nawiązywania połączenia z danymi przy użyciu łączników dodatku Power Query nie jest obecnie obsługiwane.
Expression.Error: ocena spowodowała przepełnienie stosu i nie można kontynuować
Błędy przepełnienia stosu mogą być spowodowane usterką w kodzie języka M. Na przykład następująca funkcja generuje przepełnienie stosu, ponieważ wielokrotnie wywołuje się z powrotem do samego siebie bez jakiegokolwiek warunku końcowego. Funkcja, która wywołuje się w ten sposób, jest nazywana funkcją "rekursywną".
let f = (x) => @f(x + 1) in f(0)
Poniżej przedstawiono kilka typowych sposobów rozwiązywania przepełnienia stosu w kodzie języka M.
- Upewnij się, że funkcje rekursywne rzeczywiście zakończą się po osiągnięciu oczekiwanego warunku zakończenia.
- Zastąp rekursję iteracją (na przykład za pomocą funkcji takich jak List.Transform, List.Generate lub List.Accumulate).
Expression.Error: Ocena zabrakła pamięci i nie można kontynuować
Błędy "Za mało pamięci" (lub OOM) mogą być spowodowane zbyt dużą liczbą operacji intensywnie korzystających z pamięci w przypadku bardzo dużych tabel. Na przykład poniższy kod języka M generuje OOM, ponieważ próbuje załadować miliard wierszy do pamięci jednocześnie.
Table.Buffer(Table.FromList({1..1000000000}, Splitter.SplitByNothing()))
Aby rozwiązać problemy z brakiem pamięci, zoptymalizuj operacje intensywnie korzystające z pamięci, takie jak sortowanie, sprzężenia, grupowanie i unikatowe, zapewniając ich składanie do źródła lub usunięcie ich całkowicie tam, gdzie to możliwe. Sortowanie, na przykład, są często niepotrzebne.
Przepływy danych
Anulowanie odświeżania przepływu danych
Czasami rozpoczynasz odświeżanie przepływu danych, ale po jego uruchomieniu zdajesz sobie sprawę, że chcesz zmienić jeszcze jedną rzecz przed odświeżeniem danych. W takim przypadku musisz poczekać na zakończenie odświeżania. Zatrzymanie odświeżania w połowie procesu, ponieważ proces już pracuje nad pobieraniem danych i aktualizowaniem tabel w obszarze roboczym lub środowisku nie jest obecnie obsługiwane.
Planujemy dodać obsługę anulowania odświeżania przepływu danych w przyszłości.