top of page

Dataöar

I Qliks datamodeller pratar man ibland om dataöar - en eller flera tabeller hänger inte ihop med den övriga modellen. Dataöar kan uppstå av misstag och de kan också vara skapade med vilje.

I bilden ovan finns två dataöar som är inringade. Man ser enkelt dataöar i Data Model Viewer genom att alla tabeller inte hänger ihop med varandra.


Användningsfall

Det finns i huvudak två användningsfall där man medvetet bygger dataöar. Det första kan vara att applikationen innehåller olika typer av data t.ex. på olika ark. Urval i den ena datamängden ska inte påverka den andra. Det andra fallet handlar om urval som inte direkt filtrerar datamodellen med association utan värden som används i variabler och liknande.


Olika typer av data i samma applikation

Data av olika typ, t.ex. försäljning och lagertransaktioner, kan läsas in i en applikation och data hanteras separat. Detta kan till exempel vara för att visa en sammanställning av olika mätetal i en översiktsapplikation eller att en användargrupp med två områden av data har en och samma applikation.


Detta är oftast inte en optimal lösning då de två datamängderna ofta har något gemensamt som man aktivt behöver separera för att inte nycklar ska uppstå. Om man använder QlikView med licenstypen Doc CALs bryter detta dessutom mot licensvillkoren:

... the Document CAL can only be used with QlikView documents that have a single contiguous data model and do not contain any chasm traps between tables.

Se mer information på Qliks sida om licensvillkor.


En bättre lösning är ofta att sammanfoga faktatabeller och ha gemensamma dimensioner alternativt dela upp applikationen i flera.


Värden för urval och liknanade

Ett bättre användningsfall är att lägga upp data som ska användas indirekt för filtreringar, för att styra visning av objekt etc. Ett sätt att hantera olika visningsvalutor i en försäljningsapplikation vara att låta användaren gör ett urval på valuta och sedan omvandla alla fakturabelopp med hjälp av en associerad kurs. Med detta sätt översätter man alla värden till valutan med samma kurs.


Uttrycken skulle i detta fall kunna bli exempelvis: sum(UnitPrice*Quantity*$(=only(CurrencyRate))


Här är CurrencyRate ett fält i den separata dataön där användaren har gjort ett urval på valuta. Med dollar sign expansion kan utvecklaren hämta det aktuella värdet från fältet.


Problemområden

Man bör vara mycket försiktig med att blanda fält från olika dataöar i ett och samma uttryck. Om vi fortsätter på exemplet med valutakurs ovan kan man fundera på varför man inte skriver uttrycket som: sum(UnitPrice*Quantity*CurrencyRate)


Problemet med detta är att Qlik för att koppla ihop informationen inte har några nycklar i modellen att använda. Således uppstår en kartesisk produkt - kombinationen av alla rader - i den kub som skapas i bakgrunden. Om fakturatabellen innehåller 100 miljoner rader och det finns 10 olika valutor kommer kuben att hantera motsvarande 100,000,000*10 = 1 miljard rader.


Skriven av: Morgan Kejerhag

Morgan Kejerhag har arbetat med Qlik-plattformen sedan 2005 och är en av Sveriges mest erfarna konsulter. Under åren har Morgan arbetat med flertalet multinationella bolag där han lett arbetet i att bygga upp stora Qlik-miljöer såväl som små kunder. LinkedIn