Jaa


Taulukot

Muistiinpano

Microsoft Power Fx on pohjaan perustuvien sovellusten kaavakieli. Nämä artikkelit ovat keskeneräisiä, koska pohjaan perustuvista sovelluksista poimitaan kieli, integroidaan se muiden Microsoft Power Platform -tuotteiden kanssa ja määritetään käytettäväksi avoimen lähdekoodin tuotteena. Aloita kielen esittelyn Microsoft Power Fx:n yleiskatsaus.

Microsoft Power Fx:ssa voit kirjoittaa kaavan, joka käyttää Microsoft Excelin, SharePointin, SQL Serverin ja useiden muiden tietoja tietueissa ja taulukoissa tallentavien lähteiden tietoja. Jos haluat käsitellä tällaisia tietoja mahdollisimman tehokkaasti, tutustu näiden rakenteiden taustalla oleviin käsitteisiin.

  • Tietue sisältää yhden tai useamman tietoluokan, joka koskee henkilöä, paikkaa tai asiaa. Tietue voi esimerkiksi sisältää yksittäisen asiakkaan nimen, sähköpostiosoitteen ja puhelinnumeron. Muut työkalut viittaavat tietueeseen termillä ”rivi” tai ”kohde”.
  • Taulukko sisältää yhden tai useampia tietueita, jotka sisältävät samat tietoluokat. Taulukko saattaa esimerkiksi sisältää 50 asiakkaan nimet, sähköpostiosoitteet ja puhelinnumerot.

Voit luoda erilaisia kaavoja, joille taulukon nimi annetaan argumenttina samalla tavoin kuin Excelissä olevalle kaavalle annetaan yksi tai useampi soluviittaus argumentteina. Jotkin Power Fxin kaavat palauttavat taulukon, joka kuvastaa muita argumentteja, joita sinä määrität. Voit luoda kaavan esimerkiksi:

  • päivittämään taulukossa olevan tietueen siten, että kyseinen taulukko määritetään yhdeksi Patch-funktion useista argumenteista
  • lisäämään, poistamaan ja nimeämään uudelleen taulukon sarakkeita siten, että kyseinen taulukko määritetään argumentiksi AddColumns-, DropColumns- tai RenameColumns-funktiolle. Mikään näistä funktioista ei muokkaa alkuperäistä taulukkoa. Sen sijaan funktio palauttaa toisen taulukon määrittämiesi argumenttien perusteella.

Taulukon osat

Taulukon osat

Tietueet

Kukin tietue sisältää vähintään yhden henkilön, sijainnin tai asian tietoluokan. Edellä olevassa esimerkissä näkyy tietue kullekin tuotteelle (Suklaa, Leipä ja Vesi) ja sarakkeet kullekin tietoluokalle (Hinta, Saatavilla oleva määrä ja Tilattu määrä).

Jos haluat viitata kaavassa johonkin tietueeseen yksinään taulukon kontekstin ulkopuolella, voit käyttää aaltosulkeita. Esimerkiksi tietuetta { Nimi: "Mansikat", Hinta: 7.99 } ei ole liitetty taulukkoon. Huomaa, että kyseisessä esimerkissä olevat kenttien nimet, kuten Nimi ja Hinta, eivät ole lainausmerkeissä.

Kentät

Kenttä on yksittäinen tieto-osio tietueessa. Voit määrittää tämän tyyppisen kentän näkymään arvona tietyssä tietueessa olevassa sarakkeessa.

Samoin kuin ohjausobjektin osalta tietueen kenttään viitataan käyttämällä tietueessa .-operaattoria. Esimerkiksi First(Tuotteet).Nimi hakee Nimi-kentän sisällön Tuotteet-taulukon ensimmäiseen tietueeseen.

Kenttä voi sisältää toisen tietueen tai taulukon, kuten esimerkki GroupBy-funktiosta esittää. Voit asettaa sisäkkäin niin monta tieto- ja taulukkotasoa kuin haluat.

Sarakkeet

