ID tematu: 74499
 |
PQ skrypt |
Autor |
Wiadomość |
Pawel07
Starszy Forumowicz

Wersja: Win Office 2016
Posty: 35
|
Wysłany: 11-04-2023, 22:21 PQ skrypt
|
|
|
Cześć,
Mam kod w PQ, który grupuje wartości z tabeli po unikalnej marce auta. Pozostałe parametry nieunikalne dla marki auta przedstawia w kolejnych kolumnach dodatkowo z użyciem separatora w formie nowego wiersza.
Kod: | let
Źródło = Excel.CurrentWorkbook(){[Name="dane"]}[Content],
#"Pogrupowano wiersze" = Table.Group(Źródło, {"Marka"}, {{"data", each _, type table [Marka=text, #"Model (EN)"=text, Typ=text, #"Silnik (EN)"=text]}}),
#"Dodano kolumnę niestandardową" = Table.AddColumn(#"Pogrupowano wiersze", "Model", each Table.Column([data], "Model")),
#"Dodano kolumnę niestandardową1" = Table.AddColumn(#"Dodano kolumnę niestandardową", "Typ", each Table.Column([data], "Typ")),
#"Dodano kolumnę niestandardową2" = Table.AddColumn(#"Dodano kolumnę niestandardową1", "Silnik", each Table.Column([data], "Silnik")),
#"Wyodrębnione wartości" = Table.TransformColumns(#"Dodano kolumnę niestandardową2", {"Model", each Text.Combine(List.Transform(_, Text.From), "#(lf)"), type text}),
#"Wyodrębnione wartości1" = Table.TransformColumns(#"Wyodrębnione wartości", {"Typ", each Text.Combine(List.Transform(_, Text.From), "#(lf)"), type text}),
#"Wyodrębnione wartości2" = Table.TransformColumns(#"Wyodrębnione wartości1", {"Silnik", each Text.Combine(List.Transform(_, Text.From), "#(lf)"), type text})
in
#"Wyodrębnione wartości2" |
Chce uprościć liczbę kroków aby otrzymać ten sam efekt:
Kod: | let
Źródło = Excel.CurrentWorkbook(){[Name="dane"]}[Content],
#"Pogrupowano wiersze" = Table.Group(Źródło, {"Marka"}, {{"data", each _, type table [Marka=text, #"Model (EN)"=text, Typ=text, #"Silnik (EN)"=text]}}),
#"Dodano kolumnę niestandardową" = Table.AddColumn(#"Pogrupowano wiersze", {"Model", each Text.Combine(List.Transform(Table.Column([data], "Model"), _, Text.From), "#(lf)"), type text})
in
#"Dodano kolumnę niestandardową" |
daje to taki komunikat błędu:
Cytat: | Expression.Error: Do funkcji przekazano następującą liczbę argumentów: 2; funkcja oczekiwała od 3 do 4 argumentów.
Szczegóły:
Pattern=
Arguments=[List] |
Próbuje ale nie wiem gdzie brakuje dodatkowego argumentu.
W skrócie chciałbym otrzymać efekt końcowy jak kod u góry w jak najmniejszej liczbie kroków.
Czy da się ?
Proszę o pomoc
query.xlsm
|
Pobierz Plik ściągnięto 22 raz(y) 33.76 KB |
|
|
 | ID posta:
427276
|
|
|
 |
|
|
|
Kaper


Zaproszone osoby: 2
Wersja: Win Office 365
Pomógł: 4420 razy Posty: 8743
|
Wysłany: 12-04-2023, 14:54
|
|
|
Jak rozumiem chcesz zgrupować dwa kroki dodawanie kolumny niestandardowej i wyodrębnianie wartości w jeden krok.
Spróbuj tak:
Kod: | let
Źródło = Excel.CurrentWorkbook(){[Name="dane"]}[Content],
#"Pogrupowano wiersze" = Table.Group(Źródło, {"Marka"}, {{"data", each _, type table [Marka=text, #"Model (EN)"=text, Typ=text, #"Silnik (EN)"=text]}}),
#"Wyodrębnione wartości" = Table.TransformColumns(Table.AddColumn(#"Pogrupowano wiersze", "Model", each Table.Column([data], "Model")), {"Model", each Text.Combine(List.Transform(_, Text.From), "#(lf)"), type text})
in
#"Wyodrębnione wartości" |
|
_________________ Kaper Jej Królewskiej Mości
Jeśli dane będą torturowane dość długo, przyznają się do wszystkiego |
|
 | ID posta:
427293
|
|
|
 |
|
|
Pawel07
Starszy Forumowicz

