Power Queryn kyselysuunnitelma (esikatselu)
Power Queryn kyselysuunnitelma on ominaisuus, joka tarjoaa paremman näkymän kyselyn arviointiin. On hyödyllistä määrittää, miksi tietty kysely ei ehkä delegoida lähteeseen tietyssä vaiheessa.
Käytännöllisen esimerkin avulla tässä artikkelissa esitellään pääasiallinen käyttötapaus ja mahdolliset edut, jotka saadaan kyselysuunnitelmaominaisuuden avulla kyselyvaiheiden tarkasteluun. Tässä artikkelissa käytetyt esimerkit on luotu käyttämällä Azure SQL Serverin AdventureWorksLT-mallitietokantaa, jonka voit ladata AdventureWorksin esimerkkitietokannoista.
Muistiinpano
Power Queryn kyselysuunnitelmaominaisuus on käytettävissä vain Power Query Onlinessa.
Tämä artikkeli on jaettu suositeltujen vaiheiden sarjaan kyselysuunnitelman tulkitsemiseksi. Nämä vaiheet ovat seuraavat:
- Tarkista kyselyn delegoinnin ilmaisimet lähteeseen.
- Tarkista sen kyselysuunnitelma valitsemalla kyselyn vaihe.
- Toteuta kyselyn muutokset.
Seuraavien vaiheiden avulla voit luoda kyselyn omassa Power Query Online -ympäristössäsi.
Valitse Power Query – Valitse tietolähde ja valitse Tyhjä kysely.
Korvaa tyhjän kyselyn komentosarja seuraavalla kyselyllä.
let Source = Sql.Database("servername", "database"), Navigation = Source{[Schema = "Sales", Item = "SalesOrderHeader"]}[Data], #"Removed other columns" = Table.SelectColumns(Navigation, {"SalesOrderID", "OrderDate", "SalesOrderNumber", "PurchaseOrderNumber", "AccountNumber", "CustomerID", "TotalDue"}), #"Filtered rows" = Table.SelectRows(#"Removed other columns", each [TotalDue] > 1000), #"Kept bottom rows" = Table.LastN(#"Filtered rows", 5) in #"Kept bottom rows"
database
Muutaservername
oman ympäristösi nimet ja anna niille oikeat nimet.(Valinnainen) Jos yrität muodostaa yhteyden paikalliseen ympäristöön palvelimeen ja tietokantaan, muista määrittää yhdyskäytävä kyseistä ympäristöä varten.
Valitse Seuraava.
Valitse Power Query -editori Määritä yhteys ja anna tietolähteesi tunnistetiedot.
Muistiinpano
Jos haluat lisätietoja yhteyden muodostamisesta SQL Serveriin, siirry SQL Server -tietokantaan.
Näiden vaiheiden jälkeen kyselysi näyttää seuraavan kuvan kaltaiselta.
Tämä kysely muodostaa yhteyden SalesOrderHeader-taulukkoon ja valitsee muutamia sarakkeita viidestä viimeisestä tilauksesta, joiden TotalDue-arvo on yli 1000.
Muistiinpano
Tässä artikkelissa käytetään yksinkertaistettua esimerkkiä tämän ominaisuuden esittelyssä, mutta tässä artikkelissa kuvatut käsitteet koskevat kaikkia kyselyitä. Suosittelemme, että sinulla on hyvä tietämys kyselyn delegoimisesta lähteeseen ennen kyselysuunnitelman lukemista. Jos haluat lisätietoja kyselyn delegoimisesta lähteeseen, siirry kohtaan Kyselyn delegoinnin perusteet lähteeseen.
1. Tarkista kyselyn delegoinnin lähteeseen -ilmaisimet
Muistiinpano
Suosittelemme, että luet ennen tämän osion lukemista artikkelin Kyselyn delegointi lähteeseen -ilmaisimet.
Tämän prosessin ensimmäinen vaihe on tarkistaa kysely ja kiinnittää erityistä huomiota kyselyn delegoinnin ilmaisimiin. Tavoitteena on tarkastella vaiheita, jotka on merkitty delegoimatta lähteeseen. Sen jälkeen näet, voisiko yleiskyselyn muutokset delegoida nämä muunnokset kokonaan lähteeseen.
Tässä esimerkissä ainoa vaihe, jota ei voi delegoida lähteeseen, on Säilytetyt alimmat rivit, joka on helppo tunnistaa ei-taitetun vaiheen ilmaisimen kautta. Tämä vaihe on myös kyselyn viimeinen vaihe.
Tavoitteena on nyt tarkastella tätä vaihetta ja ymmärtää, mitä delegoidaan takaisin tietolähteeseen ja mitä ei voi delegoida lähteeseen.
2. Tarkista sen kyselysuunnitelma valitsemalla kyselyvaihe
Olet tunnistanut Säilytetyt alimmat rivit -vaiheen kiinnostavaksi vaiheeksi, koska se ei taita takaisin tietolähteeseen. Napsauta vaihetta hiiren kakkospainikkeella ja valitse Näytä kyselysuunnitelma -vaihtoehto. Tämä toiminto näyttää uuden valintaikkunan, joka sisältää kaavion valitun vaiheen kyselysuunnitelmasta.
Power Query yrittää optimoida kyselysi hyödyntämällä laiskuutta arviointia ja kyselyn delegointia lähteeseen, kuten kohdassa Kyselyn delegoinnin perusteet on mainittu. Tämä kyselysuunnitelma edustaa M-kyselyn optimoituja käännöksiä alkuperäiseen kyselyyn, joka lähetetään tietolähteeseen. Se sisältää myös kaikki Power Query -moduulin suorittamat muunnokset. Järjestys, jossa solmut näkyvät, noudattaa kyselyn järjestystä, joka alkaa kyselyn viimeisestä vaiheesta tai tulosteeseen, joka on esitetty kaavion vasemmassa reunassa, ja tässä tapauksessa On Table.LastN-solmu , joka edustaa Säilytetyt alimmat rivit -vaihetta.
Valintaikkunan alaosassa on palkki, jossa on kuvakkeita, joiden avulla voit lähentää tai loitontaa kyselysuunnitelmanäkymää, ja muita painikkeita, joiden avulla voit hallita näkymää. Edellisessä kuvassa tämän palkin Sovita tarkasteluun -vaihtoehtoa käytettiin solmujen arvostamiseen.
Muistiinpano
Kyselysuunnitelma edustaa optimoituja suunnitelmia. Kun moduuli arvioi kyselyä, se yrittää taittaa kaikki operaattorit tietolähteeksi. Joissain tapauksissa se saattaa jopa järjestää vaiheet sisäisesti uudelleen ja maksimoida lähteeseen delegoinnin. Tätä silmällä pitäen tässä optimoidussa kyselysuunnitelmassa olevat solmut/operaattorit sisältävät yleensä lähteeseen delegoidun tietolähdekyselyn ja operaattorit, joita ei voitu delegoida lähteeseen ja jotka arvioidaan paikallisesti.
Tunnista taitetut solmut muista solmuista
Voit tunnistaa solmut tässä kaaviossa kahdeksi ryhmäksi:
- Taitetut solmut: Tämä solmu voi olla joko
Value.NativeQuery
tai tietolähdesolmu, kutenSql.Database
. Ne voidaan myös tunnistaa selitteen etäyhteydellä niiden funktion nimen alla. - Ei-taitettavat solmut: Muut taulukko-operaattorit, kuten
Table.SelectRows
,Table.SelectColumns
ja muut funktiot, joita ei voitu delegoida lähteeseen. Ne voidaan myös tunnistaa tunnisteilla Full scan ja Streaming.
Seuraavassa kuvassa näytetään taitetut solmut punaisen suorakulmion sisällä. Muita solmuja ei voitu delegoida takaisin tietolähteeseen. Sinun on tarkistettava muut solmut, koska tavoitteena on yrittää saada kyseiset solmut takaisin tietolähteeseen.
Voit näyttää laajennetut tiedot valitsemalla Näytä tiedot joidenkin solmujen alareunasta. Esimerkiksi solmun Value.NativeQuery
tiedoissa näkyy alkuperäinen kysely (SQL:ssä), joka lähetetään tietolähteeseen.
Tässä näytetty kysely ei ehkä ole täsmälleen sama kysely kuin tietolähteeseen lähetetty kysely, mutta se on hyvä arvio. Tässä tapauksessa se kertoo tarkalleen, mihin sarakkeisiin Tehdään kysely SalesOrderHeader-taulukosta ja miten se suodattaa kyseisen taulukon käyttämällä TotalDue-kenttää saadakseen vain rivejä, joissa kyseisen kentän arvo on suurempi kuin 1 000. Power Query -moduuli laskee sen vieressä olevan solmun Table.LastN paikallisesti, koska sitä ei voi delegoida lähteeseen.
Muistiinpano
Operaattorit eivät välttämättä täysin vastaa kyselyn komentosarjassa käytettyjä funktioita.
Tarkista taittamattomat solmut ja harkitse toimintoja, joilla muunnos delegoidaan lähteeseen
Olet nyt määrittänyt, mitä solmuja ei voitu delegoida lähteeseen, ja ne arvioidaan paikallisesti. Tässä tapauksessa sillä on Table.LastN
vain solmu, mutta muissa skenaarioissa siinä voi olla paljon enemmän.
Tavoitteena on ottaa muutokset käyttöön kyselyssäsi, jotta vaihe voidaan delegoida lähteeseen. Jotkin mahdollisesti käyttöön otettavat muutokset voivat ulottua vaiheiden uudelleenjärjestämisestä vaihtoehtoisen logiikan käyttöön ottaminen kyselyssä, joka on tarkempi tietolähteelle. Tämä ei tarkoita sitä, että kaikki kyselyt ja kaikki toiminnot olisi taitettavissa joidenkin muutosten avulla. Suosittelemme kuitenkin määrittämään kokeiluversion avulla virheen, jos kyselysi voidaan delegoida takaisin lähteeseen.
Koska tietolähde on SQL Server -tietokanta, jos tavoitteena on noutaa viimeiset viisi tilausta taulukosta, hyvä vaihtoehto on hyödyntää TOP - ja ORDER BY -lauseita SQL:ssä. Koska SQL:ssä ei ole BOTTOM-lausetta, Table.LastN
PowerQueryn muunnoksen muuntamista ei voi kääntää SQL:ksi. Voit poistaa Table.LastN
vaiheen ja korvata sen seuraavasti:
- Lajittele laskeva vaihe taulukon SalesOrderID-sarakkeen mukaan, koska tämä sarake määrittää, mikä tilaus menee ensin ja mikä on syötetty viimeiseksi.
- Valitse viisi ylintä riviä taulukon lajittelun jälkeen, tämä muunnos toimii samalla tavalla kuin jos se olisi Säilytetyt alimmat rivit (
Table.LastN
).
Tämä vaihtoehto vastaa alkuperäistä kyselyä. Vaikka tämä vaihtoehto teoriassa vaikuttaa hyvältä, sinun on tehtävä muutokset nähdäksesi, tekeekö tämä vaihtoehto tämän solmun kokonaan takaisin tietolähteeseen.
3. Ota muutokset käyttöön kyselyssäsi
Ota käyttöön edellisessä osiossa käsitelty vaihtoehto:
Sulje kyselysuunnitelma-valintaikkuna ja siirry takaisin Power Query -editori.
Poista Alimmat rivit -vaihe.
Lajittele SalesOrderID-sarake laskevaan järjestykseen.
Valitse tietojen esikatselunäkymän vasemmasta yläkulmasta taulukkokuvake ja valitse vaihtoehto, jossa lukee Säilytä ylimmät rivit. Anna valintaikkunassa numero viisi argumenttina ja valitse OK.
Kun muutokset on otettu käyttöön, tarkista kyselyn delegoinnin ilmaisimet uudelleen ja katso, antaako se taitetun ilmaisimen.
Nyt on aika tarkistaa viimeisimmän vaiheen kyselysuunnitelma, joka on nyt Säilytä ylimmät rivit. Nyt solmut on vain taitettu. Valitse Näytä tiedot -kohdasta Value.NativeQuery
sen tarkistamiseksi, mikä kysely lähetetään tietokantaan.
Vaikka tässä artikkelissa ehdotetaan, mitä vaihtoehtoa kannattaa käyttää, päätavoitteena on, miten voit tutkia kyselyn delegointia lähteeseen kyselysuunnitelman avulla. Tässä artikkelissa on myös näkyvyys siihen, mitä tietolähteeseen lähetetään ja mitä muunnoksia tehdään paikallisesti.
Voit muokata koodiasi, jotta näet sen vaikutuksen kyselyssäsi. Käyttämällä Kyselyn delegointi lähteeseen -ilmaisimia saat myös paremman käsityksen siitä, mitkä vaiheet estävät kyselyn delegoimisen lähteeseen.