ID tematu: 69942
 |
PQ uproszenie scalanie dla kilku kolumn naraz |
Autor |
Wiadomość |
Pawel07
Forumowicz

Wersja: Win Office 2016
Posty: 10
|
Wysłany: 25-01-2021, 17:01 PQ uproszenie scalanie dla kilku kolumn naraz
|
|
|
Witam,
Czy można uprościć scalenie 2 tabel ? W tym przypadku wykonuje 3 scalania aby dołczyć dane do 3 kolumn a czy można to zrobić formuła 1 scalenia lub w jakikolwiek sposób uprościć ?
Cytat: | let
Źródło = Excel.CurrentWorkbook(){[Name="Tabela1"]}[Content],
#"Zmieniono typ" = Table.TransformColumnTypes(Źródło,{{"Kolumna1", type any}}),
#"Podzielono kolumnę według ogranicznika" = Table.SplitColumn(Table.TransformColumnTypes(#"Zmieniono typ", {{"Kolumna1", type text}}, "pl-PL"), "Kolumna1", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Kolumna1.1", "Kolumna1.2", "Kolumna1.3"}),
#"Zmieniono typ1" = Table.TransformColumnTypes(#"Podzielono kolumnę według ogranicznika",{{"Kolumna1.1", Int64.Type}, {"Kolumna1.2", Int64.Type}, {"Kolumna1.3", Int64.Type}}),
#"Scalone zapytania" = Table.NestedJoin(#"Zmieniono typ1", {"Kolumna1.1"}, opis, {"Kolumna1"}, "opis", JoinKind.LeftOuter),
#"Rozwinięty element opis" = Table.ExpandTableColumn(#"Scalone zapytania", "opis", {"Kolumna2"}, {"opis.Kolumna2"}),
#"Scalone zapytania1" = Table.NestedJoin(#"Rozwinięty element opis", {"Kolumna1.2"}, opis, {"Kolumna1"}, "opis", JoinKind.LeftOuter),
#"Rozwinięty element opis1" = Table.ExpandTableColumn(#"Scalone zapytania1", "opis", {"Kolumna2"}, {"opis.Kolumna2.1"}),
#"Scalone zapytania2" = Table.NestedJoin(#"Rozwinięty element opis1", {"Kolumna1.3"}, opis, {"Kolumna1"}, "opis", JoinKind.LeftOuter),
#"Rozwinięty element opis2" = Table.ExpandTableColumn(#"Scalone zapytania2", "opis", {"Kolumna2"}, {"opis.Kolumna2.2"}),
#"Usunięto kolumny" = Table.RemoveColumns(#"Rozwinięty element opis2",{"Kolumna1.1", "Kolumna1.2", "Kolumna1.3"})
in
#"Usunięto kolumny" |
załącznik
P.
pq1.xlsx
|
Pobierz Plik ściągnięto 15 raz(y) 20.1 KB |
|
|
 | ID posta:
399003
|
|
|
 |
|
|
|
DwaNiedźwiedzie
Excel Expert


