Jaa


Siirtymisen käsittely

Siirtymistaulukot (tai siirtymistaulukot) ovat keskeinen osa käyttäjäystävällisen käyttökokemuksen tarjoamisessa liittimelle. Power Query -käyttökokemus näyttää ne käyttäjälle sen jälkeen, kun hän on syöttänyt tarvittavat parametrit tietolähdefunktiollesi ja todennettu tietolähteen avulla.

TripPin-siirtymistaulukko.

Siirtymistaulukko on taustalla vain tavallinen M-taulukon arvo, jonka tyypille on määritetty tietyt metatietokentät. Kun tietolähdefunktiosi palauttaa taulukon, jossa nämä kentät on määritetty, Power Query näyttää siirtymistoiminnon valintaikkunan. Näet pohjana olevat tiedot taulukkoarvona napsauttamalla pääsolmua hiiren kakkospainikkeella ja valitsemalla Muokkaa.

Table.ToNavigationTable

-funktion Table.ToNavigationTable avulla voit lisätä taulukkotyypin metatiedot, joita tarvitaan siirtymistaulukon luomiseen.

Muistiinpano

Kopioi ja liitä tämä funktio M-laajennukseen. Tulevaisuudessa se todennäköisesti siirretään M-vakiokirjastoon.

Seuraavassa taulukossa kuvataan tämän funktion parametrit:

Parametri Tietoja
table Siirtymistaulukkosi.
keyColumns Luettelo sarakkeiden nimistä, jotka toimivat siirtymistaulukon perusavaimena.
nameColumn Sen sarakkeen nimi, jota tulisi käyttää siirtymistoiminnon näyttönimenä.
dataColumn Näytettävän taulukon tai funktion sisältävän sarakkeen nimi.
itemKindColumn Näytettävän kuvakkeen tyypin määrittämiseen käytettävän sarakkeen nimi. Alla on luettelo sarakkeen kelvollisista arvoista .
itemNameColumn Sen sarakkeen nimi, jota käytetään esikatselun toiminnan määrittämiseen. Tämän arvoksi määritetään yleensä sama arvo kuin itemKind.
isLeafColumn Sen sarakkeen nimi, jota käytetään määrittämään, onko tämä lehtisolmu vai voidaanko solmu laajentaa sisältämään toinen siirtymistaulukko.

Funktio lisää taulukkotyyppiin seuraavat metatiedot:

Field Parametri
NavigationTable.NameColumn nameColumn
NavigationTable.DataColumn dataColumn
NavigationTable.ItemKindColumn itemKindColumn
NavigationTable.IsLeafColumn isLeafColumn
Preview.DelayColumn itemNameColumn

ItemKind-arvot

Seuraavat kohdelajiarvot antavat siirtymistaulukossa eri kuvakkeen.

  • Syöte
  • Tietokanta
  • DatabaseServer
  • Dimensio
  • Table
  • Kansio
  • Function
  • Näytä
  • Arkki
  • DefinedName
  • Nauhoita

Esimerkit

Tasainen siirtymistaulukko

Seuraava koodiesimerkki näyttää litteän siirtymistaulukon, jossa on kolme taulukkoa ja funktio.

shared NavigationTable.Simple = () =>
    let
        objects = #table(
            {"Name",       "Key",        "Data",                           "ItemKind", "ItemName", "IsLeaf"},{
            {"Item1",      "item1",      #table({"Column1"}, {{"Item1"}}), "Table",    "Table",    true},
            {"Item2",      "item2",      #table({"Column1"}, {{"Item2"}}), "Table",    "Table",    true},
            {"Item3",      "item3",      FunctionCallThatReturnsATable(),  "Table",    "Table",    true},            
            {"MyFunction", "myfunction", AnotherFunction.Contents,       "Function", "Function", true}
            }),
        NavTable = Table.ToNavigationTable(objects, {"Key"}, "Name", "Data", "ItemKind", "ItemName", "IsLeaf")
    in
        NavTable;

shared FunctionCallThatReturnsATable = () =>
    #table({"DynamicColumn"}, {{"Dynamic Value"}});

Tämä koodi johtaa seuraavaan Siirtymistoiminto-näyttöön Power BI Desktopissa:

Malli litteästä siirtymistaulukosta.

Monitasoinen siirtymistaulukko

Sisäkkäisten siirtymistaulukoiden avulla on mahdollista luoda hierarkkinen näkymä tietojoukolle. Voit tehdä tämän asettamalla kyseisen rivin IsLeaf arvon arvoksi false (joka merkitsee sen laajennettavaksi solmuksi) ja muotoilemalla sarakkeen Data myös toiseksi siirtymistaulukoksi.

shared NavigationTable.Nested = () as table =>
    let
        objects = #table(
            {"Name",       "Key",  "Data",                "ItemKind", "ItemName", "IsLeaf"},{
            {"Nested A",   "n1",   CreateNavTable("AAA"), "Table",    "Table",    false},
            {"Nested B",   "n2",   CreateNavTable("BBB"), "Table",    "Table",    false},
            {"Nested C",   "n3",   CreateNavTable("CCC"), "Table",    "Table",    false}
        }),
        NavTable = Table.ToNavigationTable(objects, {"Key"}, "Name", "Data", "ItemKind", "ItemName", "IsLeaf")
    in
        NavTable;

CreateNavTable = (message as text) as table => 
    let
        objects = #table(
            {"Name",  "Key",   "Data",                           "ItemKind", "ItemName", "IsLeaf"},{
            {"Item1", "item1", #table({"Column1"}, {{message}}), "Table",    "Table",    true},
            {"Item2", "item2", #table({"Column1"}, {{message}}), "Table",    "Table",    true}
        }),
        NavTable = Table.ToNavigationTable(objects, {"Key"}, "Name", "Data", "ItemKind", "ItemName", "IsLeaf")
    in
        NavTable;

Tämä koodi johtaisi seuraavaan Siirtymistoiminto-näyttöön Power BI Desktopissa:

Malli hierarkkisista siirtymistaulukoista.

Dynaamiset siirtymistaulukot

Näistä perusteista voidaan luoda monimutkaisempia toimintoja. Vaikka kaikissa yllä olevissa esimerkeissä näytetään pysyväiskoodattuja entiteettejä siirtymistaulukossa, on helppo nähdä, miten siirtymistaulukko voidaan luoda dynaamisesti tietyn käyttäjän käytettävissä olevien entiteettien perusteella. Dynaamisissa siirtymistaulukoissa on muutamia tärkeitä huomioon otettavia seikkoja:

  • Virheenkäsittelyn avulla voit varmistaa hyvän käyttökokemuksen käyttäjille, joilla ei ole käyttöoikeutta tiettyihin päätepisteisiin.
  • Solmun arviointi on oletusarvoisesti laiskuutta; lehtisolmuja ei arvioida, ennen kuin pääsolmu on laajennettu. Tietyt monitasoisten dynaamisten siirtymistaulukoiden toteutukset voivat aiheuttaa koko puun innokkaan arvioinnin. Muista seurata Power Queryn muutosten määrää siinä muodossa, kun se alun perin hahmontaa siirtymistaulukon. Esimerkiksi Table.InsertRows on "lazier" kuin Table.FromRecords, koska sen ei tarvitse arvioida argumenttejaan.