CalcDim - diagramfunctie
Als ze worden gebruikt in een dimensieuitdrukking, overschrijft CalcDim() de automatische interpretatie van de engine voor de interne afhandeling van de uitdrukking. De functie voorkomt dat er een nieuw intern veld wordt gemaakt in het gegevensmodel. In plaats daarvan worden selecties die zijn gemaakt in de app behandeld als selecties in toepasselijke velden van het originele gegevensmodel.
Deze functie kan niet worden gebruikt in het load-script. Bovendien is het voor systeemprestaties een best practice om, indien mogelijk, de velden die in de berekende dimensie worden gebruikt, als logische velden via het load-script te laden. CalcDim() biedt een manier om het gedrag van de engine te regelen in scenario's waarin het laden van het berekende veld vanuit het script niet mogelijk is.
In Qlik Sense wordt de dimensie-uitdrukking standaard gerealiseerd als een veld-on-the-fly—dat wil zeggen, als een daadwerkelijk veld, zichtbaar in de huidige selectiestaaf, dat op aanvraag wordt gebouwd. Selecties worden toegepast en afgeleid op dit veld, vergelijkbaar met elk logisch veld uit de script.
Een expressie verpakt in CalcDim() zal zich op dezelfde manier gedragen als alle berekende dimensie-expressies werken in QlikView 12, wat een ad-hoc toewijzing is van de berekende waarden aan de onderliggende bronveldwaarden. Alle on-the-fly veldberekeningen kunnen worden overgezet naar berekende dimensies met behulp van de CalcDim() functie, aangezien de berekende dimensie aan minder vereisten hoeft te voldoen op basis van het gegevensmodel dan de overeenkomstige on-the-fly veldberekening. Deze transformatie kan wenselijk zijn om een vergelijkbaar gedrag te garanderen voor alle berekende dimensies, waar het gegevensmodel het gebruik van een 'field-on-the-fly'-berekening in sommige gevallen kan verhinderen, maar in andere niet.
Syntaxis:
CalcDim(expr)
Retourgegevenstypen: dubbele waarde
| Argument | Beschrijving |
|---|---|
| expr |
Een expressie die wordt gebruikt als een dimensie, of als een segment binnen een dimensie-expressie. |
Wanneer gebruikt u CalcDim
CalcDim() is nuttig wanneer u meer controle nodig heeft over hoe de Qlik engine omgaat met de velden die u aanroept in een dimensie-uitdrukking.
Standaard bepaalt Qlik Sense automatisch of interne velden in het gegevensmodel moeten worden aangemaakt en ernaar moet worden verwezen wanneer u een aangepaste dimensie-uitdrukking gebruikt. Qlik Sense maakt en gebruikt deze interne velden wanneer dit mogelijk is. Wanneer dit niet mogelijk is, wordt de expressie afgehandeld met verwijzing naar de bestaande gegevensmodelvelden waarop deze berust.
Afhankelijk van uw gebruiksscenario is deze automatische verwerking mogelijk niet altijd wenselijk. Bijvoorbeeld, als u een variabele gebruikt in een dimensie-uitdrukking, kan het automatisch aanmaken van nieuwe velden problematisch worden. In dit geval, gebruik CalcDim() om de expressie te dwingen verwerkt te worden zonder deze methode.
Hier volgen enkele van de meest voorkomende gebruiksscenario's:
-
U hebt QlikView 12 inhoud gemigreerd naar Qlik Sense en u wilt de QlikView 12 verwerkingsmethode voor berekende dimensies behouden.
-
U wilt het selectiegedrag in uw app vereenvoudigen. U wilt bijvoorbeeld veldselecties weergeven als selecties in velden uit het oorspronkelijke gegevensmodel, in plaats van selecties in nieuwe velden.
-
Uw gebruiksscenario vereist een ad-hoc expressie voor consistentie en prestaties. Bijvoorbeeld, als uw dimensie-uitdrukking gebruikersgestuurde dynamische visualisatieparameters bevat, zoals configureerbare opmaak, afkapwaarden of perioden.
| Voorbeeld | Resultaat |
|---|---|
| =CalcDim(if(Year < 2023, 'Older', Year)) |
Een selectie maken in een visualisatie die deze dimensie gebruikt, wordt verwerkt en weergegeven als een selectie in de bijbehorende Year veldwaarde uit het gegevensmodel. Omgekeerd, stel dat u de expressie niet omhult in CalcDim(). In dit geval zou het er zo uitzien: =if(Year < 2023, 'Older', Year) Een selectie maken in de bovenstaande expressie zou worden verwerkt en weergegeven als een selectie in het interne veld =if(Year < 2023, 'Older', Year), dat niet in het gegevensmodel zit. |