Som van rijen in draaitabellen
In QlikView kunt u als totalen voor een standaard tabel kiezen tussen een eenvoudige som van de rijen en een totaal door middel van een berekende uitdrukking. Voor draaitabellen biedt QlikView deze keuze niet. Draaitabeltotalen worden altijd berekend als uitdrukkingstotaal.
Dit is gewoonlijk geen probleem, omdat bij een verschil van de twee soorten totalen de som van de rijen maar zelden relevant is.
Met deze waarschuwing in het achterhoofd behandelen we in de volgende sectie een voorbeeld waarbij het totaal op basis van de som van de rijen toch het gewenste resultaat oplevert.
Voorbeeld:
In dit voorbeeld is er een schoolwedstrijd waarbij teams van drie personen punten krijgen op basis van hun cijfers voor drie verschillende vakken. Het team mag de hoogste score binnen de groep kiezen voor elk individueel vak en de drie hoogste scores vervolgens optellen voor een totaal. De volgende gegevens zijn gelezen door het script:
Een strakke tabel met Class als dimensie en Max(Score) als uitdrukking levert de volgende som van rijen op:
Als de strakke tabel werd geconverteerd naar een draaitabel die altijd wordt berekend als uitdrukkingstotaal in plaats van som van rijen, zou er een probleem zijn:
In dit specifieke geval wordt het totaal 12 verwacht en is 5 niet geschikt. In dit geval kan de functie Aggr in de uitdrukking worden gebruikt, niet in de dimensie.
De oorspronkelijke uitdrukking is ingesloten in een Aggr-functie en de omliggende diagramdimensie wordt ook als dimensie in de Aggr-functie gebruikt. Nu wordt deze bundel gebruikt als argument in een Sum-aggregatie. De tabel toont nu het verwachte totaal:
Het mooie van de geavanceerde functie is dat in de afzonderlijke rijen slechts één waarde wordt geëvalueerd. Dat komt doordat de dimensie maar één mogelijke waarde heeft in elke gewone gegevensrij. Daar de inwendige dimensie en uitdrukking gelijk zijn aan die voor de grafiek er omheen, is elke waarde natuurlijk precies gelijk aan het resultaat zonder de omsluitende Sum- en geavanceerde aggregatiefuncties.
Voor de rij met totalen levert de geavanceerde aggregatiefunctie echter drie waarden op, een voor elke waarde van het dimensieveld. Deze worden op hun beurt weer opgeteld door de Sum-aggregatie. Hoewel het formeel een uitdrukkingstotaal betreft, is het resultaat gelijk aan dat van de som van de rijen.