Sarake viittaa kenttään, joka on yhteinen taulukon tietueessa oleville tietueille. Edellä kuvatussa esimerkissä kullakin tuotteella on Hinta-kenttä, ja kaikkien tuotteiden Hinta-kenttä näkyy samassa sarakkeessa. Edellä olevan taulukon yläreunassa on neljä saraketta:

  • Nimi
  • Hinta
  • Käytettävissä oleva määrä
  • Tilattu määrä

Sarakkeen nimi kuvastaa kyseisen sarakkeen kenttiä.

Kaikki sarakkeen arvot ovat samaa tietotyyppiä. Edellä kuvatussa esimerkissä ”Käytettävissä oleva määrä” -sarake sisältää kutakin tietuetta kohden yhden numeron, eikä se voi sisältää merkkijonoa, kuten ”12 yksikköä”. Minkä tahansa kentän arvo voi olla myös tyhjä.

Olet ehkä on kutsunut sarakkeita ”kentiksi” muissa työkaluissa.

Taulukko

Taulukko koostuu yhdestä tai useammasta tietueesta, ja jokaisessa tietueessa on useita kenttiä. Kenttien nimet ovat yhdenmukaisia kaikissa tietueissa.

Kaikilla tietolähteeseen tai kokoelmaan tallennetuilla taulukoilla on nimi, jolla käyttäjä viittaa taulukkoon. Tämä nimi annetaan funktioon argumenttina. Taulukkoja voidaan saada myös funktion tai kaavan tuloksena.

Seuraavassa esimerkissä taulukko ilmaistaan kaavassa käyttämällä Table-funktiota, ja funktion tietojoukko ilmaistaan aaltosulkeilla:

Table( { Value: "Strawberry" }, { Value: "Vanilla" } )

Voit myös määrittää yksisarakkeisen taulukon käyttämällä hakasulkeita. Edellisen kaavan voi kirjoittaa myös näin:

[ "Strawberry", "Vanilla" ]

Taulukkokaavat

Excelissä ja Power Fxissa käytetään kaavoja, joilla käsitellään numeroita ja tekstimerkkijonoja samalla tavoin:

  • Kirjoita Excelissä soluun A1 arvo 42, ja kirjoita sitten toiseen soluun kaava A1 + 2. Näkyviin tulee arvo 44.
  • Määritä Power Appsissa Slider1:n Oletus-ominaisuudeksi 42, ja määritä selitteen Teksti-ominaisuudeksi Slider1.Value + 2, jolloin näkyviin tulee arvo 44.

Kummassakin tapauksessa laskettu arvo muuttuu automaattisesti, jos muutat argumenttien arvoja (esimerkiksi numeroa solussa A1 tai Slider1:n arvoa).

Samalla tavoin voit käyttää kaavoja taulukoissa ja tietueissa olevien tietojen käyttöönottoon ja käsittelyyn. Voit käyttää taulukoiden nimiä argumentteina joissakin kaavoissa. Esimerkiksi käyttämällä kaavaa Min(Tuoteluettelo, Hinta) voit näyttää Tuoteluettelo-taulukon pienimmän arvon Hinta-sarakkeessa. Lisäksi on kaavoja, jotka tarjoavat palautusarvoina kokonaisia taulukkoja. Esimerkiksi RenameColumns(Tuoteluettelo, "Hinta", "Kustannus")-kaava palauttaa kaikki tietueet Tuoteluettelo-taulukosta, mutta muuttaaHinta-sarakkeen nimeksi Kustannus.

Numeroiden tavoin myös taulukkoihin ja tietueisiin liittyvät kaavat lasketaan automaattisesti uudelleen, jos niiden pohjana oleva taulukko tai tietue muuttuu. Jos Tuoteluettelo-taulukossa olevan tuotteen aiheuttama kustannus laskee edellistä vähimmäisarvoa pienemmäksi, Min-kaavan palautusarvo muuttuu automaattisesti tätä vastaavaksi.

Taulukkofunktiot ja ohjausobjektien ominaisuudet

