Power Queryssa tietojen ryhmittely ja aggregointi ovat keskeisiä toimenpiteitä, jotka mahdollistavat monipuolisen datan analysoinnin ja tiivistämisen. Kun tiedot ryhmitellään esimerkiksi myyjän ja kaupungin mukaan, voidaan samalla suorittaa erilaisia laskelmia, kuten kokonaismyynnin summaaminen, tapahtumien lukumäärän laskeminen sekä tuotteiden esiintymistiheyden selvittäminen. Näiden operaatioiden suorittaminen onnistuu suoraan Power Queryn käyttöliittymästä, mutta joskus tarvitaan edistyneempiä tapoja muokata ja hienosäätää laskelmia suoraan M-koodissa.

Ryhmittelyn käynnistämiseksi valitaan ryhmiteltävät sarakkeet ja käytetään Group By -toimintoa. Tällöin Power Query avaa monipuoliset ryhmittelyasetukset, jotka tarjoavat valmiita aggregaatiotyökaluja kuten summa, erillisten rivien laskenta ja mediaani. Huomionarvoista on, että aggregointia valittaessa tulee tarkasti määritellä oikeat sarakkeet ja tietotyypit. Esimerkiksi tekstimuotoisen sarakkeen summan laskeminen aiheuttaa virheen, joka korjataan vaihtamalla summattava sarake numeeriseen, kuten tulotietoihin.

M-koodissa ryhmittely ja aggregointi näyttäytyvät funktioina, jotka suorittavat laskelmia valituilla tietoryhmillä. List.Sum laskee lukujen summan, Table.RowCount palauttaa rivimäärän ja Table.Distinct poistaa duplikaatit rivit, mahdollistaen erilaisten lukumääräfunktioiden käytön. Mediaanilaskelma List.Median palauttaa keskimmäisen arvon järjestetystä listasta, mikä ei kuitenkaan aina vastaa haluttua toimintoa, kuten yleisimmän tuotteen löytämistä, jolloin laskelmaa on syytä muokata.

Power Queryn toiminnallisuudet tarjoavat myös mahdollisuuden muokata aggregaatiotoimintoja jälkikäteen avaamalla ryhmittelyikkunan uudelleen ja säätämällä esimerkiksi summattavan sarakkeen tiedon tyyppiä tai vaihtamalla funktiota. Näin voidaan varmistaa virheettömät ja tarkoituksenmukaiset tulokset ilman, että koko prosessi tarvitsee aloittaa alusta.

Funktiot löytyvät kätevästi Power Queryn koodieditorista, jossa automaattinen täydennys ehdottaa käytettävissä olevia listafunktioita. Lisäksi lyhyt kuvaus funktiosta on helposti saatavilla, mikä nopeuttaa oikean työkalun valintaa. Mikäli käytössä on vanhempi versio, jossa täydennystä ei ole, funktioita kannattaa etsiä Microsoftin virallisesta dokumentaatiosta.

Tärkeää on ymmärtää, että ryhmittely ja aggregointi eivät ole pelkästään laskutoimituksia, vaan ne muodostavat perustan laajemmalle tiedon analysoinnille. Oikein hyödynnettynä ne auttavat hahmottamaan datan rakennetta, tunnistamaan keskeiset muuttujat ja luomaan helposti tulkittavia yhteenvetoja, jotka tukevat päätöksentekoa. Lisäksi Power Queryn virheenkäsittely ja mahdollisuus vaiheittaiseen muokkaamiseen takaavat joustavuuden ja datan laadun varmistamisen koko analyysiprosessin ajan.

Miten käyttää Power Queryn List- ja Table-funktioita tehokkaasti?

Power Query tarjoaa monia tehokkaita funktioita, joiden avulla voimme käsitellä ja muokata tietoja taulukoissa. Yksi yleisimmistä tehtävistä on ryhmitellä tietoja, laskea aggregaatteja tai löytää tietynlaisia arvoja. Tällaisia toimintoja tarjoavat muun muassa List.Mode ja List.Modes -funktiot, jotka auttavat meitä laskemaan listan tai sarakkeen yleisimmin esiintyvän arvon tai arvot. On tärkeää tuntea, kuinka nämä funktiot toimivat, jotta voimme käyttää niitä oikein ja tehokkaasti.

