Introducció
És molt habitual en informes de PowerBI tenir la necessitat de comparar dades respecte a períodes de temps anteriors, bé sigui per a fer una comparativa contra el mes anterior, contra l’any anterior o altres intervals de temps, dependrà de les necessitats d’anàlisis que tinguem. En llenguatge DAX, per a poder usar Funcions d’intel·ligència de temps, serà necessari la creació d’una taula de Calendari. Sense ella, no serem capaços de calcular mesures tan necessàries com comparar les vendes respecte al mateix període que tinguem seleccionat de l’any passat o poder veure la variació en % respecte la setmana passada de mida a analitzar. A part de permetre usar les funcions d’intel·ligència de temps, tenir una taula calendari en el nostre model de dades ens permetrà vincular simultàniament diferents taules, de tal forma que el filtre de data pot ser comuna en més d’una taula facilitant la navegabilitat en l’informe. A més, un altre benefici important a tenir en compte, és la creació d’altres elements rellevants com pot ser identificar els dies de cap de setmana o entre setmana. En aquest article, veurem com podem crear una taula de Calendari en llenguatge DAX. A més, també veurem com relacionar la taula calendari amb una taula de vendes i crearem un gràfic per a ser capaços d’analitzar les vendes d’un any respecte l’any anterior, trimestre a trimestre. Som-hi.
Creació taula Calendari
El primer que farem és obrir l’aplicació de PowerBi Desktop i una vegada oberta premerem la pestanya de “Modelatge” situada en la cinta d’opcions. Una vegada seleccionada, marcarem l’opció “Nova Taula”, ja que el codi que escriurem, genera una taula en el sistema.
Quan premem “Nova taula” se’ns obre una barra amb el text “Taula =” subratllat, similar a la d’Excel. Aquí és on hem d’introduir el codi que ens generarà la taula de calendari.
A la barra de text, introduirem el següent codi. Només fa falta escriure el contingut exactament igual al de la imatge (es facilita el codi perquè es pugui descarregar al final de l’article). Una vegada copiat, premem Intro i ja tindrem la taula de dates creada. El que té de bo crear d’aquesta forma el calendari, és que podem reutilitzar la fórmula per a altres informes de PowerBI amb tan sols copiar i pegar el codi.
Per a veure les dades en format taula anirem al segon dels tres botons que hi ha en la part esquerra superior del PowerBI desktop un botó en forma de matriu que es diu “Dades”.

A continuació, us vam mostrar les dades de la taula generada del 25 de juny al 5 de juliol, perquè es vegin els canvis de dia, setmana, mes, trimestre i semestre a mesura que avancen els dies. Una primera imatge fins a la columna de “Trimestre”
Segona imatge de les mateixes línies. Es mostren columnes restants.
Una vegada creada la taula, realitzarem alguns passos necessaris per a una correcta interpretació i visualització de les dades. El primer pas i més important serà marcar la taula de calendari com a taula de dates. Per a fer-ho, quan estiguem visualitzant les dades de la taula, marcarem l’opció de la pestanya de la cinta d’opcions “Eines de taules” i premerem l’opció “Marcar com a taula de dates” – “Marcar com a taula de dates”.
En prémer sobre aquesta opció, se’ns obrirà la següent finestra i haurem de seleccionar la columna “Data” com a columna de referència de la taula de dates, li donarem a acceptar i ja tenim la nostra taula marcada.
El segon de tots serà ordenar aquelles columnes que s’ordenen en funció d’una altra columna, per exemple la columna “Mes”. Per què és necessària l’ordenació de la columna “Mes” en funció d’una altra columna? Perquè per defecte, el sistema ens la ordena de manera alfabètica. Vegem què passa si arrosseguem la variable “Mes” en el llenç de PowerBI i el vam mostrar en una taula. Per a anar al llenç, hem anat al botó de “Informe”, just damunt del de “Dades”.

Evidentment, tenir ordenats les dades d’aquesta forma no ens està donant cap informació útil, per a això el que farem serà tornar a l’opció de “Dades” on es visualitzen les taules, seleccionarem la columna de “Mes” i quan la capçalera de la columna es quedi ressaltada de color groc, premerem l’opció “Ordenar per columna” i seleccionarem l’opció “MesNro”. D’aquesta forma la columna de “Mes” ens quedarà ordenada per número de mes i no per ordre alfabètic.
Si tornem a l’informe, veurem com els mesos ja ens apareixen ordenats segons l’ordre natural de temps establert.

