Hvordan bruke MDX i TM1

Intensjonen med dette innlegget er å gi en kort og enkel introduksjon til hvordan du kan lage dynamiske dimensjonsundergrupper ved hjelp av MDX i TM1. TM1 tillater kun bruk av MDX i subset editering. Dette betyr at bruken av MDX i TM1 er ganske annerledes enn bruken av MDX i andre produkter og programvarer. Det kan også være ganske utfordrende å finne teori om bruken på internett eller i bøker.

MDX står for Multi Dimensional Expressions og er et bransjestandardspråk for OLAP-databaser som TM1 eller databaser fra Microsoft. OLAP er en forkortelse for «OnLine Analytical Processing» som er en analytisk metode for datauttrekk. Det er viktig å presisere at TM1 ikke støtter alle aspekter ved MDX-språket og faktisk legger til noen unike egenskaper selv, som er TM1-spesifikt. Dette er en av grunnene til at det er vanskelig å bruke etablerte eksempler på nett.

Et dynamisk delsett er en spørring som blir revurdert hver gang delmengden blir tatt i bruk. Dette avhenger av dimensjonsvalg, kubeverdier eller lignende. Dynamisk = Resultatet endres.

Noen eksempler på nyttige dynamiske delsett kan være en liste over alle produkter på basisnivå, en liste over topp ti kunder til enhver tid eller alle kostsentere som enda ikke har blitt budsjettert. Poenget er at disse listene kan variere fra sekund til sekund basert på strukturen eller data i modellen. For eksempel så snart en ny filial er lagt til i Europa vil den europeiske grenens undergruppe umiddelbart inneholde denne nye grenen uten at manuelle inngrep er nødvendig. MDX er søkespråket som brukes for å definere disse listene. Når du definerer et utvalg eller delsett med MDX fremfor å lage et statisk delsett er det vedlikeholdsfritt, da spørringen med dine forutsetninger kjøres hver gang du ser på data i din modell.

En annen grunn til at delsettet endres er at det er basert på verdiene i en kube eller i et attributt. Vi kan på daglig basis se i avisen at aksjemarkedet er listet med topp ti aksjer når det baseres på aksjekursvekst. I en TM1 modell vil det være et delsett som ser på aksjekursendringene og vil med det returnere et nytt sett med ti medlemmer hver dag. Når delsettet er dynamisk satt opp med MDX går dette helt av seg selv, men for å opprette et MDX-basert delsett i TM1 må du opprette et nytt delsett til en dimensjon. Deretter må du huke av for «dynamisk» og skrive inn eventuelle regler i uttrykksvinduet (se illustrasjonen under). Merk at det er irrelevant hvilken kube dimensjonen brukes i, du får nemlig samme resultat om du åpner dimensjonen fra en kubevisning eller et innholdstre.

Jeg kan gi et eksempel på en MDX syntax, der regelen returnerer medlemmer av dimensjonen som er større enn «amount»:

{FILTER( {TM1FILTERBYLEVEL( {TM1SUBSETALL( [Product] )}, 0)},
[Test].([Product].CurrentMember.NextMember, [Posting Measures].[Amount]) >
[Test].([Product].CurrentMember, [Posting Measures].[Amount]) )}

MDX kan forenkle mye i din TM1 løsning, og gjøre enkelte utvalg automatiske. RAV bistår gjerne med å se på hvordan dynamiske delsett kan gi dine løsninger mer verdi. Ta kontakt med oss i skjemaet under for uformell dialog.


Om forfatteren

Jannicke Aarstad

Lyst å lære mer om dette?

Del denne artikkelen