Wersja: Win Office 2016
Pomógł: 278 razy Posty: 686
|
Wysłany: 26-01-2021, 10:51
|
|
|
Można zrobić podobnie jak tutaj:
Kod: | let
opis = Excel.CurrentWorkbook(){[Name="opis"]}[Content],
#"Zmieniono typ" = Table.TransformColumnTypes(opis,{{"Kolumna1", type text}, {"Kolumna2", type text}}),
opis_rec = Record.FromList(#"Zmieniono typ"[Kolumna2], #"Zmieniono typ"[Kolumna1]),
Źródło = Excel.CurrentWorkbook(){[Name="Tabela1"]}[Content],
#"Podzielono kolumnę według ogranicznika" = Table.SplitColumn(Table.TransformColumnTypes(Źródło, {{"Kolumna1", type text}}, "pl-PL"), "Kolumna1", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Kolumna1", "Kolumna2", "Kolumna3"}),
kolumny = List.Transform(Table.ColumnNames(#"Podzielono kolumnę według ogranicznika"), each {_, (x) => if x = null then null else Record.Field(opis_rec, x)}),
#"Zamieniono wartość" = Table.TransformColumns(#"Podzielono kolumnę według ogranicznika", kolumny)
in
#"Zamieniono wartość" |
|
|
 | ID posta:
399044
|
|
|
 |
|
|
Pawel07
Forumowicz

Wersja: Win Office 2016
Posty: 10
|
Wysłany: 27-01-2021, 19:34
|
|
|
Wielkie dzieki,
O to mi chodziło,
P. |
|
 | ID posta:
399175
|
|
|
 |
|
|
Pawel07
Forumowicz

Wersja: Win Office 2016
Posty: 10
|
Wysłany: 06-02-2021, 20:16 [EDIT]
|
|
|
Niestety znowu utknełem, problem jest gdy do tabeli z danymi dodam nowe pola, w scalonym wariancie tabeli pojawiają się błędy.
może ktoś rozwinąc kod? :
załącznik
Kod: | let
opis = Excel.CurrentWorkbook(){[Name="opis"]}[Content],
#"Zmieniono typ" = Table.TransformColumnTypes(opis,{{"Kolumna1", type text}, {"Kolumna2", type text}}),
opis_rec = Record.FromList(#"Zmieniono typ"[Kolumna2], #"Zmieniono typ"[Kolumna1]),
Źródło = Excel.CurrentWorkbook(){[Name="Tabela1"]}[Content],
#"Podzielono kolumnę według ogranicznika" = Table.SplitColumn(Table.TransformColumnTypes(Źródło, {{"Kolumna1", type text}}, "pl-PL"), "Kolumna1", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Kolumna1", "Kolumna2", "Kolumna3"}),
kolumny = List.Transform(Table.ColumnNames(#"Podzielono kolumnę według ogranicznika"), each {_, (x) => if x = null then null else Record.Field(opis_rec, x)}),
#"Zamieniono wartość" = Table.TransformColumns(#"Podzielono kolumnę według ogranicznika", kolumny)
in
#"Zamieniono wartość" |
pq.xlsx
|
Pobierz Plik ściągnięto 3 raz(y) 17.73 KB |
|
|
 | ID posta:
399871
|
|
|
 |
|
|
DwaNiedźwiedzie
Excel Expert


Wersja: Win Office 2016
Pomógł: 278 razy Posty: 686
|
Wysłany: 06-02-2021, 20:48
|
|
|
W kroku kolumny jest tworzona lista nazw wszystkich kolumn do przekształcenia wraz z przypisaną funkcją transformacji. Jeżeli chcesz jakieś wykluczyć, trzeba je pominąć przy tworzeniu wspomnianej listy. Utworzyłem w zapytaniu dodatkowy krok nazwy, w którym pobieram listę wszystkich kolumn i usuwam wybrane dwie, bazując na ich nazwie. Można tu oczywiście zastosować inne podejście i np. funkcją List.RemoveFirstN usunąć dowolną ich liczbę bez względu na nazwę.
Kod: | let
opis = Excel.CurrentWorkbook(){[Name="opis"]}[Content],
#"Zmieniono typ" = Table.TransformColumnTypes(opis,{{"Kolumna1", type text}, {"Kolumna2", type text}}),
opis_rec = Record.FromList(#"Zmieniono typ"[Kolumna2], #"Zmieniono typ"[Kolumna1]),
Źródło = Excel.CurrentWorkbook(){[Name="Tabela1"]}[Content],
#"Podzielono kolumnę według ogranicznika" = Table.SplitColumn(Table.TransformColumnTypes(Źródło, {{"Kolumna1", type text}}, "pl-PL"), "Kolumna1", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv)),
nazwy = List.RemoveItems(Table.ColumnNames(#"Podzielono kolumnę według ogranicznika"), {"ID", "nazwa"}),
kolumny = List.Transform(nazwy, each {_, (x) => if x = null then null else Record.Field(opis_rec, x)}),
#"Zamieniono wartość" = Table.TransformColumns(#"Podzielono kolumnę według ogranicznika", kolumny)
in
#"Zamieniono wartość" |
|
|
 | ID posta:
399874
|
|
|
 |
|
|
Pawel07
Forumowicz

Wersja: Win Office 2016
Posty: 10
|
Wysłany: 06-02-2021, 21:17
|
|
|
Dziękuje Niedźwiedziu,
P. |
|
 | ID posta:
399879
|
|
|
 |
|
|
|
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
|