Litistäminen tarkoittaa useamman hierarkkisen taulun yhdistämistä yhdeksi leveäksi tauluksi ennen sen käyttöä semanttisessa tietomallissa. Tavoitteena on muuttaa lumihiutalemainen rakenne tähtimallin mukaiseksi: yksi dimensio, yksi taulu.
Litistäminen kannattaa tehdä tietovarastoon ETL-prosessin muunnosvaiheessa (Transform), ennen kuin data ladataan käytettäväksi. Lähdejärjestelmässä tieto on normalisoituna useampaan tauluun; ETL-vaihe yhdistää ne yhdeksi leveäksi dimensioksi JOIN-operaatioilla tai SQL-näkymällä.
Dokumentoi data lineage: mitkä lähdetaulut yhdistyvät, millä avaimilla ja missä järjestyksessä. Tämä tieto on kriittistä sekä debuggauksessa että tietomallin ylläpidossa.
CREATE VIEW V_D_Kustannuspaikka AS
SELECT
kp.KpID,
kp.Kustannuspaikka,
kp.KpID & ' – ' & kp.Kustannuspaikka AS KpAvain,
r.RyhmaID,
r.Liiketoimintaryhmä,
r.RyhmaID & ' – ' & r.Liiketoimintaryhmä AS RyhmaAvain,
y.YritysID,
y.Yritys,
y.YritysID & ' – ' & y.Yritys AS YritysAvain
FROM Kustannuspaikka AS kp
JOIN Liiketoimintaryhmä AS r ON kp.RyhmaID = r.RyhmaID
JOIN Yritys AS y ON r.YritysID = y.YritysID
Power BI:n VertiPaq-moottori on optimoitu tähtimallille: leveille, litteille tauluille, joissa on matala kardinaliteetti. Kun dimensiot ovat hajautettuna useampaan tauluun hierarkkisesti (lumihiutalemalli), syntyy tarpeettomia relaatioketjuja, jotka hidastavat kyselyitä ja tekevät DAX-koodaamisesta monimutkaisempaa.
Lumihiutalemallissa organisaatiorakenne voi näyttää tältä — kolme erillistä taulua, joissa tieto on hajautettuna hierarkkisesti:
| Yritys | YritysID |
|---|---|
| Yritys Oy | 1 |
| Liiketoimintaryhmä | RyhmaID | YritysID (FK) |
|---|---|---|
| Kuluttajaliiketoiminta | 10 | 1 |
| Yritysasiakkaat | 11 | 1 |
| Kustannuspaikka | KpID | RyhmaID (FK) |
|---|---|---|
| Helsinki-myymälä | 100 | 10 |
| Tampere-myymälä | 101 | 10 |
| Yrityspalvelut Etelä | 102 | 11 |
| KpID | Kustannuspaikka | RyhmaID | Liiketoimintaryhmä | YritysID | Yritys |
|---|---|---|---|---|---|
| 100 | Helsinki-myymälä | 10 | Kuluttajaliiketoiminta | 1 | Yritys Oy |
| 101 | Tampere-myymälä | 10 | Kuluttajaliiketoiminta | 1 | Yritys Oy |
| 102 | Yrityspalvelut Etelä | 11 | Yritysasiakkaat | 1 | Yritys Oy |
Hierarkian yläosien tieto (liiketoimintaryhmä, yritys) toistetaan joka rivillä. Tämä on tarkoituksellista. VertiPaq pakkaa toistuvat arvot tehokkaasti, joten muistikoko ei kasva merkittävästi.
| KpID | KpAvain | RyhmaID | RyhmaAvain | YritysID | YritysAvain |
|---|---|---|---|---|---|
| 100 | 100 – Helsinki-myymälä | 10 | 10 – Kuluttajaliiketoiminta | 1 | 1 – Yritys Oy |
| 101 | 101 – Tampere-myymälä | 10 | 10 – Kuluttajaliiketoiminta | 1 | 1 – Yritys Oy |
| 102 | 102 – Yrityspalvelut Etelä | 11 | 11 – Yritysasiakkaat | 1 | 1 – Yritys Oy |
Yhdistelmäkenttä yhdistää numeerisen avaimen ja nimen yhdeksi sarakkeeksi, esim.
KpAvain = KpID & " – " & Kustannuspaikka. Tämä mahdollistaa lajittelun numeerisen avaimen
mukaan samalla kun visuaaleissa näkyy selkokielinen nimi.