Ga naar hoofdinhoud Ga naar aanvullende inhoud

Kale veldreferenties

Een veld geldt als kaal, als het niet in een aggregatiefunctie is opgenomen.

Een kale veldreferentie is een reeks die mogelijk verschillende waarden bevat. Als Qlik Sense niet weet welke waarde u nodig hebt, worden de waarden geëvalueerd als NULL.

Gebruik altijd een aggregatiefunctie in uw uitdrukking

Als uw uitdrukking niet correct wordt geëvalueerd, is er een grote kans dat deze niet over de juiste aggregatiefunctie beschikt.

Bij een veldreferentie in een uitdrukking is er sprake van een reeks waarden. Bijvoorbeeld:

Twee tabellen, een laat zien dat Max(Invoice Date) een enkele waarde is, en een die laat zien dat Invoice Date een reeks waarden is.

Twee tabellen, een laat zien dat Max(Invoice Date) een enkele waarde is, en een die laat zien dat Invoice Date een reeks waarden is.

U moet het veld Factuurgegevens in een aggregatiefunctie insluiten zodat deze tot een enkele waarde kan worden samengevoegd.

Als u geen aggregatiefunctie in uw uitdrukking gebruikt, gebruikt Qlik Sense standaard de functie Only(). Als de veldreferentie meerdere waarden retourneert, interpreteert Qlik Sense dit als NULL.

Factuurdatums opsplitsen met behulp van de If()-functie

De If()-functie wordt vaak gebruikt voor voorwaardelijke aggregaties. Hij retourneert een waarde afhankelijk van het feit of de opgegeven voorwaarde wordt geëvalueerd als True of False.

In de app, op het werkblad Naked field references vindt u een tabel met de naam Using If() on Invoice dates.

  1. Selecteer de beschikbare tabel met de naam Using If() on Invoice dates.
    Het eigenschappenvenster wordt geopend.
  2. Klik op Kolom toevoegen en selecteer Meting.
  3. Klik op het symbool Uitdrukking.
    De uitdrukkingseditor opent.
  4. Voer het volgende in: If( [Invoice Date]>= Date(41323), 'After', 'Before' )
  5. Klik op Toepassen.

Tabel die de factuurdatums toont, opgedeeld door middel van een referentiedatum.

Tabel die de factuurdatums toont, opgedeeld door middel van een referentiedatum.

Deze uitdrukking test of de Invoice Date voor de referentiedatum 18-02-2013 ligt en retourneert 'Before' als dit zo is. Als de datum later of gelijk aan de referentiedatum 18-02-2013 is, wordt 'After' geretourneerd. De referentiedatum wordt uitgedrukt als het gehele getal 41323.

Ga voor meer informatie naar if - script- en diagramfunctie

Kale veldreferenties voorkomen

In eerste instantie lijkt het of deze uitdrukking correct is:

If([Invoice Date]>= Date(41323) 'After', 'Before')

Deze moet de factuurdatums na de referentiedatum evalueren, 'After' retourneren of anders 'Before' retourneren. Invoice Date is echter een kale veldreferentie, deze heeft geen aggregatiefunctie, en vormt daarmee een reeks die meerdere waarden bevat en zal daardoor NULL evalueren. In het vorige voorbeeld hadden we het geluk dat onze tabel maar één Invoice Date per Date-waarde bevat, waardoor de uitdrukking correct werd berekend.

Laten we eens kijken hoe een vergelijkbare uitdrukking onder een andere dimensiewaarde uitpakt en hoe we de problemen met kale veldreferenties oplossen:

Kale veldreferenties voorkomen in een If()-functie

We gebruiken een zelfde uitdrukking als zonet:

If([Invoice Date]>= Date(41323), Sum(Sales))

Deze keer telt de functie de verkoop na de referentiedatum op.

In de app, op het werkblad Naked field references vindt u een tabel met de naam Sum(Amount).

  1. Selecteer de beschikbare Sum(Amount)-tabel.
    Het eigenschappenvenster wordt geopend.
  2. Klik op Kolom toevoegen en selecteer Meting.
  3. Klik op het symbool Uitdrukking.
    De uitdrukkingseditor opent.
  4. Voer het volgende in: If( [Invoice Date]>= 41323, Sum(Sales) )
  5. Klik op Toepassen.

Tabel met een overzicht per jaar, met de totale verkoop van elk jaar en de resultaten van de uitdrukking met behulp van de If()-functie.

Tabel met een overzicht per jaar, met de totale verkoop van elk jaar en de resultaten van de uitdrukking

TipLaat het waardelabel bij de metingen intact om de verschillen tussen de uitdrukkingen te tonen. Bij kolommen met geldwaarden wijzigen we de Getalnotatie in Geld en het Opmaakpatroon in $ #,##0;-$ #,##0.

Bij elk jaar staat een reeks factuurdatums vermeld die na de referentiedatum komen. Aangezien onze uitdrukking geen aggregatiefunctie heeft, wordt deze geëvalueerd tot NULL. Een correcte uitdrukking moet een aggregatiefunctie gebruiken, zoals Min() of Max() in de eerste parameter van de If()-functie:

If(Max([Invoice Date])>= Date(41323), Sum(Sales))

  1. Klik op Kolom toevoegen en selecteer Meting.
  2. Klik op het symbool Uitdrukking.
    De uitdrukkingseditor opent.
  3. Voer het volgende in: If( [Invoice Date]>= Date(41323), Sum(Sales) )
  4. Klik op Toepassen.

Tabel met een overzicht per jaar, met de totale verkoop van elk jaar en de resultaten van de verschillende uitdrukkingen met behulp van de If()-functie.

Tabel met een overzicht per jaar, met de totale verkoop van elk jaar en de resultaten van de verschillende uitdrukkingen

Als alternatief kan de If()-functie binnen de Sum()-functie worden gezet:

Sum(If([Invoice Date]>= Date(41323), Sales) )

  1. Klik op Kolom toevoegen en selecteer Meting.
  2. Klik op het symbool Uitdrukking.
    De uitdrukkingseditor opent.
  3. Voer het volgende in: Sum( If([Invoice Date]>= Date(41323), Sales ) )
  4. Klik op Toepassen.

Tabel met een overzicht per jaar, met de totale verkoop van elk jaar en de resultaten van de verschillende uitdrukkingen met behulp van de If()-functie.

Tabel met een overzicht per jaar, met de totale verkoop van elk jaar en de resultaten van de verschillende uitdrukkingen

In de tweede tot en met de laatste uitdrukking werd de If()-functie eens per dimensiewaarde geëvalueerd. In de laatste uitdrukking werd de functie eens per rij in de onbewerkte gegevens geëvalueerd. Doordat de functie verschillend wordt geëvalueerd, zijn de resultaten verschillend, maar ze retourneren beiden een antwoord. De eerste uitdrukking wordt simpelweg geëvalueerd als NULL. De bovenstaande afbeelding toont het verschil tussen de uitdrukkingen, waarbij 18-02-2013 als referentiedatum is genomen.

Was deze pagina nuttig?

Als u problemen ervaart op deze pagina of de inhoud onjuist is – een typfout, een ontbrekende stap of een technische fout – laat het ons weten zodat we dit kunnen verbeteren!