Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 69942 Skopiuj do schowka 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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
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 Skopiuj do schowka
 
 
Pawel07 
Forumowicz


Wersja: Win Office 2016
Posty: 10
Wysłany: 06-02-2021, 21:17   

Dziękuje Niedźwiedziu,

P.
ID posta: 399879 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
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

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum

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