Harkitse Lower-funktiota. Jos muuttuja welcome sisältää tekstimerkkijonon "Hello, World", kaava Lower( welcome ) palauttaa arvon "hello, world". Tämä toiminto ei millään tavoin muuta kyseisen muuttujan arvoa. Lower on puhdas funktio, koska se käsittelee vain syötteitä ja tuottaa tulosteita. Siinä kaikki; sillä ei ole sivuvaikutuksia. Kaikki Excelin toiminnot ja useimmat Power Fxin toiminnot ovat puhtaita funktioita, joiden avulla työkirja tai sovellus voidaan laskea uudelleen automaattisesti.

Power Fx sisältää joukon toimintoja, jotka toimivat taulukoille samalla tavalla. Nämä toiminnot ottavat taulukot syötteinä ja suodattavat, lajittelevat, muuntavat, vähentävät ja tekevät yhteenvetoja kokonaisista tietotaulukoista. Itse asiassa Lower ja monet muut toiminnot, jotka yleensä ottavat vastaan yksittäisen arvon, voivat myös ottaa vastaan yksisarakkeisen taulukon syötteenä.

Monet funktiot käyttävät lähteenä yksisarakkeita taulukkoa. Jos koko taulukossa on vain yksi sarake, voit määrittää sen nimen mukaan. Jos taulukossa on useita sarakkeita, voit määrittää yhden näistä sarakkeista käyttämällä Table.Column-syntaksia. Esimerkiksi Products.Name palauttaa yksisarakkeisen taulukon, jossa on vain Name-arvot Products-taulukosta.

Taulukon voi muotoilla kokonaan uudelleen käyttämällä AddColumns-, RenameColumns-, ShowColumns- tai DropColumns-funktiota. Myös nämä toiminnot muuttavat vain tulosta, ei niiden lähdettä.

Toimintakaaviot

Muut toiminnot on suunniteltu erityisesti muuttamaan tietoja ja niillä on sivuvaikutuksia. Koska nämä toiminnot eivät ole puhtaita, ne on rakennettava huolellisesti, eivätkä ne voi osallistua sovelluksen arvojen automaattiseen uudelleenlaskentaan. Näitä funktioita voidaan käyttää vain toimintakaavoissa.

Tietueen vaikutusalue

Jotkin toiminnot toimivat arvioimalla kaavan kaikissa taulukon tietueissa erikseen. Kaavan tulosta käytetään eri tavoin:

  • AddColumns – antaa lisätyn kentän arvon.
  • Average, Max, Min, Sum, StdevP, VarP – nämä määritteet antavat koostearvon.
  • Filter, Lookup – määrittää, sisällytetäänkö tietue tulokseen.
  • Concat – määrittää merkkijonot, jotka yhdistetään.
  • Distinct – palauttaa arvon, jolla tunnistetaan tietueiden kaksoiskappaleet.
  • ForAll – voi palauttaa minkä tahansa arvon, ja sillä voi olla sivuvaikutuksia.
  • Sort – antaa arvon, jonka mukaan tietueita lajitellaan.
  • With – voi palauttaa minkä tahansa arvon, ja sillä voi olla sivuvaikutuksia.

Näiden kaavojen sisällä voit viitata käsiteltävänä olevan tietueen kenttiin. Kaikki nämä funktiot luovat ”tietueen vaikutusalueen”, jossa kaava lasketaan ja tietueen kentät ovat käytettävissä ylimmän tason tunnisteina. Voit viitata myös ohjausobjektien ominaisuuksiin ja muihin arvoihin kaikkialla sovelluksessa.

Käytetään esimerkkinä yleiseen muuttujaan sijoitettua Tuotteet-taulukkoa.

Pyydetyt taulukot

Set( Products,
    Table(
        { Product: "Widget",    'Quantity Requested': 6,  'Quantity Available': 3 },
        { Product: "Gadget",    'Quantity Requested': 10, 'Quantity Available': 20 },
        { Product: "Gizmo",     'Quantity Requested': 4,  'Quantity Available': 11 },
        { Product: "Apparatus", 'Quantity Requested': 7,  'Quantity Available': 6 }
    )
)

Määritä, pyydettiinkö mitään näitä tuotteita enemmän kuin niitä oli saatavana:

Filter( Products, 'Quantity Requested' > 'Quantity Available' )

