Udostępnij przez


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. Ta operacja może faktycznie 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 przenoszenie ich do źródeł danych (które mogą mieć własne unikatowe zachowanie porządkowania), nie jest gwarantowane zachowanie kolejności sortowania w przypadku agregacji (takich jak Table.Group), scalania (np. Table.NestedJoin) lub usuwania duplikatów (takich jak Table.Distinct).

Istnieje wiele sposobów, aby obejść ten temat. Oto kilka sugestii:

  • Wykonaj sortowanie po zastosowaniu operacji podrzędnej. Na przykład podczas grupowania wierszy, posortuj zagnieżdżoną 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, można uporządkować według kolumn ze zduplikowanymi wartościami, uszereguj na podstawie kolumny rozstrzygającej remis (na przykład modified_date), a następnie filtruj, aby zachować tylko wiersze o randze 1.

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 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 Power Query określa typ danych w kolumnie jako data. To wnioskowanie powoduje, że wartości tekstowe inne niż daty są uznawane za 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 Edytorze zapytań o błędy (z wykrywania typu lub dowolnej liczby innych przyczyn) poza pierwszych N wierszy.

Połączenia zostały siłą zamknięte 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 to oni zamykają połączenie, możliwe, że coś na trasie zamyka (na przykład serwer proxy, routery pośrednie, bramy itp.).

Niezależnie od tego, czy problem występuje przy dowolnych danych, czy tylko przy większych rozmiarach danych, prawdopodobnie gdzieś na trasie dochodzi do przerwy sieciowej. 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, które serwer, z którym się łączysz, musi obsługiwać, aby nawiązać połączenie z 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 dotyczących konfigurowania zamówienia w pakiecie TLS Cipher Suite, zobacz temat Zarządzanie zabezpieczeniami warstw transportu (TLS).

Odwołanie certyfikatu

Nadchodząca wersja programu Power BI Desktop powoduje niepowodzenie połączeń SSL z programu, gdy w łańcuchu SSL brakuje statusu odwołania jakiegokolwiek certyfikatu. 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 być pominięty, na przykład w przypadku korporacyjnych serwerów proxy, udostępnimy dodatkową opcję ignorowania certyfikatów bez informacji o odwołaniu. Ta opcja umożliwia sytuacje, w których informacje o odwoływaniu są usuwane w niektórych przypadkach, ale nie chcesz całkowicie obniżyć poziomu bezpieczeństwa, aby móc dalej pracować.

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 zapytań podczas odświeżania zapytania.

Błąd: klucz nie był zgodny z żadnymi wierszami w tabeli

Istnieje wiele powodów, dla których narzędzie 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łączenia do domeny dla maszyn bramy przy korzystaniu 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: W usłudze Power BI nie jest obsługiwane odświeżanie OAuth2 między dzierżawami.

Jeśli chcesz nawiązać połączenie ze źródłem danych z usługi 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łudze 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łudze Power BI. Użytkownicy mogą napotkać następujący błąd: serwis tokenów raportowany przez zasób nie jest zaufany.

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 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 ponownie sama 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 operacje polegające na usuwaniu duplikatów, przekształcając je na operacje źródłowe lub usuwając je całkowicie tam, gdzie to możliwe. Sortowanie, na przykład, jest często niepotrzebne.

Usługa Power Query Online nie może nawiązać połączenia przez publiczny punkt końcowy, gdy prywatny punkt końcowy jest skonfigurowany dla magazynu

Gdy prywatny punkt końcowy do konta magazynowego jest skonfigurowany, usługa Power Query Online zawsze rozpoznaje adres prywatnego łącza i nie może nawiązać połączenia za pośrednictwem publicznego internetu — nawet jeśli dostęp publiczny jest ustawiony na "Dozwolony" w konfiguracji prywatnego punktu końcowego.

Takie zachowanie występuje, ponieważ prywatny punkt końcowy ma pierwszeństwo przed łącznością publiczną. W rezultacie próba nawiązania połączenia bez bramy zakończy się niepowodzeniem.

Dataflows

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 trakcie, gdy trwa już pobieranie danych i aktualizowanie tabel w Twoim obszarze roboczym lub środowisku, nie jest obecnie obsługiwane.

Planujemy dodać obsługę anulowania odświeżania przepływu danych w przyszłości.