Set-modificaties
Een set kan worden gewijzigd door een aanvullende of gewijzigde selectie. Een dergelijke modificatie kan worden geschreven in de set-uitdrukking.
De modificatie bestaat uit een of meer veldnamen, elk gevolgd door een selectie die op het veld wordt toegepast en dit alles omsloten door < en >. Bijvoorbeeld: <Year={2007,+2008},Region={US}>. Veldnamen en veldwaarden kunnen zoals gebruikelijk tussen aanhalingstekens worden geplaatst, bijvoorbeeld <[Sales Region]={’West coast’, ’South America’}>.
Een set-modicatie wijzigt de selectie van de voorafgaande set-id. Als niet naar een set-id wordt verwezen, is de state van de huidige selectie impliciet.
Er zijn verschillende manieren om de selectie te definiëren. Deze worden hieronder beschreven.
Op basis van een ander veld
Een eenvoudig geval is een selectie op basis van de geselecteerde waarden van een ander veld, bijvoorbeeld <OrderDate = DeliveryDate>. Deze modificatie neemt de geselecteerde waarden uit DeliveryDate en past deze toe als selectie op OrderDate. Als er veel afzonderlijke waarden zijn – meer dan een paar honderd – vormt deze bewerking een te intensieve belasting van de processor en u dient deze dan te vermijden.
Op basis van elementsets
Het meest gebruikelijke voorbeeld van een set-uitdrukking is een set-uitdrukking op basis van een lijst met veldwaarden tussen accolades. De waarden worden door komma's van elkaar gescheiden, bijvoorbeeld <Year = {2007, 2008}>. De accolades definiëren een elementset, waarbij de elementen zowel expliciete veldwaarden als zoekopdrachten naar veldwaarden kunnen zijn.
Aanhalingstekens zijn niet nodig, behalve wanneer de waarden in de lijst spaties of speciale tekens bevatten. De waarden in de lijst worden simpelweg vergeleken met de veldwaarden. Deze vergelijking is niet hoofdlettergevoelig.
Als de waarden in de lijst spaties of speciale tekens bevatten of als u jokertekens wilt gebruiken, moet u de waarden tussen aanhalingstekens plaatsen. Enkele aanhalingstekens moeten worden gebruikt als de waarden in de lijst expliciete veldwaarden zijn. De waarden in de lijst worden dan vergeleken met de afzonderlijke veldwaarden, waarbij onderscheid wordt gemaakt tussen hoofdletters en kleine letters.
Dubbele aanhalingstekens moeten worden gebruikt voor zoekopdrachten, d.w.z. tekenreeksen die jokertekens bevatten of beginnen met een relationele operator of een isgelijkteken. Zo worden met <Ingredient = {"*Garlic*"}> alle ingrediënten geselecteerd die de tekenreeks “Garlic” bevatten. Dubbele aanhalingstekens kunnen worden vervangen door vierkante haakjes, bijvoorbeeld <Ingredient = {[*Garlic*]}>. Dubbele aanhalingstekens kunnen ook worden vervangen door accents graves, bijvoorbeeld <Ingredient = {`*Garlic*`}>. Zoekopdrachten zijn niet hoofdlettergevoelig.
In eerdere versies van QlikView werd geen onderscheid gemaakt tussen enkele en dubbele aanhalingstekens en werden alle tekenreeksen tussen aanhalingstekens als zoekopdrachten behandeld. Ten behoeve van achterwaartse compatibiliteit werken documenten die met een oudere versie van QlikView zijn gemaakt nog net als in eerdere versies. Bij documenten die met QlikView November 2017 of later zijn gemaakt, wordt het verschil tussen de twee typen aanhalingstekens in acht genomen.
Geforceerde uitsluiting
En ten slotte is er voor velden in AND-modus de mogelijkheid van afgedwongen uitsluiting. Als u de uitsluiting van bepaalde veldwaarden wilt afdwingen, moet u “~” gebruiken voor de veldnaam.
Voorbeelden en resultaten:
Voorbeelden | Resultaten |
---|---|
sum( {1<Region= {USA} >} Sales ) | Retourneert de verkopen voor de regio USA, waarbij de huidige selectie buiten beschouwing wordt gelaten |
sum( {$<Region = >} Sales ) | Retourneert de verkopen voor de huidige selectie, maar met de selectie in 'Region' verwijderd |
sum( {<Region = >} Sales ) |
Retourneert hetzelfde als in het voorbeeld hierboven. Wanneer de te modificeren set wordt weggelaten, wordt $ verondersteld. InformatieDe syntaxis in de voorgaande twee voorbeelden wordt geïnterpreteerd als 'Region', dat wil zeggen dat alle regio's met andere selecties mogelijk zijn. Dit is niet hetzelfde als de syntaxis <Region = {}> (of andere tekst aan de rechterkant van het is-gelijkteken die impliciet een lege elementset tot gevolg heeft), want deze wordt geïnterpreteerd als geen regio.
|
sum( {$<Year = {2000}, Region = {US, SE, DE, UK, FR}>} Sales ) | Retourneert de verkopen voor de huidige selectie, maar met nieuwe selecties in zowel 'Year' als 'Region'. |
sum( {$<~Ingredient = {“*garlic*”}>} Sales ) |
Het veld Ingredient bevindt zich in de AND-modus. Retourneert de verkopen voor de huidige selectie, maar met een geforceerde uitsluiting van alle ingrediënten die de tekenreeks 'garlic' bevatten. |
sum( {$<Year = {“2*”}>} Sales ) | Retourneert de verkopen voor de huidige selectie, maar voor alle jaren die beginnen met het cijfer "2", dat wil zeggen, waarschijnlijk vanaf het jaar 2000, geselecteerd in het veld 'Year'. |
sum( {$<Year = {“2*”,”198*”}>} Sales ) | Als boven, maar nu zijn ook de jaren tachtig opgenomen in de selectie. |
sum( {$<Year = {“>1978<2004”}>} Sales ) | Retourneert de verkopen voor de huidige selecties, maar met een numerieke zoekactie die wordt gebruikt om het bereik van jaren te bepalen waarvoor de verkopen moeten worden opgeteld. |
Als u de uitsluiting van bepaalde veldwaarden in objecten wilt forceren, zoals in tekstobjecten, moet u de syntaxis van het script wijzigen. Uw scriptopdracht is bijvoorbeeld als volgt:
=count({<ANDActor=>}DISTINCT Title)
Wijzig deze als volgt:
=count({<~ANDActor=, ANDActor=>} DISTINCT Title)