Storage Engine – sen rooli DAX-kyselyjen optimoinnissa LuckyTemplatesissa

Tässä opetusohjelmassa tarkastelemme analyysipalveluiden toista moottoria – tallennusmoottoria.

Keskustelimme huipputason moottorista, aiemmassa opetusohjelmassa. Kun käyttäjät ymmärtävät, kuinka nämä molemmat moottorit toimivat, on helpompi optimoida ja parantaa DAX-kyselyjesi suorituskykyä.

Tallennusmoottorin päätarkoitus on työskennellä suoraan tietokannan kanssa.

Kaavamoottorilla ei ole suoraa pääsyä tietokantaan, joten se kulkee yleensä tallennusmoottorin läpi tätä tarkoitusta varten.

Tallennusmoottoria on kahta tyyppiä: tuontitila ja DirectQuery . Voit yhdistää ja yhdistää molempia tyyppejä samassa tietomallissa luodaksesi yhdistelmämallin.

Sisällysluettelo

Työskentely tuontitilan kanssa tallennusmoottorissa

Puhutaanpa ensin tuontitilasta. Tämä tunnetaan myös yleisesti nimellä Vertipaq, mutta sitä kutsutaan myös nimellä xVelocity tai In Memory Columnar Database.

Tuontitilan toiminnassa on neljä tärkeää asiaa.

Ensin Vertipaq luo tiedoista kopion suoraan tietolähteestä ja tallentaa sen RAM-muistiin pakatussa muodossa .

Toiseksi tuontitilassa käsitellyt tiedot perustuvat viimeiseen päivitystoimintoon . Tämä tarkoittaa, että jos päivitit tietosi viimeksi viime viikolla, käsittelemäsi tiedot ovat edelleen samoja tietoja viime viikolta. Tämä on erityisen tärkeää, jos käytät yhdistelmäkokoonpanoa, jossa yksi taulukko on tuontitilassa ja toinen DirectQuery-tilassa.

Oletetaan, että sinulla on viime viikolla päivitetty Tuotteet-taulukko tuontitilassa. Mitä tulee myyntitaulukkoon, päätit käyttää sen DirectQueryn kautta sen koon vuoksi. Oletetaan myös, että luot raportin molempien taulukoiden perusteella, joihin tuot Brändi-sarakkeen, ja luot kokonaismyyntimittauksen samaan myyntitaulukkoon. Haluat myös visualisoida Myynnin määrän brändin perusteella.

Sinun on ensin päivitettävä tuontitilasta tulevat tiedot, koska saatat saada tuoreita ja päivitettyjä tietoja DirectQuerysta ja vanhentuneita tietoja Vertipaqista. Tämä jättää muutaman tyhjän rivin matriisiin ja visualisointiin.

Seuraava asia, jonka sinun on tiedettävä Vertipaqista, on se, että vain perustoiminnot, kuten , , tai ovat natiivisti saatavilla . Tämä tarkoittaa, että jos kyselysuunnitelmaan sisältyy muita monimutkaisempia toimintoja, tallennuskoneen on kutsuttava kaavamoottori ratkaistakseen tämän koodin osan.

Lopuksi tallennusmoottori on erittäin optimoitu tietokanta Vertipaqin sarakerakenteen vuoksi . Tämä tarkoittaa, että kaikki tiedot tallennetaan sarake sarakkeelta eikä rivi riviltä. Tämän rakenteen ansiosta Vertipaq on aina nopeampi kuin DirectQuery-yhteys, vaikka luot indeksejä relaatiotietomallissasi.

Työskentely DirectQueryn kanssa tallennuskoneessa

Seuraava vaihtoehto, joka meillä on LuckyTemplates-analyysipalveluissa, on DirectQuery. Jos käytät DirectQuery-yhteyttä, analyysipalvelut toimivat vain kaavamoottorin lähettämien kyselyiden läpivientinä.

Oletetaan siis, että kirjoitat kyselyn. Kaavamoottori luo kyselysuunnitelman. Sitten se välittää kyselyn tallennuskoneeseen, joka on jo käännetty tietokannan äidinkielelle. Useimmiten nämä kyselyt tulevat SQL:llä.

Jos kysely käyttää DirectQuerya, odota sen olevan aina ajan tasalla. Sinun ei tarvitse huolehtia siitä, milloin olet viimeksi päivittänyt tiedot.

DAX-koodin ja tietomallin optimointiprosessi riippuu myös siitä, kuinka relaatiotietokanta on luotu. Jos sarakkeissasi on indeksejä, kyselysi optimoidaan aina. Mutta jos tietokantaasi ei ole optimoitu raporttien luomiseen käyttämällä analyysipalveluita tai LuckyTemplatesia, saatat kohdata muutamia suorituskykyhaasteita. Ole siis tarkoituksellinen tehdessäsi tietokantojasi raporttien kehittämistä varten.

