Keresés

Új hozzászólás Aktív témák

  • Mutt

    senior tag

    válasz ny.janos #53684 üzenetére

    Szia,

    Megnéztem a fájlt és zavaró, hogy a sorrend változik egyszerű műveletek után, de ez nem hiba, hanem a rendszer műkődésének "terméke". Már 2018-ban is panaszkodtak erre ahogy most keresgéltem és azóta nincs változás. Ahogy korábban beszéltünk róla, ha fontos a sorrend, akkor az utolsó lépés(ek)ben kell elintézni.

    Az okosok szerint ez azért történhet meg, mert az optimalizáció jegyében a Power Query nem mindig abban a sorrendben hajtja végre az átalakításokat mint ahogy a lépések/a felhasználói logika adja.

    A legtöbben a Table.Buffer-t (ami a memóriába teszi az adott lépés eredményét, ezzel felgyorsítva az elérését az adatoknak később) javasolják. A puffereléshez elő kell állítani a kész eredményt, nem fog tudni menetközben kavarni.

    A mintádban az utolsó kibontás előtti lépés került memóriába és tényleg utána nem változik a sorrend. Ha hamarabb teszem RAMba az adatokat, akkor már megint van kavarás.

    Még egy dolgot módosítottam, hogy te is szokd/gyakorold a tábla kibontást másik módon. A 13. lépésed a "Mérkőzés indexszámmal" táblák kibontása/egyesítése. Ezt a GUI-ról könnyen el lehet végezni, de 2 problémája van:
    - fixen rögzíti az oszlop neveket amikkel dolgozni fog és
    - elveszíted az oszlopok adattítpusát
    Láthatod hogy egyik korábbi oszlopnak sincsen típusa.

    Helyette lehet használni a Table.Combine-t.
    A teljes M-kód:

    let
        Forrás = Excel.CurrentWorkbook(){[Name="Eredmenyek"]}[Content],
        #"Típus módosítva" = Table.TransformColumnTypes(Forrás,{{"Forduló száma", Int64.Type}, {"Versenyző sorszám", Int64.Type}, {"Mérkőzés száma", Int64.Type}, {"Hazai/vendég", type text}, {"Versenyző", type text}, {"Csapat", type text}, {"Teli 1-25", Int64.Type}, {"Össz 1-50", Int64.Type}, {"Teli 51-75", Int64.Type}, {"Össz 51-100", Int64.Type}}),
        #"Sorok szűrve" = Table.SelectRows(#"Típus módosítva", each ([#"Össz 51-100"] <> null)),
        #"Érték felülírva" = Table.ReplaceValue(#"Sorok szűrve",null,0,Replacer.ReplaceValue,{"Teli 1-25", "Össz 1-50", "Teli 51-75", "Össz 51-100"}),
        #"Összeadás beszúrva" = Table.AddColumn(#"Érték felülírva", "Teli", each [#"Teli 1-25"] + [#"Teli 51-75"], Int64.Type),
        #"Összeadás beszúrva1" = Table.AddColumn(#"Összeadás beszúrva", "Összesen", each [#"Össz 1-50"] + [#"Össz 51-100"], Int64.Type),
        #"Kivonás eredménye beszúrva" = Table.AddColumn(#"Összeadás beszúrva1", "Tarolás", each [Összesen] - [Teli], Int64.Type),
        #"Oszlopok eltávolítva" = Table.RemoveColumns(#"Kivonás eredménye beszúrva",{"Teli 1-25", "Össz 1-50", "Teli 51-75", "Össz 51-100", "Teli"}),
        #"Sorok rendezve" = Table.Sort(#"Oszlopok eltávolítva",{{"Forduló száma", Order.Ascending}, {"Mérkőzés száma", Order.Ascending}, {"Összesen", Order.Descending}, {"Tarolás", Order.Descending}}),
        #"Sorok csoportosítva" = Table.Group(#"Sorok rendezve", {"Forduló száma", "Mérkőzés száma"}, {{"Mérkőzés", each _, type table [Forduló száma=number, Versenyző sorszám=number, Mérkőzés száma=number, #"Hazai/vendég"=text, Versenyző=text, Csapat=text, #"Teli 1-25"=nullable number, #"Össz 1-50"=nullable number, #"Teli 51-75"=nullable number, #"Össz 51-100"=number, Csere=any]}}),
        #"Egyéni oszlop hozzáadva" = Table.AddColumn(#"Sorok csoportosítva", "Mérkőzés indexszámmal", each Table.AddIndexColumn([Mérkőzés], "Index", 1, 1, Int64.Type)),
        #"Többi oszlop eltávolítva" = Table.SelectColumns(#"Egyéni oszlop hozzáadva",{"Mérkőzés indexszámmal"}),
        Combine = Table.Combine(#"Többi oszlop eltávolítva"[Mérkőzés indexszámmal]),
        #"Feltételes oszlop hozzáadva" = Table.AddColumn(Combine, "Egyéni pont", each if [Index] <= 4 then 1 else 0),
        #"Egyesített lekérdezések" = Table.NestedJoin(#"Feltételes oszlop hozzáadva", {"Versenyző sorszám", "Forduló száma", "Mérkőzés száma"}, Manualis_info, {"Versenyző sorszám", "Forduló száma", "Mérkőzés száma"}, "Manualis_info", JoinKind.LeftOuter),
        Buffer = Table.Buffer(#"Egyesített lekérdezések"),
        #"Kibontott Manualis_info" = Table.ExpandTableColumn(Buffer, "Manualis_info", {"Manuális információ"}, {"Manuális információ"})
    in
        #"Kibontott Manualis_info"

    üdv

Új hozzászólás Aktív témák

Hirdetés