ID tematu: 74518
 |
PQ wykrywa dzielenie przez zero (tylko dzielenia brak) |
Autor |
Wiadomość |
buyakk
Świeżak

Wersja: Mac Office 365
Posty: 2
|
Wysłany: 14-04-2023, 11:36 PQ wykrywa dzielenie przez zero (tylko dzielenia brak)
|
|
|
Cześć,
Dostałem w spadku raport, w którym PQ pobiera dane z bazy, scala kilka tabel i wypluwa wynik. Od dwóch dni zwraca błąd:
Cytat: |
DataSource.Error: Microsoft SQL: Divide by zero error encountered.
Szczegóły:
DataSourceKind=SQL
DataSourcePath=glowny\mssql;CDNXL_PROD80
Message=Divide by zero error encountered.
ErrorCode=-2146232060
Number=8134
Class=16
|
Zacząłem szukać w kodzie, ogólnie nic nie wskazuje na to, by w którymkolwiek miejscu dochodziło do jakiegoś dzielenia (co sugeruje błąd). Doszedłem do tego, że w kroku 7 (rozwinięcie tabeli która została scalona w kroku 6) powoduje występienie tego błędu, ale za chiny ludowe nie rozumiem dlaczego.
Tu kod z edytora zaawansowanego tabeli po scaleniu ("#"Rozwinięty element CDN TraSElem (relizacja handl)" = Table.ExpandTableColumn(#"Scalone zapytania1", "CDN TraSElem (relizacja handl)", {"TrS_Ilosc"}, {"CDN TraSElem (relizacja handl).TrS_Ilosc"})" wydaje się wywoływać problem)
Kod: |
Źródło = Sql.Database("GLOWNY\MSSQL", "CDNXL_PROD80"),
CDN_ZamElemListView = Źródło{[Schema="CDN",Item="ZamElemListView"]}[Data],
#"Scalone zapytania" = Table.NestedJoin(CDN_ZamElemListView, {"ZaELV_GIDNumer"}, #"CDN ZamNag (poprawna data)", {"ZaN_GIDNumer"}, "CDN ZamNag", JoinKind.LeftOuter),
#"Rozwinięty element CDN ZamNag" = Table.ExpandTableColumn(#"Scalone zapytania", "CDN ZamNag", {"Data_kalkulacyjna_POTW", "Data_kalkulacyjna_REAL", "Data_kalkulacyjna_WYST", "Kurs"}, {"CDN ZamNag.Data_kalkulacyjna_POTW", "CDN ZamNag.Data_kalkulacyjna_REAL", "CDN ZamNag.Data_kalkulacyjna_WYST", "CDN ZamNag.Kurs"}),
#"Przefiltrowano wiersze" = Table.SelectRows(#"Rozwinięty element CDN ZamNag", each [CDN ZamNag.Data_kalkulacyjna_WYST] > #date(2020, 12, 31)),
#"Scalone zapytania1" = Table.NestedJoin(#"Przefiltrowano wiersze", {"ZaELV_GIDNumer", "ZaELV_GIDTyp", "ZaELV_GIDLp"}, #"CDN TraSElem (relizacja handl)", {"trs_zlcnumer", "trs_zlctyp", "trs_zlclp"}, "CDN TraSElem (relizacja handl)", JoinKind.LeftOuter),
#"Rozwinięty element CDN TraSElem (relizacja handl)" = Table.ExpandTableColumn(#"Scalone zapytania1", "CDN TraSElem (relizacja handl)", {"TrS_Ilosc"}, {"CDN TraSElem (relizacja handl).TrS_Ilosc"}),
#"Usunięto kolumny" = Table.RemoveColumns(#"Rozwinięty element CDN TraSElem (relizacja handl)",{"ZaELV_GIDTyp", "ZaELV_GIDFirma", "ZaELV_GIDNumer", "ZaELV_GIDLp", "ZaELV_TwrNumer", "ZaELV_TwrTyp", "ZaELV_KntNazwa", "ZaELV_KntMiasto", "ZaELV_KnDAkronim", "ZaELV_KnDNazwa", "ZaELV_KnDMiasto", "ZaELV_DataWystawienia", "ZaELV_DataRealizacji", "ZaELV_DataWaznosci", "ZaELV_RodzajOferty", "ZaELV_MagDNumer", "ZaELV_MagDKod", "ZaELV_DokumentObcy", "ZaELV_Rabat", "ZaELV_KPNId", "ZaELV_ReETyp", "ZaELV_ZstTyp", "ZaELV_JmFormat", "ZaELV_PrecyzjaCeny", "ZaELV_TwrJMCalkowita", "ZaELV_KntNumer", "ZaELV_IloscDoRealizacji", "ZaELV_IloscZrealizowana", "ZaELV_IloscDoRealBezZasobu", "ZaELV_IloscZarezerwowana", "ZaELV_MagNumer", "ZaELV_TwrNazwa"}),
#"Zmieniono nazwy kolumn" = Table.RenameColumns(#"Usunięto kolumny",{{"ZaELV_Dokument", "Order"}, {"ZaELV_TwrKod", "Index"}, {"ZaELV_KntAkronim", "Customer"}, {"ZaELV_Stan", "Status"}, {"ZaELV_MagKod", "Store"}, {"ZaELV_Ilosc", "Order Volume"}, {"ZaELV_CenaKoncowa", "Price"}, {"ZaELV_WartoscPoRabacie", "Order Value"}, {"CDN ZamNag.Data_kalkulacyjna_POTW", "Date of Delivery"}, {"CDN ZamNag.Data_kalkulacyjna_WYST", "Date of PO"}, {"CDN TraSElem (relizacja handl).TrS_Ilosc", "Done Volume"}}),
#"Zmieniono kolejność kolumn" = Table.ReorderColumns(#"Zmieniono nazwy kolumn",{"Order", "Date of Delivery", "Date of PO", "Customer", "Store", "Status", "Order Value", "Index", "Order Volume", "Done Volume", "Price", "ZaELV_Waluta"}),
#"Zamieniono wartość" = Table.ReplaceValue(#"Zmieniono kolejność kolumn",null,0,Replacer.ReplaceValue,{"Done Volume"}),
#"Dodano kolumnę niestandardową" = Table.AddColumn(#"Zamieniono wartość", "Backlog PCS", each [Order Volume]-[Done Volume]),
#"Zmieniono kolejność kolumn1" = Table.ReorderColumns(#"Dodano kolumnę niestandardową",{"Order", "Date of Delivery", "Date of PO", "Customer", "Store", "Status", "Order Value", "Index", "Order Volume", "Done Volume", "Backlog PCS", "Price", "ZaELV_Waluta"}),
#"Dodano kolumnę niestandardową1" = Table.AddColumn(#"Zmieniono kolejność kolumn1", "Done Value", each [Done Volume]*[Price]),
#"Zmieniono kolejność kolumn2" = Table.ReorderColumns(#"Dodano kolumnę niestandardową1",{"Order", "Date of Delivery", "Date of PO", "Customer", "Store", "Status", "Order Value", "Done Value", "Index", "Order Volume", "Done Volume", "Backlog PCS", "Price", "ZaELV_Waluta"}),
#"Dodano kolumnę niestandardową2" = Table.AddColumn(#"Zmieniono kolejność kolumn2", "Backlog PLN", each [Backlog PCS]*[Price]),
#"Zmieniono kolejność kolumn3" = Table.ReorderColumns(#"Dodano kolumnę niestandardową2",{"Order", "Date of Delivery", "Date of PO", "Customer", "Store", "Status", "Order Value", "Done Value", "Backlog PLN", "Index", "Order Volume", "Done Volume", "Backlog PCS", "Price", "ZaELV_Waluta"}),
#"Dodano kolumnę niestandardową3" = Table.AddColumn(#"Zmieniono kolejność kolumn3", "Niestandardowe", each Text.Start([Order],2)),
#"Zmieniono kolejność kolumn4" = Table.ReorderColumns(#"Dodano kolumnę niestandardową3",{"Niestandardowe", "Order", "Date of Delivery", "Date of PO", "Customer", "Store", "Status", "Order Value", "Done Value", "Backlog PLN", "Index", "Order Volume", "Done Volume", "Backlog PCS", "Price", "ZaELV_Waluta"}),
#"Zmieniono nazwy kolumn1" = Table.RenameColumns(#"Zmieniono kolejność kolumn4",{{"Niestandardowe", "Order Type"}, {"CDN ZamNag.Kurs", "Kurs"}}),
#"Zmieniono typ1" = Table.TransformColumnTypes(#"Zmieniono nazwy kolumn1",{{"Kurs", type number}}),
#"Przefiltrowano wiersze1" = Table.SelectRows(#"Zmieniono typ1", each ([Order Type] = "ZS")),
#"Dodano kolumnę niestandardową4" = Table.AddColumn(#"Przefiltrowano wiersze1", "Backlog-NET", each [Backlog PLN]-([Backlog PLN]*0.09)),
#"Zmieniono kolejność kolumn5" = Table.ReorderColumns(#"Dodano kolumnę niestandardową4",{"Order Type", "Order", "Date of Delivery", "Date of PO", "Customer", "Store", "Status", "Order Value", "Done Value", "Backlog PLN", "Backlog-NET", "Index", "Order Volume", "Done Volume", "Backlog PCS", "Price", "ZaELV_Waluta"}),
#"Zmieniono typ" = Table.TransformColumnTypes(#"Zmieniono kolejność kolumn5",{{"Done Value", type number}, {"Backlog PLN", type number}, {"Backlog-NET", type number}, {"Backlog PCS", type number}}),
#"Zmieniono kolejność kolumn6" = Table.ReorderColumns(#"Zmieniono typ",{"Order Type", "Order", "Date of Delivery", "Date of PO", "Customer", "Store", "Status", "Order Value", "Done Value", "Backlog PLN", "Backlog-NET", "Index", "Order Volume", "Done Volume", "Backlog PCS", "Price", "Kurs", "ZaELV_Waluta"}),
#"Zmieniono nazwy kolumn2" = Table.RenameColumns(#"Zmieniono kolejność kolumn6",{{"ZaELV_Waluta", "Currency"}, {"Kurs", "Exchange rate"}}),
#"Dodano kolumnę niestandardową5" = Table.AddColumn(#"Zmieniono nazwy kolumn2", "Niestandardowe", each [Order Value]*[Exchange rate]),
#"Dodano kolumnę niestandardową6" = Table.AddColumn(#"Dodano kolumnę niestandardową5", "Niestandardowe.1", each [Done Value]*[Exchange rate]),
#"Dodano kolumnę niestandardową7" = Table.AddColumn(#"Dodano kolumnę niestandardową6", "Niestandardowe.2", each [Backlog PLN]*[Exchange rate]),
#"Dodano kolumnę niestandardową8" = Table.AddColumn(#"Dodano kolumnę niestandardową7", "Niestandardowe.3", each [#"Backlog-NET"]*[Exchange rate]),
#"Zmieniono nazwy kolumn3" = Table.RenameColumns(#"Dodano kolumnę niestandardową8",{{"Niestandardowe", "OrderValue"}, {"Niestandardowe.1", "DoneValue"}, {"Niestandardowe.2", "BacklogPLN"}, {"Niestandardowe.3", "BacklogNET"}}),
#"Zmieniono typ2" = Table.TransformColumnTypes(#"Zmieniono nazwy kolumn3",{{"OrderValue", Currency.Type}, {"DoneValue", Currency.Type}, {"BacklogPLN", Currency.Type}, {"BacklogNET", Currency.Type}, {"Price", Currency.Type}}),
#"Usunięto kolumny1" = Table.RemoveColumns(#"Zmieniono typ2",{"Order Value", "Done Value", "Backlog PLN", "Backlog-NET"}),
#"Zmieniono kolejność kolumn7" = Table.ReorderColumns(#"Usunięto kolumny1",{"Order Type", "Order", "Date of Delivery", "Date of PO", "Customer", "Store", "Status", "OrderValue", "DoneValue", "BacklogPLN", "BacklogNET", "Index", "Order Volume", "Done Volume", "Backlog PCS", "Price", "Exchange rate", "Currency"}),
#"Usunięto kolumny2" = Table.RemoveColumns(#"Zmieniono kolejność kolumn7",{"Exchange rate", "Currency"}),
#"Zmieniono nazwy kolumn4" = Table.RenameColumns(#"Usunięto kolumny2",{{"OrderValue", "Order Value"}, {"DoneValue", "Done Value"}, {"BacklogPLN", "Backlog PLN"}, {"BacklogNET", "Backlog-NET"}}),
#"Usunięto kolumny3" = Table.RemoveColumns(#"Zmieniono nazwy kolumn4",{"Order Type"}),
#"Zmieniono kolejność kolumn8" = Table.ReorderColumns(#"Usunięto kolumny3",{"Order", "Date of PO", "Date of Delivery", "Customer", "Store", "Status", "Order Value", "Done Value", "Backlog PLN", "Backlog-NET", "Index", "Order Volume", "Done Volume", "Backlog PCS", "Price"}),
#"Dodano kolumnę warunkową" = Table.AddColumn(#"Zmieniono kolejność kolumn8", "IN\OUT", each if [Status] = "Zamknięte potwierdzone" then "OUT" else if [Status] = "Potwierdzone" then "IN" else if [Status] = "Zrealizowane" then "DONE" else if [Status] = "Zamknięte w realizacji" then "DONE" else if [Status] = "W realizacji" then "IN" else if [Status] = "Anulowane" then "OUT" else if [Status] = "Niepotwierdzone" then "BUFFER" else if [Status] = "Anulowane potwierdzone" then "OUT" else if [Date of Delivery] = #date(1800, 12, 28) then "BUFFER" else null),
#"Zmieniono kolejność kolumn9" = Table.ReorderColumns(#"Dodano kolumnę warunkową",{"Order", "Date of PO", "Date of Delivery", "Customer", "Store", "Status", "IN\OUT", "Order Value", "Done Value", "Backlog PLN", "Backlog-NET", "Index", "Order Volume", "Done Volume", "Backlog PCS", "Price"}),
#"Scalone zapytania2" = Table.NestedJoin(#"Zmieniono kolejność kolumn9", {"Index"}, mapa_zapasy, {"Content.ITEM"}, "mapa_zapasy", JoinKind.LeftOuter),
#"Rozwinięty element mapa_zapasy" = Table.ExpandTableColumn(#"Scalone zapytania2", "mapa_zapasy", {"Content.GROUP"}, {"mapa_zapasy.Content.GROUP"}),
#"Zmieniono nazwy kolumn5" = Table.RenameColumns(#"Rozwinięty element mapa_zapasy",{{"mapa_zapasy.Content.GROUP", "Group"}}),
#"Dodano kolumnę warunkową1" = Table.AddColumn(#"Zmieniono nazwy kolumn5", "Niestandardowe", each if [Date of Delivery] = #date(1800, 12, 28) then [Date of PO] else [Date of Delivery]),
#"Zmieniono kolejność kolumn10" = Table.ReorderColumns(#"Dodano kolumnę warunkową1",{"Order", "Date of PO", "Customer", "Store", "Status", "IN\OUT", "Order Value", "Done Value", "Backlog PLN", "Backlog-NET", "Index", "Order Volume", "Done Volume", "Backlog PCS", "Price", "Group", "Niestandardowe", "Date of Delivery"}),
#"Zmieniono nazwy kolumn6" = Table.RenameColumns(#"Zmieniono kolejność kolumn10",{{"Date of Delivery", "delete_Date of Delivery"}, {"Niestandardowe", "Date of Delivery"}}),
#"Zmieniono typ3" = Table.TransformColumnTypes(#"Zmieniono nazwy kolumn6",{{"Date of Delivery", type date}}),
#"Zmieniono kolejność kolumn11" = Table.ReorderColumns(#"Zmieniono typ3",{"Order", "Date of PO", "Date of Delivery", "Customer", "Store", "Status", "IN\OUT", "Order Value", "Done Value", "Backlog PLN", "Backlog-NET", "Index", "Order Volume", "Done Volume", "Backlog PCS", "Price", "Group", "delete_Date of Delivery"}),
#"Usunięto kolumny4" = Table.RemoveColumns(#"Zmieniono kolejność kolumn11",{"delete_Date of Delivery"}),
#"Zmieniono nazwy kolumn7" = Table.RenameColumns(#"Usunięto kolumny4",{{"Date of Delivery", "Date of Delivery@"}, {"CDN ZamNag.Data_kalkulacyjna_REAL", "Date of Delivery"}}),
#"Zmieniono kolejność kolumn12" = Table.ReorderColumns(#"Zmieniono nazwy kolumn7",{"Order", "Date of PO", "Date of Delivery", "Date of Delivery@", "Customer", "Store", "Status", "IN\OUT", "Order Value", "Done Value", "Backlog PLN", "Backlog-NET", "Index", "Order Volume", "Done Volume", "Backlog PCS", "Price", "Group"}),
#"Zmieniono nazwy kolumn8" = Table.RenameColumns(#"Zmieniono kolejność kolumn12",{{"Date of Delivery@", "Date of Confirmation"}}),
#"Scalone zapytania3" = Table.NestedJoin(#"Zmieniono nazwy kolumn8", {"Customer"}, Zapytanie1, {"Content.[konrah.] AKRONIM"}, "Zapytanie1", JoinKind.LeftOuter),
#"Rozwinięty element Zapytanie1" = Table.ExpandTableColumn(#"Scalone zapytania3", "Zapytanie1", {"Content.Region 1", "Content.Region 2"}, {"Zapytanie1.Content.Region 1", "Zapytanie1.Content.Region 2"}),
#"Zmieniono nazwy kolumn9" = Table.RenameColumns(#"Rozwinięty element Zapytanie1",{{"Zapytanie1.Content.Region 1", "Region 1"}, {"Zapytanie1.Content.Region 2", "Region 2"}}),
#"Zduplikowano kolumnę" = Table.DuplicateColumn(#"Zmieniono nazwy kolumn9", "Date of PO", "Date of PO — kopia"),
#"Zduplikowano kolumnę1" = Table.DuplicateColumn(#"Zduplikowano kolumnę", "Date of Delivery", "Date of Delivery — kopia"),
#"Zmieniono nazwy kolumn10" = Table.RenameColumns(#"Zduplikowano kolumnę1",{{"Date of PO — kopia", "Date of PO [Year]"}, {"Date of Delivery — kopia", "Date of Delivery [Year]"}}),
#"Zduplikowano kolumnę2" = Table.DuplicateColumn(#"Zmieniono nazwy kolumn10", "Date of PO [Year]", "Date of PO [Year] — kopia"),
#"Zmieniono nazwy kolumn11" = Table.RenameColumns(#"Zduplikowano kolumnę2",{{"Date of PO [Year] — kopia", "Date of PO [Month]"}}),
#"Zduplikowano kolumnę3" = Table.DuplicateColumn(#"Zmieniono nazwy kolumn11", "Date of Delivery [Year]", "Date of Delivery [Year] — kopia"),
#"Zmieniono nazwy kolumn12" = Table.RenameColumns(#"Zduplikowano kolumnę3",{{"Date of Delivery [Year] — kopia", "Date of Delivery [Month]"}}),
#"Wyodrębniony rok" = Table.TransformColumns(#"Zmieniono nazwy kolumn12",{{"Date of PO [Year]", Date.Year, Int64.Type}, {"Date of Delivery [Year]", Date.Year, Int64.Type}}),
#"Wyodrębniony miesiąc" = Table.TransformColumns(#"Wyodrębniony rok",{{"Date of PO [Month]", Date.Month, Int64.Type}, {"Date of Delivery [Month]", Date.Month, Int64.Type}})
#"Wyodrębniony miesiąc"
|
oraz kod tabeli która była doklejana
Kod: |
Źródło = Sql.Database("GLOWNY\MSSQL", "CDNXL_PROD80", [Query="SELECT TRS.trs_zlcnumer, TRS.trs_zlctyp,TRS.trs_zlclp,sum(trs.TrS_Ilosc) as TrS_Ilosc from CDN.TraSElem TRS #(lf) WHERE TrS_GIDTyp NOT IN (1824,1828,1832,1836) AND trs_subgidlp > 0 group by TRS.trs_zlcnumer, TRS.trs_zlctyp,TRS.trs_zlclp"])
|
Może ktoś ma pomysł jak poradzić sobie z tym? |
|
 | ID posta:
427365
|
|
|
 |
|
|
|
DwaNiedźwiedzie
Excel Expert


Wersja: Win Office 2016
Pomógł: 327 razy Posty: 812
|
Wysłany: 14-04-2023, 19:43
|
|
|
Wydaje mi się, że to raczej nie zaprezentowany powyżej kod sam w sobie powoduje błąd, tylko występuje on gdzieś w danych ściąganych z bazy MSSQL. Przejrzyj dokładnie wszystkie trzy (o ile dobrze liczę) zapytania do serwera i tam poszukaj problemu. Uważaj tylko, bo czasem wrogi element występuje gdzieś na tyle daleko, że PQ jest w stanie wyświetlić początkową część danych i zapytanie może pozornie wydawać się ok. Na początek spróbuj wrzucić je do funkcji Table.SelectRowsWithErrors (tylko z pierwszym argumentem, bez wskazywania konkretnych kolumn) i zobacz, czy czegoś nie zwróci. |
|
 | ID posta:
427384
|
|
|
 |
|
|
buyakk
Świeżak

Wersja: Mac Office 365
Posty: 2
|
Wysłany: 17-04-2023, 10:39
|
|
|
Sprawdziłem wszystkie tabele za pomocą funkcji Table.SelectRowsWithErrors, wskazała źródło błędu w scalanej tabeli, już zabezpieczyłem się na przyszłość.
Dzięki za pomoc. |
|
 | ID posta:
427436
|
|
|
 |
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
|
Strona uĹźywa plikĂłw cookies.
Kliknij tutaj, Ĺźeby dowiedzieÄ siÄ jaki jest cel uĹźywania cookies oraz jak zmieniÄ ustawienia cookie w przeglďż˝darce.
KorzystajÄ
c ze strony uĹźytkownik wyraĹźa zgodÄ na uĹźywanie plikĂłw cookies, zgodnie z bieĹźÄ
cymi ustawieniami przeglÄ
darki.
SprawdĹş, w jaki sposĂłb przetwarzamy dane osobowe
|