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: 63337 Skopiuj do schowka Power Querry - Rozwinięty element Content
Autor Wiadomość
Pindelek 
Exceloholic


Pomógł: 1 raz
Posty: 130
Wysłany: 28-11-2018, 20:51   Power Querry - Rozwinięty element Content

Witam,

Czy jest możliwość, aby PQ sam aktualizował listę dostępnych nagłówków tabel podczas wykonywania procedury: "Table.ExpandTableColumn" ?
Jeśli tak to prośba o pomoc.
Liczba tabel jak i nagłówków może ulegać zmianie na plus jak i na minus.

Ps. w załączeniu przykład, którym to po dodaniu nagłówka 13, który to jest niewidoczne w wyniku działania PQ

forum.xlsx
Pobierz Plik ściągnięto 32 raz(y) 21.15 KB

ID posta: 357309 Skopiuj do schowka
 
 
kulasart
[Usunięty]

Wysłany: 28-11-2018, 22:30   

Język M do dla mnie wciąż trochę czarna magia ale wyszło mi coś takiego:
Kod:
let
    Źródło = Excel.CurrentWorkbook(),
    #"Rozwinięty element Content" = Table.ExpandTableColumn(Źródło, "Content", List.RemoveLastN(List.Union(List.Transform(Źródło[Content], each Table.ColumnNames(_))),1))
in
    #"Rozwinięty element Content"


To List.RemoveLastN mi nie pasuje, ale to jedyne na co wpadłem żeby pozbyć się wadliwego nagłówka pochodzącego z aktualnego zapytania.
Najlepiej by było na starcie ze źródła wyeliminować rekord wskazujący na zapytanie PQ, ale tego niestety nie potrafię :(
ID posta: 357313 Skopiuj do schowka
 
 
bodek 


Wersja: Win Office 2016
Pomógł: 947 razy
Posty: 2709
Wysłany: 01-12-2018, 15:19   

Wyszło coś takiego:
Kod:
let
    Źródło = Excel.CurrentWorkbook(),
    #"Odfiltruj" = Table.SelectRows(Źródło, each ([Name] <> "Zapytanie1")),
    #"Rozwinięty"  = Table.ExpandTableColumn(#"Odfiltruj", "Content", List.Union(List.Transform(#"Odfiltruj"[Content], each Table.ColumnNames(_))))

in
    #"Rozwinięty"

Upierdliwe, bo nie tylko nieznana ilość tabel, to jeszcze zmienna ilość oraz nazwy kolumn.
#Odfiltruj - usuwam Zapytanie1 z dalszej analizy, ponieważ pobieramy wszystkie TABELE a Zapytanie1 zwraca do skoroszytu TABELĘ i ...
#Rozwiniety -> z kolumny [Content] tabeli #Odfiltruj rozwija wg nagłówków, które są na wspólnej liście (List.Union) w każdej z Tabel w [Content], lista jest z Table.ColumnNames, czyli nazw nagłówków

forum_bodek.xlsx
Pobierz Plik ściągnięto 36 raz(y) 20.23 KB

_________________
Szkolenia z Excela, Power Query, Power Pivot, wizualizacje danych w Excelu
ID posta: 357464 Skopiuj do schowka
 
 
kulasart
[Usunięty]

Wysłany: 01-12-2018, 17:03   

bodek, a znasz jakąś metodę na to, by nie wpisywać na sztywno nazwy zapytania, które chcemy odfiltrować?
ID posta: 357472 Skopiuj do schowka
 
 
bodek 


Wersja: Win Office 2016
Pomógł: 947 razy
Posty: 2709
Wysłany: 01-12-2018, 18:09   

Hmm, nie znam ale jestem zwolennikiem takiej pracy aby zapytania nie były w skoroszytach, w których mam tabele z danymi, co przy okazji eliminuje ten problem.
Jak ktoś zna odpowiedź na to pytanie, to ja też chętnie poznam.
_________________
Szkolenia z Excela, Power Query, Power Pivot, wizualizacje danych w Excelu
ID posta: 357478 Skopiuj do schowka
 
 
Bill Szysz 
Excel Expert


Wersja: Win Office 365
Pomógł: 798 razy
Posty: 3332
Wysłany: 04-12-2018, 12:25   

bodek, jest wiele sposobów by odfiltrować takie tabele (tabele które są wynikiem zapytań).. niestety żaden z nich nie wynika wprost z jakiejś nietypowej własności tych tabel a raczej opierają się one na przyjęciu jednolitych zasad postępowań przy tworzeniu zapytań.
Jednym z najprostszych sposobów jest przyjęcie zasady która dotyczy nazw zapytań. Mianowicie można przyjąć że nazwa każdego zapytania MUSI kończyć się jakimś stałym, określonym tekstem (np zapytanie "blabla_qry"...inne zapytanie "JestemZapytaniem_qry").
W takim przypadku można łatwo odfiltrować wszystkie Tabele których nazwa kończy sie na "_qry".
Kod:
#"Filtered Rows" = Table.SelectRows(Źródło, each (not Text.EndsWith([Name], "_qry" )))

Innym sposobem może być np utworzenie w excelu Tabeli z nazwami zapytań które nalezy odfiltrować (jest tez sporo innych opartych m.in. na np List.Intersect albo List.Contains czy List.PositionOf).
Ja zwykle (o ile jest taka potrzeba) stosuję tą pierwszą metodę (czyli końcówka nazwy zapytania jest zawsze taka sama)
_________________
Zlecenia, konsultacje, doradztwo i szkolenia z Power Query, Power BI i Excela - Raporty, Analizy, Projekty
Pozdrawiam, były szbill62 aktualnie Bill Szysz
ID posta: 357652 Skopiuj do schowka
 
 
bodek 


Wersja: Win Office 2016
Pomógł: 947 razy
Posty: 2709
Wysłany: 04-12-2018, 15:23   

Bill Szysz, ja wszystkie nazwy obiektów zaczynam (nie kończę) wg własnego klucza:
T_ tabele (T_Dane)
TP_ tabele przestawne (TP_Srednia_ze_Sprzedazy)
Z_ zapytania, np: Z_T_Dane (zapytanie z tabeli T_Dane)
i dalej jak piszesz, dokładnie też tak robię, choć jak pisałem unikam wyników zapytań w postaci Tabel w pliku, w którym mam dane do obróbki.
_________________
Szkolenia z Excela, Power Query, Power Pivot, wizualizacje danych w Excelu
ID posta: 357668 Skopiuj do schowka
 
 
Pindelek 
Exceloholic


Pomógł: 1 raz
Posty: 130
Wysłany: 16-12-2018, 20:35   

Dziękuję za zainteresowanie tematem. W zupełności rozwiązaliście mój problem, punkty przyznane :)
ID posta: 358541 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