Työskentely komposiittimallien kanssa

Kolmas vaihtoehto on luoda yhdistelmämalli, jotta sinulla voi olla yksi taulukko tuontitilassa ja toinen taulukko DirectQueryssa.

Kun käytät kahta taulukkoa eri lähteistä, kaavamoottori lähettää yhden pyynnön Vertipaqille ja toisen pyynnön DirectQuery-tietolähteeseen. Molemmissa tapauksissa analyysipalvelut myös hakevat datavälimuistin sekä Vertipaqista että DirectQuerysta. Kaavamoottori käyttää sitten JOIN-toimintoa,, tai mikä tahansa iteraatio molemmissa datavälimuistissa ennen tulosten toimittamista loppukäyttäjälle.

Oletetaan siis, että yrität visualisoida raportissasi myynnin määrän tuotteen tuotemerkin mukaan. Kaavamoottori lähettää pyynnön Vertipaqille, josta se hakee tuotteen, brändin ja tuoteavaimen. Sitten se yrittää hakea DirectQuerysta myynnin, nettohinnan, myyntimäärän ja myyntituoteavaimen.

Kun sillä on kaksi tuoteavaimeen perustuvaa datavälimuistia, se yhdistää kaksi tietovälimuistia ja laskee kokonaismyyntimäärän. Sitten se esittää tulokset loppukäyttäjälle.

Muita kriittisiä kohtia tallennusmoottorista

Nyt kun olemme käsitelleet sen eri tyyppejä, on muutamia muita tärkeitä tekijöitä, jotka sinun on tiedettävä tallennusmoottorista, jotta voit optimoida DAX-kyselysi.

Kuten olen aiemmin maininnut, tallennuskone toimittaa datavälimuistin takaisin kaavamoottorille pakkaamattomana tietovälimuistina. Kun olet tuontitilassa, Vertipaqille prosessissa takaisin lähetettävä pyyntö suoritetaan xmSQL-kielellä.

XmSQL-kieli on jossain määrin samanlainen kuin SQL, mutta ei täysin sama. Aiomme puhua xmSWL:stä yksityiskohtaisesti, kun puhumme kyselysuunnitelmista toisessa opetusohjelmassa.

On myös tärkeää muistaa, että tallennusmoottori käyttää kaikkia prosessorissasi olevia ytimiä. Mahdollisuus käyttää useita ytimiä on hyödyllistä, jos tietomallissasi on useita segmenttejä.

Oletetaan, että sinulla on LuckyTemplatesissa taulukko, jossa on 12 miljoonaa riviä. Tämä taulukko jaetaan sitten 12 segmenttiin, koska sekä Power Pivotissa että LuckyTemplatesissa kuhunkin segmenttiin mahtuu miljoona riviä. Tämä on toisin kuin analyysipalveluissa yleensä, joissa yhteen segmenttiin mahtuu 8 miljoonaa riviä.

Joten jos minulla on kuusi ydintä prosessorissani, kaikki kuusi ydintä skannaavat kuusi ensimmäistä 12 segmentistä samanaikaisesti. Kun ne on tehty, ne siirtyvät seuraaviin kuuteen osioon.

Mutta jos työskentelen analyysipalveluiden kanssa, joissa oletussegmentissä on 8 miljoonaa riviä, kuudesta ytimestäni käytetään vain kahta – yksi segmentti käsittelee 8 miljoonaa riviä ja toinen 4 miljoonaa.

Monimutkaisten kyselyiden käsittely

Aiemmin mainitsin, että tuontitila tukee vain perustoimintoja, kuten MIN, MAX, SUM, COUNT ja GROUPBY. Mitä sitten tapahtuu, jos työskentelet monimutkaisempien kyselyiden parissa?

Oletetaan, että päätät käyttää IF-lausetta rivikontekstissa tai sisäkkäistä iteraatiota, kuten SUMX, Tuotteet- ja Myyntitaulukoiden päällä.

Tässä tapauksessa tallennuskone ei pysty ratkaisemaan kyselyä itse. Sen jälkeen se kutsuu kaavamoottoria, joka alkaa ratkaista monimutkaisen laskennan rivi riviltä tallennuskoneen sisällä. Jotkut saattavat ajatella, että tämä on suotuisa skenaario, jossa molemmat moottorit toimivat yhdessä - mutta tämä on kaukana totuudesta.

Näet, kun näin tapahtuu, tallennuskoneen tuottamaa tietovälimuistia ei voida tallentaa välimuistiin, jos kyseisessä kyselyssä on callbackdataID. Joten jos päivität visuaalisen kuvan, sekä kaavamoottorin että tallennusmoottorin on suoritettava sama laskenta, vaikka suoritit juuri saman kyselyn muutama sekunti sitten. Tämä johtaa suorituskykyviiveisiin ja huonoon käyttökokemukseen.