Filter-kaavan ensimmäinen argumentti on käsiteltävänä oleva tietuetaulukko, ja toinen argumentti on kaava. Filter-kaava luo tietueen vaikutusalueen, jonka perusteella määritetään tämä kaava, jossa kunkin tietueen kentät ovat käytettävissä. Tässä tapauksessa näitä kenttiä ovat Tuote, Pyydetty määrä ja Käytettävissä oleva määrä. Vertailun tulos määrittää, sisällytetäänkö kukin tietue funktion tulokseen:

Tarvittavat taulukot

Laajennetaan esimerkkiä laskemalla, kuinka paljon kutakin tuotetta on tilattava:

AddColumns( 
    Filter( Products, 'Quantity Requested' > 'Quantity Available' ), 
    "Quantity To Order", 'Quantity Requested' - 'Quantity Available'
)

Tässä lisäämme lasketun sarakkeen tulokseen. AddColumns-ominaisuudella on oma tietuealueensa, jonka mukaan se laskee pyydettyjen ja saatavana olevien tuotteiden välisen eron.

Lisää sarakkeita.

Lopuksi voimme pienentää tulostaulukkoa niin, että se sisältää vain haluamamme sarakkeet:

ShowColumns(
    AddColumns(
        Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
        "Quantity To Order", 'Quantity Requested' - 'Quantity Available'
    ),
    "Product",
    "Quantity To Order"
)

Vain tilattava

