Modyfikatory zestawów

Aby zmodyfikować zestaw, należy dodać do niego selekcję lub zmienić istniejącą selekcję. Taką modyfikację można zapisać w wyrażeniu zestawu.

Modyfikator składa się z dowolnej liczby nazw pól, a po każdej nazwie podana jest selekcja dokonywana w danym polu. Całość jest ujęta w znaki < i >. Na przykład: <Year={2007,+2008},Region={US}>. Nazwy i wartości pól mogą być w zwykły sposób umieszczane w cudzysłowach, na przykład <[Sales Region]={’West coast’, ’South America’}>.

Modyfikator zestawu modyfikuje selekcję poprzedniego identyfikatora zestawu. Jeśli brak jest odniesienia do identyfikatora zestawu, uznaje się za taki bieżący stan selekcji.

Poniżej opisano kilka sposobów definiowania selekcji.

Na podstawie innego pola

Prostym zastosowaniem jest dokonanie selekcji na podstawie wartości wybranych w innym polu, na przykład <OrderDate = DeliveryDate>. Taki modyfikator spowoduje pobranie wybranych wartości z pola DeliveryDate i zastosowanie ich jako selekcji w polu OrderDate. Jeśli odrębnych wartości jest wiele (więcej niż kilkaset), taka operacja bardzo obciąża procesor i nie jest zalecana.

Na podstawie zestawów elementów

Najbardziej typowym przykładem wyrażenia zestawu jest wyrażenie oparte na liście wartości pól ujętych w nawiasy klamrowe. Wartości są rozdzielane przecinkami — na przykład <Year = {2007, 2008}>. Nawiasy klamrowe definiują zestaw elementów, którymi mogą być jawne wartości pól albo wyszukiwania wartości pól.

Jeśli wartości z listy nie zawierają spacji ani znaków specjalnych, cudzysłowy nie są potrzebne. Wartości z listy zostaną po prostu dopasowane do wartości pola. Wielkość liter w tym porównaniu nie ma znaczenia.

Jeśli wartości z listy zawierają spacje lub znaki specjalne, lub jeśli wymagane jest używanie symboli wieloznacznych, wówczas takie wartości należy ująć w znaki cudzysłowu. Jeśli wartości z listy są jawnymi wartościami pola, należy użyć pojedynczych cudzysłowów. W takim przypadku zostaną dokonane dopasowania (z rozróżnianiem wielkości liter) między wartościami z listy a wartościami poszczególnych pól.

W przypadku wyszukiwań, tj. ciągów zawierających symbole wieloznaczne lub zaczynających się od operatora relacyjnego albo znaku równości, należy używać cudzysłowów podwójnych. Na przykład <Ingredient = {"*Garlic*"}> spowoduje wybranie wszystkich składników, które zawierają ciąg znaków „Garlic”. Cudzysłowy podwójne można zastąpić nawiasami — na przykład <Ingredient = {[*Garlic*]}>. Cudzysłowy podwójne można również zastąpić znakami słabego akcentu — na przykład <Ingredient = {`*Garlic*`}>. W wyszukiwaniach wielkość liter nie jest rozróżniana.

Uwaga:

W poprzednich wersjach QlikView cudzysłowy pojedyncze nie były odróżniane od podwójnych i wszystkie ciągi znaków w cudzysłowach były traktowane jak wyszukiwania. W celu zachowania zgodności z poprzednimi wersjami dokumenty utworzone w starszych wersjach QlikView nadal będą działać tak samo, jak w poprzednich wersjach. Dokumenty utworzone w wersji QlikView November 2017 lub w nowszych wersjach uwzględniają różnice między tymi dwoma typami cudzysłowów.

Wykluczenie wymuszone

W przypadku pól w trybie And można korzystać z wykluczenia wymuszonego. Aby wymusić wykluczenie wartości wybranych pól, należy podać znak „~” przed nazwą pola.

Przykłady i wyniki:  

Przykłady Wyniki
sum( {1<Region= {USA} >} Sales ) Zwraca wartość sprzedaży dla regionu USA, ignorując bieżącą selekcję.
sum( {$<Region = >} Sales ) Zwraca wartość sprzedaży dla bieżącej selekcji, ale usuwa selekcję w wymiarze Region.
sum( {<Region = >} Sales )

Zwraca tę samą wartość co w przykładzie podanym bezpośrednio powyżej. Jeśli modyfikowany zestaw zostanie pominięty, zakładany jest parametr $.

Uwaga: Składnia w dwóch poprzednich przykładach zostanie zinterpretowana jako „brak selekcji” w wymiarze Region, czyli możliwe będą wszystkie regiony z innymi selekcjami. Nie jest to odpowiednik składni <Region = {}> (lub umieszczenia po prawej stronie znaku równości innego tekstu niejawnie powodującego zwrócenie pustego zestawu elementów), która jest interpretowana jako „brak regionu”.
sum( {$<Year = {2000}, Region = {US, SE, DE, UK, FR}>} Sales ) Zwraca wartość sprzedaży dla bieżącej selekcji, ale z nowymi selekcjami w wymiarach Year i Region.
sum( {$<~Ingredient = {“*garlic*”}>} Sales )

Pole Ingredient znajduje się w trybie AND.

Zwraca wartość sprzedaży dla bieżącej selekcji, ale z wykluczeniem wymuszonym wszystkich składników zawierających ciąg znaków garlic.

sum( {$<Year = {“2*”}>} Sales ) Zwraca wartość sprzedaży dla bieżącej selekcji, ale z wybranymi w polu Year wszystkimi latami zaczynającymi się od cyfry 2 (czyli zazwyczaj od roku 2000).
sum( {$<Year = {“2*”,”198*”}>} Sales ) Podobnie jak powyżej, ale teraz w selekcji uwzględnione są również lata 80. XX wieku.
sum( {$<Year = {“>1978<2004”}>} Sales ) Zwraca wartość sprzedaży dla bieżącego wyboru, ale z wyszukiwaniem liczbowym służącym do określenia zakresu lat w celu zsumowania tamtejszej sprzedaży.