Tapahtumat
Liity seuraamme FabCon Vegasiin
31. maalisk. klo 23 - 2. huhtik. klo 23
Lopullinen Microsoft Fabric-, Power BI-, SQL- ja tekoälyyhteisöjohtoinen tapahtuma. 31.3.–2.4.2025.
Rekisteröidy jo tänäänTätä selainta ei enää tueta.
Päivitä Microsoft Edgeen, jotta voit hyödyntää uusimpia ominaisuuksia, suojauspäivityksiä ja teknistä tukea.
Tässä artikkelissa kerrotaan, miten voit luoda ja käsitellä dynaamisia M-kyselyparametreja Power BI Desktopissa. Dynaamisten M-kyselyparametrien avulla mallin tekijät voivat määrittää suodatin- tai osittaja-arvot, joita raportin katselijat voivat käyttää M-kyselyparametrissa. Dynaamiset M-kyselyparametrit antavat mallin tekijöille entistä enemmän hallintaa suodatinvalintojen käyttöön DirectQuery-lähdekyselyissä.
Mallin tekijät ymmärtävät suodattimien aiotun semantiikan ja osaavat usein kirjoittaa tehokkaita kyselyitä tietolähteelleen. Dynaamisilla M-kyselyparametreilla mallien tekijät voivat varmistaa, että suodatinvalinnat sisältyvät lähdekyselyihin oikeassa kohdassa, jotta aiotut tulokset voidaan saavuttaa optimaalisen suorituskyvyn avulla. Dynaamiset M-kyselyparametrit voivat olla erityisen hyödyllisiä kyselyn suorituskyvyn optimoinnissa.
Katso seuraavasta videosta, miten Sujata selittää ja käyttää dynaamisia M-kyselyparametreja, ja kokeile niitä sitten itse.
Huomautus
Tässä videossa saatetaan käyttää Power BI Desktopin tai Power BI -palvelun aiempia versioita.
Jotta voit suorittaa nämä toimenpiteet, sinulla on oltava kelvollinen M-kysely, joka käyttää yhtä tai useampaa DirectQuery-taulukkoa.
Seuraava esimerkki välittää yksittäisen arvon parametriin dynaamisesti.
Avaa Power Query -editori valitsemalla Power BI Desktopissa Aloitus>Muunna tiedot>Muunna tiedot.
Valitse Power Query -editorissa valintanauhan Parametrien hallinta -kohdasta Uudet parametrit.
Täytä Parametrien hallinta -ikkunassa parametrin tiedot. Lisätietoja on kohdassa Parametrin luominen.
Lisää parametreja valitsemalla Uusi .
Kun olet lisännyt parametrit, valitse OK.
Kun olet luonut parametrit, voit viitata niihin M-kyselyssä. Jos haluat muokata M-kyselyä, kun kysely on valittuna, avaa Laajennettu editori.
Viittaa M-kyselyn parametreihin, jotka on korostettu keltaisella seuraavassa kuvassa:
Kun olet muokannut kyselyä, valitse Valmis.
Luo kullekin parametrille taulukko, jonka sarake tarjoaa mahdolliset arvot, jotka voidaan määrittää dynaamisesti suodattimen valinnan perusteella. Tässä esimerkissä haluat, että - ja EndTime
-StartTime
parametrit ovat dynaamisia. Koska nämä parametrit edellyttävät parametria Date/Time
, voit luoda mahdolliset syötteet, joiden avulla parametrin päivämäärä määritetään dynaamisesti.
Valitse Power BI Desktopin valintanauhan Mallinnus-kohdasta Uusi taulukko.
Luo taulukko parametrin StartTime
arvoille, esimerkiksi:
StartDateTable = CALENDAR (DATE(2016,1,1), DATE(2016,12,31))
Luo toinen taulukko parametrin EndTime
arvoille, esimerkiksi:
EndDateTable = CALENDAR (DATE(2016,1,1), DATE(2016,12,31))
Huomautus
Käytä sarakkeen nimeä, joka ei ole todellisessa taulukossa. Jos käytät samaa nimeä kuin todellinen taulukkosarake, valittua arvoa sovelletaan suodattimena kyselyssä.
Nyt kun kentät sisältävät taulukot Date
on luotu, voit sitoa kunkin kentän parametriin. Kentän sitominen parametriin tarkoittaa sitä, että kun valitun kentän arvo muuttuu, arvo siirtyy parametriin ja päivittää kyselyn, joka viittaa parametriin.
Jos haluat sitoa kentän, valitse Power BI Desktopin mallinäkymässä juuri luotu kenttä ja valitse Ominaisuudet-ruudusta Lisäasetukset.
Huomautus
Sarakkeen tietotyypin tulee vastata M-parametrin tietotyyppiä.
Valitse Sido parametriin -kohdan avattava valikko ja valitse parametri, jonka haluat sitoa kenttään:
Koska tämä esimerkki koskee parametrin asettamista yksittäiseksi arvoksi, säilytä Monivalinta-asetuksena Ei, joka on oletusarvo:
Jos määrität yhdistetyn sarakkeen arvoksi Ei monivalinnalle, käytä osittajassa yksittäisen valinnan tilaa tai edellytä yksittäistä valintaa suodatinkortissa.
Jos käyttötapauksesi edellyttävät useiden arvojen välittämistä yhteen parametriin, määritä ohjausobjektin arvoksi Kyllä ja varmista, että M-kysely on määritetty hyväksymään useita arvoja. Tässä on esimerkki toiminnolle RepoNameParameter
, joka sallii useita arvoja:
Toista nämä vaiheet, jos sinulla on muita kenttiä sidottavaksi muihin parametreihin.
Voit nyt viitata tähän kenttään osittajassa tai suodattimena:
Tässä esimerkissä Power BI Desktop -mallissa on kenttä nimeltä Maa, joka on luettelo maista tai alueista, jotka on sidottu M-parametriin nimeltä countryNameMParameter. Tämä parametri on otettu käyttöön Monivalinta-parametrille, mutta se ei ole käytössä Valitse kaikki -parametrille. Voit käyttää osittajan tai suodatinkortin Valitse kaikki -vaihtoehtoa seuraavasti:
Valitse kaikki -asetuksen ottaminen käyttöön Maa-kohdassa:
Ota Maa-kohdan Lisäasetukset-kohdassa käyttöön Valitse kaikki -valintakytkin, joka ottaa käyttöön Valitse kaikki arvo -syötteen. Muokkaa Valitse kaikki -arvoa tai ota oletusarvo muistiin.
Valitse kaikki - arvo välittää parametrin luettelona, joka sisältää määrittämäsi arvon. Kun siis määrität tämän arvon tai käytät oletusarvoa, varmista, että arvo on yksilöllinen eikä sitä ole olemassa parametriin sidotussa kentässä.
Käynnistä Power Query -editori, valitse kysely ja valitse sitten Laajennettu editori. Muokkaa M-kyselyä ja käytä Valitse kaikki -arvoa viittaamaan Valitse kaikki -vaihtoehtoon.
Lisää Laajennettu editori totuusarvolauseke, joka antaa tulokseksi sentrue
, onko parametri käytössä Multi-Select-parametrissa ja sisältää Valitse kaikki -arvon, ja palauttaa muussa tapauksessa arvon false
:
Sisällytä Valitse kaikki totuusarvo -lausekkeen tulos lähdekyselyun. Esimerkissä lähdekyselyssä on totuusarvokyselyparametri nimeltä includeAllCountries
, joka on määritetty edellisen vaiheen totuusarvolausekkeen tulokseen. Voit käyttää tätä parametria kyselyn suodatinlausekkeessa siten, että false
totuusarvo suodattaa valitun maan tai alueen nimet eikä true
käytännössä käytä suodatinta.
Kun päivität M-kyselyn tilille uuden Valitse kaikki -arvon, voit käyttää Valitse kaikki -funktiota osittajissa tai suodattimissa.
Tässä on täydellinen kysely edellisessä esimerkissä:
let
selectedcountryNames = if Type.Is(Value.Type(countryNameMParameter), List.Type) then
Text.Combine({"'", Text.Combine(countryNameMParameter, "','") , "'"})
else
Text.Combine({"'" , countryNameMParameter , "'"}),
selectAllCountries = if Type.Is(Value.Type(countryNameMParameter), List.Type) then
List.Contains(countryNameMParameter, "__SelectAll__")
else
false,
KustoParametersDeclareQuery = Text.Combine({"declare query_parameters(",
"startTimep:datetime = datetime(", DateTime.ToText(StartTimeMParameter, "yyyy-MM-dd hh:mm"), "), " ,
"endTimep:datetime = datetime(", DateTime.ToText(EndTimeMParameter, "yyyy-MM-dd hh:mm:ss"), "), ",
"includeAllCountries: bool = ", Logical.ToText(selectAllCountries) ,",",
"countryNames: dynamic = dynamic([", selectedcountryNames, "]));" }),
ActualQueryWithKustoParameters =
"Covid19
| where includeAllCountries or Country in(countryNames)
| where Timestamp > startTimep and Timestamp < endTimep
| summarize sum(Confirmed) by Country, bin(Timestamp, 30d)",
finalQuery = Text.Combine({KustoParametersDeclareQuery, ActualQueryWithKustoParameters}),
Source = AzureDataExplorer.Contents("help", "samples", finalQuery, [MaxRows=null, MaxSize=null, NoTruncate=null, AdditionalSetStatements=null]),
#"Renamed Columns" = Table.RenameColumns(Source,{{"Timestamp", "Date"}, {"sum_Confirmed", "Confirmed Cases"}})
in
#"Renamed Columns"
Raportin lukijat, jotka voivat dynaamisesti määrittää M-kyselyparametrien arvoja, voivat ehkä käyttää enemmän tietoja tai käynnistää lähdejärjestelmän muokkauksia käyttämällä lisäyshyökkäyksiä. Tämä mahdollisuus riippuu siitä, miten viittaat M-kyselyn parametreihin ja mitä arvoja välität parametreihin.
Sinulla on esimerkiksi parametrisoitu Kusto-kysely, joka on muodostettu seuraavasti:
Products
| where Category == [Parameter inserted here] & HasReleased == 'True'
| project ReleaseDate, Name, Category, Region
Ystävällisen käyttäjän kanssa ei ole ongelmia, jotka läpäisevät parametrille sopivan arvon, Games
esimerkiksi :
| where Category == 'Games' & HasReleased == 'True'
Hyökkääjä saattaa kuitenkin pystyä välittämään arvon, joka muokkaa kyselyä, esimerkiksi 'Games'//
:
Products
| where Category == 'Games'// & HasReleased == 'True'
| project ReleaseDate, Name, Category, Region
Tässä esimerkissä hyökkääjä voi saada pääsyn peliä koskeviin tietoihin, joita ei ole vielä julkaistu, muuttamalla osan kyselystä kommentiksi.
Tietoturvariskin pienentämiseksi vältä M-parametriarvojen merkkijonon yhdistämistä kyselyssä. Käytä sen sijaan kyseisiä parametriarvoja M-toiminnoissa, jotka taittuvat lähdekyselyun, jotta M-moduuli ja liitin luovat lopullisen kyselyn.
Jos tietolähde tukee tallennettujen toimintosarjojen tuomista, harkitse kyselylogiikan tallentamista siihen ja käynnistämistä M-kyselyssä. Vaihtoehtoisesti voit käyttää lähdekyselyn kielelle ja liittimille sisäänrakennettua parametrin välitysmekanismia, jos sellainen on käytettävissä. Esimerkiksi Azure Data Explorer sisältää valmiita kyselyparametrin ominaisuuksia, jotka on suunniteltu suojaamaan lisäyshyökkäyksiltä.
Seuraavassa on joitakin esimerkkejä näistä lieventämisistä:
Esimerkki, joka käyttää M-kyselyn suodatustoimintoja:
Table.SelectRows(Source, (r) => r[Columns] = Parameter)
Esimerkki, joka määrittää parametrin lähdekyselyssä tai välittää parametrin arvon syötteenä lähdekyselyfunktiolle:
declare query_parameters (Name of Parameter : Type of Parameter);
Esimerkki tallennetun toimintosarjan kutsumisesta suoraan:
let CustomerByProductFn = AzureDataExplorer.Contents("Help", "ContosoSales"){[Name="CustomerByProduct"]}[Data] in
CustomerByProductFn({1, 3, 5})
Dynaamisia M-kyselyparametreja käytettäessä on otettava huomioon joitakin huomioon otettavia seikkoja ja rajoituksia:
Parameter
parametrin nimen loppuun, jotta tämä rajoitus vältetään.Date/Time
tietotyyppi, sinun on kirjoitettava se M-kyselyyn muodossa DateTime.Date(<YourDateParameter>)
.Lisätietoja Power BI Desktopin ominaisuuksista on seuraavissa resursseissa:
Tapahtumat
Liity seuraamme FabCon Vegasiin
31. maalisk. klo 23 - 2. huhtik. klo 23
Lopullinen Microsoft Fabric-, Power BI-, SQL- ja tekoälyyhteisöjohtoinen tapahtuma. 31.3.–2.4.2025.
Rekisteröidy jo tänäänOpetus
Moduuli
Power BI -raporttisuodattimien määrittäminen - Training
Raporttien suodatus on monimutkainen aihe, koska Microsoft Power BI -raportin suodattamiseen on käytettävissä useita tekniikoita. Monimutkaisuuden tulee kuitenkin ohjausobjekti, jonka avulla voit suunnitella raportteja, jotka vastaavat vaatimuksia ja odotuksia.
Sertifiointi
Microsoft Certified: Power BI Data Analyst Associate - Certifications
Demonstrate methods and best practices that align with business and technical requirements for modeling, visualizing, and analyzing data with Microsoft Power BI.