Huomaa, että käytämme edellä toisinaan lainausmerkkejä (") ja toisinaan heittomerkkejä ('). Heittomerkkejä on käytettävä, kun viitataan objektin arvoon, kuten kenttään tai taulukkoon, jossa objektin nimessä on välilyönti. Lainausmerkkejä käytetään, kun emme viittaa objektin arvoon, vaan sen sijaan keskustelemme siitä. Tämä koskee erityisesti tilanteita, joissa objektia ei vielä ole, kuten AddColumns-määritteen yhteydessä.

Selvitys

Tietuealueen kanssa lisättyjen kenttien nimet ohittavat samat nimet, jotka ovat peräisin muualta sovelluksesta. Kun näin tapahtuu, voit edelleen käyttää arvoja tietuealueen ulkopuolelta käyttämällä @ selvitys-operaattoria :

  • Voit käyttää sisäkkäisten tietuealueiden arvoja käyttämällä operaattoria @ siten, että käsiteltävänä olevan taulukon nimi esitetään tämän mallin mukaisesti:
    Table[@FieldName]
  • Voit käyttää yleisiä arvoja, kuten tietolähteitä, kokoelmia ja kontekstimuuttujia, esittämällä ne mallin [@ObjectName] mukaisesti (ilman taulukon määritystä).

Jos käsiteltävä taulukko on lauseke, kuten Filter(Table, ...), selvitysoperaattoria ei voi käyttää. Vain sisin tietuealue voi käyttää kenttiä tästä taulukkolausekkeesta ilman selvitysoperaattoria.

Kuvitellaan esimerkiksi kokoelma X:

X-arvo

Voit luoda tämän kokoelman käyttämällä kaavaa ClearCollect( X, [1, 2] ).

Ja toinen kokoelma Y:

Y-arvo

Voit luoda tämän kokoelman käyttämällä kaavaa ClearCollect( Y, ["A", "B"] ).

Määritä lisäksi kontekstimuuttuja, jonka nimi on Value käyttämällä tätä kaavaa: UpdateContext( {Value: "!"} )

Kootaan nyt kaikki tiedot yhteen. Tässä kontekstissa seuraava kaava:

Ungroup(
    ForAll( X,
        ForAll( Y,
            Y[@Value] & Text( X[@Value] ) & [@Value]
        )
    ),
    "Value"
)

tuottaa tämän taulukon:

XY-arvo

Mitä tapahtui? Uloin ForAll-funktio määrittää tietuealueen X:lle ja antaa käyttöoikeuden kunkin tietueen Value-kenttään, kun niitä käsitellään. Se voidaan ottaa käyttöön sanalla Value tai kaavalla X[@Value].

Sisin ForAll-funktio määrittää toisen tietuealueen kohteelle Y. Koska tässä taulukossa on myös Value-kenttä määritettynä, Value:n käyttäminen viittaa Y-tietueen kenttään eikä enää X-tietueen kenttään. Jos haluat käyttää X:n Value-kenttää, meidän täytyy käyttää pidempää selvitysoperaattorin versiota.

Koska Y on alueen sisin tietuealue, tämän taulukon tietueiden käyttämiseen ei tarvita selvitystä. Näin ollen voimme käyttää tätä kaavaa ja samaa tulosta:

Ungroup(
    ForAll( X,
        ForAll( Y,
            Value & Text( X[@Value] ) & [@Value]
        )
    ),
    "Value"
)

Kaikki ForAll-tietuealueet ohittavat yleisen vaikutusalueen. Määrittämämme Value-kontekstimuuttuja ei ole käytettävissä nimen perusteella ilman selvennysoperaattoria. Voit käyttää tätä arvoa kirjoittamalla [@Value].

Ungroup tasoittaa tuloksen, koska sisäkkäiset ForAll-funktiot tuottavat sisäkkäisen tulostaulukon.

Yksisarakkeiset taulukot

Jos haluat käyttää yhtä saraketta taulukosta, käytä ShowColumns-funktiota kuten tässä esimerkissä:

ShowColumns( Products, "Product" )

Tämä kaava tuottaa yhden sarakkeen taulukon:

Yksi sarake

Lyhyempänä vaihtoehtona voit määrittää Table.Column, joka poimii yksisarakkeisen taulukon kohteen Table sarakkeesta Column. Tämä kaava tuottaa esimerkiksi täsmälleen saman tuloksen kuin ShowcColumns.

Products.Product

Sidotut tietueet

Tietueita ilmaistaan aaltosulkeilla, jotka sisältävät nimetyt kenttäarvot. Voit esimerkiksi ilmaista tämän ohjeaiheen alussa olevan taulukon ensimmäisen tietueen käyttämällä seuraavaa kaavaa:

{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 }

Voit myös upottaa kaavoja muihin kaavoihin tämän esimerkin mukaan:

{ Name: First(Products).Name, Price: First(Products).Price * 1.095 }

Voit sijoittaa tietueita sisäkkäin käyttämällä aaltosulkeita sisäkkäin tämän esimerkin mukaisesti:

{ 'Quantity': { 'OnHand': ThisItem.QuantOnHand, 'OnOrder': ThisItem.QuantOnOrder } }

Lisää heittomerkkien sisään jokainen sarakkeen nimi, joka sisältää erikoismerkin, kuten välilyönnin tai kaksoispisteen. Kun haluat käyttää heittomerkkiä sarakkeen nimen sisällä, tuplaa se.

Huomaa, että Hinta-sarakkeessa oleva arvo ei sisällä valuuttasymbolia, kuten dollarimerkkiä. Kyseinen muotoilu otetaan käyttöön, kun arvo näytetään.

Sidotut taulukot

Voit luoda taulukon käyttämällä Table-funktiota ja tietuejoukkoa. Voit ilmaista tämän ohjeaiheen alussa olevan taulukon käyttämällä seuraavaa kaavaa:

Table( 
	{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 },
	{ Name: "Bread", Price: 4.95, 'Quantity on Hand': 34, 'Quantity on Order': 0 },
	{ Name: "Water", Price: 4.95, 'Quantity on Hand': 10, 'Quantity on Order': 0 } 
)

Voit myös asettaa taulukkoja sisäkkäin:

Table( 
	{ Name: "Chocolate", 
	  'Quantity History': Table( { Quarter: "Q1", OnHand: 10, OnOrder: 10 },
	                             { Quarter: "Q2", OnHand: 18, OnOrder: 0 } ) 
	}
)

Sidotut arvotaulukot

Voit luoda yksisarakkeisia taulukkoja määrittämällä arvot hakasulkeisissa. Tuloksena saatavassa taulukossa on yksittäinen sarake, jonka nimi on Value.

Esimerkiksi [ 1, 2, 3, 4 ] vastaa Table( { Value: 1 }, { Value: 2 }, { Value: 3 }, { Value: 4 } ) ja palauttaa tämän taulukon:

Tekstiin sidottu taulukko.