Power Queryn virallisella verkkosivustolla, kuten kuvassa 4.25 näkyy, löytyy kattava ohjeistus Power Queryn M-kielestä ja sen funktioista. Verkkosivustolta voimme etsiä toimintoja hakukentän avulla tai tutustua eri aihealueisiin, kuten List-funktioihin, jotka näkyvät kuvassa 4.26. Täältä löytyy myös yksityiskohtaiset kuvaukset siitä, kuinka List.Modes-funktio palauttaa yleisimmin esiintyvät arvot listasta ja List.Mode-funktio palauttaa vain yhden yleisimmän arvon. Jos arvot toistuvat yhtä usein, List.Mode palauttaa viimeisen näistä arvoista.

Kun työstämme tietoja Power Queryssa, kannattaa ottaa huomioon, että joissakin tilanteissa on parempi käyttää List.Modes-funktiota, koska se mahdollistaa useampien yleisesti esiintyvien arvojen palauttamisen. Jos esimerkiksi korvaamme List.Median-funktion List.Modes-funktiolla, on myös tärkeää varmistaa, että tietotyyppi on oikea (lista). Tämä on tärkeää, koska Power Queryn laskutoimitukset voivat vaatia oikeanlaista tietotyyppiä toimiakseen oikein.

Mikäli käytämme ryhmittelytoimintoja, kuten Table.Group, voimme lisätä lisää tietoa ryhmittelemällä tiedot tietyillä kriteereillä. Esimerkiksi, jos haluamme yhdistää useita tekstiarvoja tietyllä erottimella, voimme käyttää Text.Combine-funktiota, joka yhdistää tekstiarvot tietyn merkin avulla. Tämä voi olla hyödyllistä, kun työskentelemme monimutkaisempien tietokokonaisuuksien kanssa ja haluamme yhdistää samankaltaisia tietoja yhteen soluun ilman, että luomme erillisiä rivejä. Näin ollen, Text.Combine on työkalu, joka voi nopeuttaa monivaiheisia käsittelyprosesseja.

Esimerkiksi, jos haluamme ryhmitellä tiedot kaupan ja kaupungin mukaan ja laskea niihin liittyvät summat ja tuotteet, voimme käyttää seuraavaa M-koodia:

m
= Table.Group(#"Changed Type", {"Merchant", "City"}, {{"Sum", each List.Sum([Income]), type nullable number}, {"# transactions", each Table.RowCount(Table.Distinct(_)), Int64.Type}, {"Most frequently sold", each Text.Combine(List.Modes([Product]), ", "), type nullable text}, {"Product list", each Text.Combine(List.Sort(List.Distinct([Product])), ", "), type nullable text}})

Tämä koodi ryhmittelee tiedot "Merchant" (kauppa) ja "City" (kaupunki) mukaan, laskee tulojen summan ja laskee tuotteet, jotka ovat eniten myytyjä. List.Modes-funktion avulla voimme saada usein esiintyvät tuotteet yhdistettynä tekstiksi ja listattuina, erottimena pilkku.

Power Queryn ryhmittelyt voivat olla myös paikallisia, eli meidän ei tarvitse yhdistää kaikkia samanlaisia arvoja, vaan voimme ryhmitellä vain peräkkäiset samankaltaiset arvot. Esimerkiksi, jos säätila on "Pilvinen" kahdella ensimmäisellä päivällä ja "Aurinkoinen" seuraavilla kolmella, voimme käyttää tätä käsittelytapaa, jotta saamme nämä päivät ryhmiteltyä omiin jaksoihinsa. Tämä voidaan toteuttaa käyttämällä GroupKind.Local-asetusta, joka ei ryhmittele koko dataa yhdeksi osaksi, vaan vain peräkkäiset arvot.

Kun Power Queryssa ryhmitellään tietoja ja käytetään useita funktioita yhdessä, on tärkeää huomioida, että Excelin lajittelu toimii eri tavalla kuin Power Query. Power Queryssa tärkein sarake lajitellaan ensin, kun taas Excelissä se lajitellaan viimeiseksi. Tämä ero voi aiheuttaa sekaannusta, joten on tärkeää olla tietoinen siitä, miten lajittelu toimii Power Queryn ja Excelin välillä.

On myös muistettava, että M-koodin tarkastelu ja ymmärtäminen voivat auttaa meitä optimoimaan kyselyjämme ja välttämään tarpeettomia vaiheita. Koodin kirjoittaminen käsin voi tuoda lisää joustavuutta ja tehokkuutta verrattuna pelkkään käyttöliittymän kautta tapahtuvaan käsittelyyn. Tämän lisäksi, jos muutamme koodissa käyttämämme funktion nimeä, joka ei ole käyttöliittymässä tuettu, kuten Group By -vaiheessa, se voi poistaa sen vaiheen käyttöliittymästä. Tässä tapauksessa voimme kirjoittaa koodia suoraan kaavapalkissa ja välttää käyttöliittymän rajoitukset.

Kun tiedot on ryhmitelty ja haluttu käsittely suoritettu, voimme ladata tulokset Exceliin. Kuitenkin on tärkeää huomioida, että ennen tietojen lataamista on hyvä varmistaa, että ne ovat oikein lajiteltuja ja valmiita tarkasteltavaksi. Näin saamme varmempia ja tarkempia tuloksia analyysistamme.

Miten muuntaa ja puhdistaa tietoja Power Queryssa tehokkaasti

Power Query tarjoaa laajat mahdollisuudet datan muokkaamiseen ja siistimiseen, mutta sen käyttö vaatii huolellista suunnittelua ja oikeiden toimintojen valitsemista. Yksi yleisimmistä tehtävistä, jota Power Queryllä käsitellään, on rivien ja sarakkeiden kääntäminen, puuttuvien arvojen käsittely ja tietojen yhdistäminen. Tällöin on tärkeää ymmärtää, miten muunnoskomennot, kuten "Transpose", "Merge Columns" ja "Unpivot", vaikuttavat taulukoiden rakenteeseen ja kuinka ne auttavat muuntamaan tietoja haluttuun muotoon.

Esimerkiksi, kun taulukossa on kuukausitietoja yhdellä sarakkeella ja vastaavat arvot, kuten työtunnit ja kustannukset, toisessa sarakkeessa, on tarpeen muuntaa taulukko niin, että nämä tiedot yhdistetään oikealla tavalla. Tämä saavutetaan usein transponointitoiminnolla. Tällöin rivit muuttuvat sarakkeiksi ja päinvastoin, mutta on tärkeää muistaa, että alkuperäiset otsikot eivät säily. Transponoinnin jälkeen sarakkeet saavat oletusnimet, ja alkuperäiset tiedot ovat uudessa rakenteessa.

Kun tämä transponointi on tehty, ensimmäinen sarake sisältää kuukaudet, mutta myös tyhjät arvot eli null-arvot. Tässä vaiheessa voidaan käyttää "Fill Down" -komentoa, joka täyttää puuttuvat arvot alhaalta ylös. On kuitenkin huomioitava, että null-arvot eivät muutu, sillä niiden yläpuolella ei ole kiinteitä arvoja, jotka voisivat ohjata muutoksen. Tämä on hyödyllinen vaihe, sillä nyt kaikki kuukaudet ovat oikeassa muodossa ja valmiita yhdistettäväksi muiden arvojen kanssa.

Kun tiedot on yhdistetty, voidaan käyttää "Merge Columns" -komentoa. Tällöin ensimmäiset kaksi saraketta yhdistetään yhdeksi sarakkeeksi. Jos käytetään null-arvoa tekstin yhdistämiseen, tulos sisältää vain tekstin, mutta erotinmerkit voivat näkyä ennen tai jälkeen yhdistetyn tekstin riippuen siitä, kummalla puolella null-arvo on. Tällöin voidaan määrittää, että erotinta ei käytetä lainkaan, kuten ohjeessa neuvotaan.

Transponoinnin ja sarakkeiden yhdistämisen jälkeen voidaan jälleen käyttää "Transpose"-komentoa, jonka jälkeen "Use First Row as Headers" -toiminto varmistaa, että taulukon ensimmäinen rivi asetetaan sarakeotsikoiksi. Tämä vaihe on oleellinen, sillä Power Query tunnistaa automaattisesti sarakkeiden tietotyypit ja säilyttää ne.

Seuraavaksi on mahdollista käsitellä numerotietoja, jotka voivat sisältää null-arvoja. Näiden kohdalla voidaan käyttää "Replace Values" -toimintoa, jolla null-arvot korvataan nollalla. Tämä on tärkeä vaihe, sillä se varmistaa, että laskennalliset arvot ovat oikeassa muodossa, ja puuttuvat tiedot täyttyvät nollilla.

Tietojen jatkokäsittelyssä käytetään usein "Unpivot"-komentoa, jonka avulla valitaan ne sarakkeet, joita halutaan muuttaa riveiksi. Tämä on erityisen hyödyllistä silloin, kun sarakkeet sisältävät kategorioita, jotka halutaan muuntaa riveiksi. On kuitenkin tärkeää huomioida, että tällöin voidaan joutua käsittelemään uusia haasteita, kuten tekstiarvojen yhdistämistä ilman erottimia. Tällöin voidaan käyttää "Split Column" -toimintoa, joka jakaa arvot tietyllä merkkimäärällä. Tämä mahdollistaa tietojen oikeanlaisen jakamisen ja muotoilun.

Esimerkiksi, jos kuukauden nimet ovat lyhennettyjä kolmekirjaimisia, kuten "Jan", "Feb", "Mar" jne., voidaan käyttää "Split Column by Number of Characters" -komentoa jakamaan tekstit oikealla tavalla. Tämä voidaan tehdä myös hyödyntämällä tekstifunktioita, kuten "Text.Start", "Text.End" tai "Text.Middle", jolloin voidaan dynaamisesti valita, kuinka monta merkkiä otetaan alkuosasta, loppuosasta tai keskeltä tekstiriviä. Tällöin saadaan tarkasti halutut tiedot ilman, että koko teksti joudutaan pilkkomaan liian monella tavalla.

Power Queryn versioissa, joissa on uudemmat toiminnot, voidaan myös käyttää "By Lowercase to Uppercase" -komentoa, joka jakaa tekstin jokaisen siirtymän mukaan pienistä isoihin kirjaimiin. Tämä on erityisen hyödyllistä silloin, kun halutaan jakaa yhdistetyistä arvoista tietoja ilman, että tarvitsee määrittää tarkkoja merkkirajoja.

Kun kaikki nämä vaiheet on suoritettu, voidaan tietojen käsittelyä jatkaa "Pivot"-komennolla, joka luo uusia sarakkeita taulukkoon, ja näin saadaan siistitty ja valmiiksi muokattu taulukko. Tämä voi tarkoittaa esimerkiksi sitä, että tiedot esitetään helposti analysoitavassa muodossa, ja ne ovat valmiita käytettäväksi esimerkiksi Excelissä tai muissa analysointityökaluissa.

Kaiken kaikkiaan Power Queryn käyttö voi tuntua monivaiheiselta ja jopa haastavalta, mutta oikeilla muunnoksilla ja toiminnoilla saadaan aikaan puhdasta, järjestettyä ja analysoitavaa tietoa. Tärkeintä on ymmärtää, miten eri toiminnot, kuten transponointi, yhdistäminen, ja jakaminen, vaikuttavat datan rakenteeseen ja miten ne auttavat muuntamaan tietoja haluttuun muotoon. Tämä mahdollistaa tehokkaan datan käsittelyn ja takaa luotettavat tulokset.

Miten Power Queryn ehdolliset lauseet ja loogiset operaattorit auttavat ylityötuntien laskemisessa ja datan analysoinnissa?

Power Queryn ehdolliset lauseet ja loogiset operaattorit muodostavat tehokkaan työkalupaketin, joka mahdollistaa monimutkaisten tietojen analysoinnin ja automaattisten päätösten tekemisen. Erityisesti ylityötuntien laskeminen vaatii tarkkaa ehtojen asettelua ja datatyyppien käsittelyä, sillä työajan tietoja käsitellään sekä kestoina (#duration) että numeerisina arvoina. Tämä vaatii syvällistä ymmärrystä Power Queryn M-kielen rakenteista, kuten if-lauseista, ja, tai -operaattoreista sekä virheiden hallinnasta.

Ylityötuntien määrittelyssä periaate on, että kaikki kahdeksan tunnin ylittävä työaika luetaan ylityöksi. Tämän analyysin lähtökohtana on työskenneltyjen tuntien vertailu kiinteään kynnysarvoon, joka esitetään #duration-funktion avulla muodossa #duration(0, 8, 0, 0). Power Query muuntaa annetun ajan automaattisesti keston muotoon, mutta käyttäjän on varottava virheellisiä muotoiluja, kuten ajan merkitsemistä tekstinä, joka johtaa tyyppivirheisiin. Tästä seuraa, ettei yksinkertaisesti voi kirjoittaa kaavaa esimerkiksi "[Work Time] – 8:00" suoraan käyttöliittymän ehdollisen sarakkeen kenttään, koska se tulkitaan tekstiksi eikä laskutoimitukseksi.

M-kielen if-lauseen yleinen syntaksi on:
if ehto then tulos else vaihtoehtoinen_tulos
Tässä ehtolauseessa ehto on looginen vertailu, esimerkiksi [Work Time] > #duration(0, 8, 0, 0). Jos ehto toteutuu, suoritetaan ylityötuntien lasku vähentämällä kahdeksan tunnin kesto työajasta, muussa tapauksessa palautetaan nolla. Kuitenkin laskutoimituksen suorittaminen edellyttää, että molemmat operandit ovat samantyyppisiä, tässä tapauksessa #duration-tyyppiä. Power Query ei tee automaattista tyyppimuunnosta kuten Excel, mikä korostaa käsin tehtävän muunnoksen merkitystä.

Virhetilanteissa kuten "Operation between Duration and Text is not valid" tulee ymmärtää, että Power Queryn jäykkä datatyyppien hallinta vaatii eksplisiittistä konversiota. Esimerkiksi Duration.From("08:00") muuntaa tekstin keston muotoon. Toisaalta, kun halutaan vähentää kiinteä aika, on järkevintä käyttää suoraan #duration-funktiota.

Lisäksi, Power Queryssä voi yhdistää useita ehtoja loogisilla operaattoreilla kuten and, or, mikä mahdollistaa monipuolisemmat arvioinnit esimerkiksi ylityön lisäksi bonuspalkkioiden määrittelyssä tai poissaolopäivien laskennassa. Näitä voi myös rakentaa sisäkkäin eli käyttää niin sanottuja "nested if"-lauseita, jolloin eri rajojen ja ehtojen perusteella annetaan erilaisia arvosanoja tai luokituksia.

Virheiden hallinta on keskeinen osa, sillä datassa voi esiintyä puuttuvia arvoja tai odottamattomia tietotyyppejä. Power Queryn try-funktio auttaa käsittelemään tällaisia poikkeustilanteita sulavasti ilman koko analyysin keskeytymistä.

Edellä kuvattujen periaatteiden hallinta mahdollistaa dynaamisen raportoinnin, jossa työaika- ja poissaolotiedot voidaan yhdistää, verrata peräkkäisiin riveihin ja näin seurata esimerkiksi työaikojen kehitystä tai puuttuvien tuntien kertymistä. Vertailu edelliseen riviin voidaan toteuttaa yhdistämällä taulukoita merge-toiminnolla tai käyttämällä

Miten hallita Power Query -virheitä ja parantaa tietojen muunnosprosessia?

Power Queryn käyttäminen monimutkaisessa tietojen muuntamisessa on monivaiheinen prosessi, joka vaatii huolellista huomiota ja virheiden hallintaa. Yksi yleisimmistä haasteista on sarakkeiden nimeämisvirheet, jotka voivat johtaa virheisiin myöhemmissä vaiheissa, kuten "Removed Other Columns1" -vaiheessa. Tämä virhe voidaan korjata lisäämällä uusi sarakkeen nimi M-koodiin, kuten esimerkiksi näin: = Table.SelectColumns(#"Renamed Columns1", {"Country", "Transform File"}).

Tietojen muuntaminen vaatii myös tarkempaa käsittelyä, kuten tekstin erottamista tietyistä merkkirajoista. Esimerkiksi, jos halutaan poistaa pisteen jälkeen oleva teksti "Country"-sarakkeesta, voidaan käyttää "Text Before Delimiter" -komentoa. Tässä esimerkissä piste toimii rajoittimena, jonka avulla voidaan poimia vain se osa tekstistä, joka on ennen pistettä. Tämän jälkeen, vaikka tiedon muuntaminen on suoritettu, saattaa olla tarpeen määrittää oikeat tietotyypit ennen tietojen lataamista Exceliin.

Kun tietoja käsitellään, on tärkeää huomioida, että kaikki muunnokset eivät ole tarpeen aina heti, kuten esimerkiksi silloin, kun tiedot ladataan suoraan Exceliin.