Wersja: Win Office 2016
Posty: 35
|
Wysłany: 12-04-2023, 22:17
|
|
|
To jest to.
Po grupowaniu oszczędzam liczbe kroków o 50%
Korzystając z podpowiedzi rozwinełem zapytanie o 2 kolejne kroki. Czyli oprócz modelu jak wyżej dodałem typ i silnik
Kod: | let
Źródło = Excel.CurrentWorkbook(){[Name="dane"]}[Content],
#"Pogrupowano wiersze" = Table.Group(Źródło, {"Marka"}, {{"data", each _, type table [Marka=text, #"Model (EN)"=text, Typ=text, #"Silnik (EN)"=text]}}),
model = Table.TransformColumns(Table.AddColumn(#"Pogrupowano wiersze", "Model", each Table.Column([data], "Model")), {"Model", each Text.Combine(List.Transform(_, Text.From), "#(lf)"), type text}),
typ = Table.TransformColumns(Table.AddColumn(#"model", "Typ", each Table.Column([data], "Typ")), {"Typ", each Text.Combine(List.Transform(_, Text.From), "#(lf)"), type text}),
silnik = Table.TransformColumns(Table.AddColumn(#"typ", "Silnik", each Table.Column([data], "Silnik")), {"Silnik", each Text.Combine(List.Transform(_, Text.From), "#(lf)"), type text})
in
silnik |
Czy można to "zbić" w jeden krok ? Czyli w jednym kroku powstałyby 3 kolumny model, typ i silnik ?
Dziekuję i pozdrawiam
PS
query.xlsm
|
Pobierz Plik ściągnięto 18 raz(y) 31.09 KB |
|
|
 | ID posta:
427301
|
|
|
 |
|
|
master_mix
Excel Expert


Wersja: Win Office 365
Pomógł: 1230 razy Posty: 2377
|
Wysłany: 12-04-2023, 22:42
|
|
|
o to chodzi?
Kod: |
let
in
Table.Group(
Excel.CurrentWorkbook(){[Name="dane"]}[Content],
"Marka",
{
{"Model", each Text.Combine([Model],"#(lf)")},
{"Typ", each Text.Combine([Typ],"#(lf)")},
{"Silnik", each Text.Combine([Silnik],"#(lf)")}
}
) |
|
_________________
Podejmę współpracę (pracę)
Programowanie C#, Android, iOS, VB.NET, VBA, ASP.NET Core, WPF, Xamarin, Power Platforms, XAML, MVC, LINQ, Entity Framework. Bazy danych SQL Server, Oracle, MySQL, Firebird
Wrocław i okolice …lub zdalnie. |
|
 | ID posta:
427303
|
|
|
 |
|
|
Pawel07
Starszy Forumowicz

Wersja: Win Office 2016
Posty: 35
|
Wysłany: 14-04-2023, 00:44
|
|
|
No lekko mnie zatkało
Ostatecznie dla moich potrzeb nieco zmodyfikowałem kod:
Kod: | let
Źródło = Excel.CurrentWorkbook(){[Name="dane"]}[Content],
grupowanie = Table.Group(Źródło,
"Marka",
{
{"Model", each Text.Combine([Model],"#(lf)")},
{"Typ", each Text.Combine([Typ],"#(lf)")},
{"Silnik", each Text.Combine([Silnik],"#(lf)")}
}
)
in
grupowanie |
Panowie,
bardzo dziękuje
traktuje to jako bezcenną lekcję
Pozdrawiam
PS |
|
 | ID posta:
427353
|
|
|
 |
|
|
Bill Szysz
Excel Expert

Wersja: Win Office 365
Pomógł: 1021 razy Posty: 3987
|
Wysłany: 14-04-2023, 11:43
|
|
|
Możesz jeszcze w ten sposób:
Kod: | let
Rodzaj = {"Model", "Typ", "Silnik"},
Źródło = Excel.CurrentWorkbook(){[Name="dane"]}[Content],
grupowanie = Table.Group(Źródło,
"Marka",
List.Transform(Rodzaj, (x) => {x, each Text.Combine(Table.Column(_, x),"#(lf)")})
)
in
grupowanie |
W takim przypadku definiujesz sobie kolumny jakich chcesz użyć (w kroku "Rodzaj")
Możesz również wybór kolumn wrzucic do arkusza i z jego poziomu decydowac o tym jakie kolumny maja podlegac przekształceniom. (to juz kosmetyka) |
_________________
Pozdrawiam, były szbill62 aktualnie Bill Szysz |
|
 | ID posta:
427367
|
|
|
 |
|
|
|
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
|