Huomaa myös, että tallennuskone ei tiedä, suoritettiinko kyselyt DAX:n vai MDX:n avulla. Kuten aiemmin mainitsimme, kaavamoottorin tehtävänä on muuntaa kyselyt oikealle kielelle ennen kyselysuunnitelman välittämistä.

Lopuksi kaavamoottori lähettää kyselyt tallennuskoneeseen yksitellen. Tämä tarkoittaa, että useiden segmenttien käyttäminen on todellakin parempi, jotta Vertipaqin kokonaisskannausaikaa voidaan lyhentää, kun useita segmenttejä skannataan samanaikaisesti.




Johtopäätös

Tallennusmoottorin läpikotaisin ymmärtäminen auttaa todella optimoimaan DAX-kyselyjäsi, varsinkin jos käytät DAX Studiota. Jos olet käynyt läpi myös kaavamoottoria selittävän opetusohjelman, voit tehdä parempia päätöksiä tehokkaampien kyselyjen luomisesta.

Vaikka kaavamoottori toimii huipputason moottorina, ei ole epäilystäkään siitä, etteikö se voi toimia yhtä hyvin, jos emme maksimoi molempia moottoreita.

Kaikki parhaat,


Budjetin jako: kuukausittaiset ennusteet päivittäisten tulosten perusteella LuckyTemplatesissa

Budjetin jako: kuukausittaiset ennusteet päivittäisten tulosten perusteella LuckyTemplatesissa

Tässä opetusohjelmassa käyn läpi LuckyTemplatesin budjetin allokointialgoritmin, jossa vertaat kuukausittaisia ​​ennusteita päivittäiseen myyntiin.

Edistyneen logiikan käyttäminen LuckyTemplatesissa kokonaissummasi korjaamiseen

Edistyneen logiikan käyttäminen LuckyTemplatesissa kokonaissummasi korjaamiseen

Opi, kuinka saat laskelmissasi olevat summat oikein käyttämällä kehittyneitä DAX-kaavoja ja edistynyttä logiikkaa LuckyTemplatesissa.

PowerApps-näkymät ja -lomakkeet: Luominen ja mukauttaminen

PowerApps-näkymät ja -lomakkeet: Luominen ja mukauttaminen

Lue lisää PowerApps-näkymistä ja -lomakkeista sekä niiden luomisesta ja mukauttamisesta juuri luomaasi sovellusta varten.

LuckyTemplates-raporttimallit laajennettu – LuckyTemplatesin visualisointikonseptit

LuckyTemplates-raporttimallit laajennettu – LuckyTemplatesin visualisointikonseptit

Tässä blogi-opetusohjelmassa sukeltaan LuckyTemplates-raporttipohjien mukauttamiseen ja taloudellisen tiedon visualisointiin tehokkaasti.

LuckyTemplates-raporttien suunnittelu – rajattomat mahdollisuudet

LuckyTemplates-raporttien suunnittelu – rajattomat mahdollisuudet

Tältä näyttää upea LuckyTemplates-raporttien suunnittelu. Se on käyttövalmis suunnittelu, jossa hyödynnetään työkaluvihjeitä ja kirjanmerkkejä eeppisen navigoinnin kanssa.

LuckyTemplates KÄYTTÖYHTEYDET Vs HOITOT

LuckyTemplates KÄYTTÖYHTEYDET Vs HOITOT

Opi ero LuckyTemplates USERELATIONSHIP- ja TREATAS-funktion välillä, joita molempia käytetään luotaessa DAX-mittoja.

Upouusi kurssi: Microsoft Excel aloittelijoille

Upouusi kurssi: Microsoft Excel aloittelijoille

Upouusi kurssi: Microsoft Excel aloittelijoille

ISNULL SQL -funktio tapauslausekkeissa

ISNULL SQL -funktio tapauslausekkeissa

Opi ja ymmärrä, kuinka voit käyttää CASE-käskyä yhdessä ISNULL SQL-funktion kanssa palauttamaan arvon, kun siinä on NULL-arvo.

LuckyTemplates Dashboard Design – vaikuttava sivun kääntämisen visualisointiidea

LuckyTemplates Dashboard Design – vaikuttava sivun kääntämisen visualisointiidea

LuckyTemplates Dashboard -esimerkkejä, Opi ja ymmärrä kuinka luoda innovatiivisin sivua kääntävä visualisointi ilme LuckyTemplates Dashboard -suunnitteluun näillä yksinkertaisilla vaiheilla!

Scatter Plot In R Script: Kuinka luoda ja tuoda

Scatter Plot In R Script: Kuinka luoda ja tuoda

Tässä opetusohjelmassa opit luomaan R-sirontakaavion visualisoinnin LuckyTemplatesissa käyttämällä R Script -visuaalia.