Set-modifierare
Ett set kan modifieras genom att ett val läggs till eller ändras. En sådan ändring kan skrivas in i set-uttrycket.
Modifieraren består av ett eller flera fältnamn, som vart och ett följs av ett val som ska göras på just det fältet. De omsluts alla av < och >. Exempelvis: <Year={2007,+2008},Region={US}>. Fältnamn och fältvärden kan få citattecken som vanligt, exempelvis: <[Sales Region]={’West coast’, ’South America’}>.
En set-modifierare förändrar urvalet av föregående set-identifierare. Om det inte finns någon hänvisning till en set-identifierare är det aktuella urvalstillståndet implicit.
Det finns olika sätt att ange urvalet, vilket beskrivs nedan.
Baserat på ett annat fält
Ett enkelt fall är ett urval baserat på de valda värdena i ett annat fält, exempelvis <OrderDate = DeliveryDate>. Denna modifierare tar de valda värdena från DeliveryDate och applicerar dem som ett val på OrderDate. Om det finns många distinkta värden, fler än några hundra, blir denna åtgärd processorkrävande och bör därför undvikas.
Baserat på elementuppsättningar
Det vanligaste exemplet på ett set-uttryck är ett uttryck som baseras på en lista med fältvärden som omsluts av klammerparenteser. Värdena avgränsas med kommatecken, till exempel <Year = {2007, 2008}>. Klammerparenteserna definierar en uppsättning element (ett set), där elementen kan vara explicita fältvärden eller sökningar i fältvärden.
Citattecken behövs bara användas om värdena i listan innehåller blanksteg eller specialtecken. Värdena i listan matchas helt enkelt med fältvärdena. Den här jämförelsen är inte skiftlägeskänslig.
Om angivna värden innehåller blanksteg eller specialtecken, eller om du vill använda jokertecken, måste du omsluta värdena med citattecken. Enkla citattecken ska användas om värdena i listan är explicita fältvärden. Då görs skiftlägeskänsliga matchningar mellan värdena i listan och de enskilda fältvärdena.
Dubbla citattecken ska användas vid sökningar, d.v.s. strängar som innehåller jokertecken eller inleds med en relationsoperator eller ett likhetstecken. Uttrycket <Ingredient = {"*Garlic*"}> väljer till exempel alla ingredienser som innehåller strängen 'Garlic'. Dubbla citattecken kan ersättas med hakparenteser, till exempel <Ingredient = {[*Garlic*]}>. Dubbla citattecken kan även ersättas med akuta accenter, till exempel <Ingredient = {`*Garlic*`}>. Sökningar är inte skiftlägeskänsliga.
I tidigare versioner av QlikView gjordes ingen skillnad mellan enkla och dubbla citattecken, och alla strängar inom citattecken behandlades som sökningar. För att säkerställa bakåtkompatibiliteten kommer de dokument som har skapats med äldre versioner av QlikView att fortsätta att fungera på samma sätt som tidigare. Dokument som har skapats med QlikView November 2017 eller senare versioner kommer att göra skillnad mellan enkla och dubbla citattecken.
Tvingande bortval
För fälten i och-läge, slutligen, finns även möjligheten att göra tvingade bortval. Om man vill forcera bortval av specifika fältvärden måste man använda ”~” framför fältnamnet.
Exempel och resultat:
Exempel | Resultat |
---|---|
sum( {1<Region= {USA} >} Sales ) | Returnerar försäljningen för regionen USA och ignorerar det aktuella valet. |
sum( {$<Region = >} Sales ) | Returnerar försäljningen för det aktuella valet, men valet i 'Region' har tagits bort. |
sum( {<Region = >} Sales ) |
Returnerar samma resultat som exemplet strax ovanför. När det set som ska modifieras är utelämnat antas $. Anteckning om informationSyntaxen i de två tidigare exemplen tolkas som ”inga val” i ”Region”, dvs alla regioner som getts andra val är möjliga. Detta motsvarar inte syntaxen <Region = {}> (eller vilken annan text som helst till höger om likhetstecknet som implicit resulterar i ett tomt element-set) som tolkas som ingen region.
|
sum( {$<Year = {2000}, Region = {US, SE, DE, UK, FR}>} Sales ) | Returnerar försäljningen för det aktuella valet, men med nya val både i "Year" och "Region". |
sum( {$<~Ingredient = {“*garlic*”}>} Sales ) |
Fältet Ingredient är i AND-läge. Returnerar försäljningen för det aktuella urvalet, men med tvingande bortval av alla ingredienser som innehåller strängen ”garlic”. |
sum( {$<Year = {“2*”}>} Sales ) | Returnerar försäljningen för det aktuella valet, men med alla år som inleds med siffran "2", d.v.s. mest sannolikt år 2000 och framåt, som är valda i fältet "Year". |
sum( {$<Year = {“2*”,”198*”}>} Sales ) | Enligt ovan, men nu inkluderas 1980-talet i urvalet. |
sum( {$<Year = {“>1978<2004”}>} Sales ) | Returnerar försäljningen för de aktuella urvalen, men en numerisk sökning används för att ange det årsintervall som försäljningen ska summeras för. |
Om du vill tvinga att specifika fältvärden utesluts från objekt som textobjekt måste du ändra skriptets syntax. Om du till exempel har den här satsen i ditt skript:
=count({<ANDActor=>}DISTINCT Title)
Gör du den här ändringen:
=count({<~ANDActor=, ANDActor=>}DISTINCT Title)