A continuació, farem el propi per a les següents columnes:
- Nom de dia – Ordenat per Dia Setmana
- Trimestre – Ordenat per TrimNro
- Semestre – Ordenat per SemNro
- M-I – Ordenat per SortMonthYear
- T-I – Ordenat per SortTrimYear
- S-I – Ordenat per SortSemYear
El tercer pas serà ocultar aquelles variables que no s’usaran per a la visualització de dades, com per exemple les que hem utilitzat per a l’ordenació. Hi ha diverses maneres de fer-ho, la més directa i fàcil és seleccionar la columna en qüestió, per a l’exemple TrimNro, i seleccionem la capçalera amb el botó dret del ratolí i seleccionem l’opció “Ocultar en la vista d’informes”, d’aquesta forma ja no ens apareixerà en la vista d’informes i no ens molestarà. Farem el mateix amb les altres columnes que no necessitem que es mostrin en l’informe. S’identifiquen ràpidament donis de la vista de les taules ja que la capçalera de la columna es queda ombrejada de color gris.
Creació mesures intel·ligència de temps
A més de la taula de dates que hem creat, hem carregat en el nostre model una taula amb línies de venda amb la següent estructura:
Per a la càrrega de l’arxiu (al final de l’article el tindreu disponible per a la seva descàrrega) utilitzarem la importació de dades Excel
Seleccionem l’arxiu on l’hàgim guardat i se’ns obrirà el navegador. Hem de seleccionar “Ventas1” com es mostra en la imatge i veurem una previsualització de la taula que carregarem. Li donem a “Carregar” i ja tindrem la nostra taula dins del model de PowerBI.
Una vegada tenim carregada la taula de vendes en el model, necessitarem fer una petita transformació en les dades. En aquest cas seleccionarem la columna “Client” i en “Tipus de dades” triarem l’opció “Text”, perquè tracti el codi del client com a text i no com un nombre enter. També podem aprofitar per a canviar el tipus de data que es mostra en “Data registro”, ja que per defecte està en format llarg i és possible que ens interessi més tenir-ho en format de data curta. En aquest cas seleccionaríem la columna “Data registro” i buscarem en la cinta d’opcions el camp desplegable “Format” per a seleccionar el format de data desitjat.
El que farem a continuació serà relacionar la nostra taula de dates amb la taula de vendes, crear un filtre de data, crear una mesura de vendes, una mesura de vendes last year i una taula en la qual es mostrarà per client i trimestre la diferència de vendes respecte la data seleccionada i l’any anterior. El que farem serà anar a la part del “Model”. Aquí veurem les taules “Vendes” i “dDate” i el que farem és arrossegar el camp “Data registro” de la taula de Vendes i el vincularem al camp “Data” de la taula dDate.
Automàticament el sistema detecta que es tracta d’una relació d’1 a N (Taula data -> Vendes), per això apareix un asterisc en la taula de vendes i un 1 en la taula dDate.
Una vegada tenim totes dues taules relacionades, ens anirem a l’informe i seleccionarem el camp “Segmentació de dades” en la part de “Visualitzacions”. Li assignarem la variable “Data” perquè quedi com en la imatge. Per defecte el sistema agafa la data mínima i la data màxima que hàgim introduït en el calendari. Modificarem les dates perquè agafi l’interval 01/01/XXX1 – 31/12/XXX1+1 de tal forma que tinguem 2 anys naturals entre el mínim i el màxim seleccionat.
El següent pas serà la creació d’una mesura amb el nom de “Vendes”, en aquest cas per a les vendes. Així que en la cinta d’opcions, buscarem l’opció “Nova Mesura” i la premerem.
A la barra que se’ns obre especificarem el codi següent:
Aquesta mesura ens calcularà la suma de l’import de vendes, en funció dels filtres que tinguem en l’informe, així com els filtres de context en els objectes. Tornem a crear una altra mesura, aquesta vegada calcularem les vendes comparant contra l’any anterior, per a això usarem la funció CALCULATE, passarem la mesura “Vendes” que acabem de crear, i dins del CALCULATE afegirem la funció DATEADD. Com a primera expressió de DATEADD, passarem el camp de data de la taula calendari (dDate[Data]), com a segona expressió indicarem el nombre d’intervals que volem moure’ns, en el nostre cas -1 perquè volem comparar contra 1 any enrere, i com tercera expressió indicarem “Year”. En cas de voler comparar contra 1 mes enrere, especificaríem “Month” en lloc de “Year”. Fàcil, veritat?
Ara que tenim les mesures creades, triarem en les visualitzacions l’opció taula i arrossegarem els següents camps en la part de valors: Camp T-I de la taula de dates, mesura Vendes i mesura Vendes LY.
Veiem com l’import de T1-18 en la columna de vendes coincideix amb l’import de T1-19 en la columna Vendes LY, per la qual cosa podem afirmar que el càlcul de les mesures és correcte.
El que farem ara és transformar aquest objecte visual a matriu. L’única cosa que hem de fer és seleccionar l’objecte visual i prémer l’opció de “matriu” en l’apartat de visualitzacions. Ja per a acabar, mourem la variable “T-I” a les columnes, en les files especificarem la variable “Clients” i ja tindrem la nostra matriu creada, ara només ens farà falta donar-li una mica de color i afegir un format de barres proporcionals a les vendes per client a la mesura vendes.
Per a això premerem la fletxa que apunta cap avall a la mesura de “Vendes” -> Format condicional -> Barra de dades
Seleccionarem el color que preferíem i ja tenim la nostra taula acabada
Autor – Bernat Duran – Consultor Power BI
Vols el excel de dades i el codi per a poder copiar i pegar?