# 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 &lt; i &gt;. 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.

Informacja

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ładowe 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( {&lt;Region = &gt;} 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 $.<br><br>InformacjaSkł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 &lt;Region = {}&gt; (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( {$&lt;Year = {2000}, Region = {US, SE, DE, UK, FR}&gt;} Sales ) | Zwraca wartość sprzedaży dla bieżącej selekcji, ale z nowymi selekcjami w wymiarach Year i Region. |
| sum( {$&lt;~Ingredient = {“\*garlic\*”}&gt;} Sales ) | Pole Ingredient znajduje się w trybie AND.<br><br>Zwraca wartość sprzedaży dla bieżącej selekcji, ale z wykluczeniem wymuszonym wszystkich składników zawierających ciąg znaków garlic. |
| sum( {$&lt;Year = {“2\*”}&gt;} 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( {$&lt;Year = {“2\*”,”198\*”}&gt;} Sales ) | Podobnie jak powyżej, ale teraz w selekcji uwzględnione są również lata 80. XX wieku. |
| sum( {$&lt;Year = {“&gt;1978&lt;2004”}&gt;} 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. |

Informacja

Aby wymusić wyłączenie określonych wartości pól w obiektach takich jak obiekty tekstowe, należy zmodyfikować składnię skryptu. Na przykład, jeśli wyrażenie skryptu jest następujące:

`=count({<ANDActor=>}UNIKATOWY tytuł)`

Należy je zmodyfikować w następujący sposób:

`=count({<~ANDActor=, ANDActor=>} UNIKATOWY tytuł)`