集合修飾詞
集合可透過額外或變更的選項加以修改。這樣的修改可編寫於集合運算式中。
修飾詞的組成為一或數個欄位名稱、各個欄位的後面都加上要對該欄位做出的選項,然後全部括在 < 和 > 內。例如:<Year={2007,+2008},Region={US}>。欄位名稱和欄位值可照例以引號括住,例如 <[Sales Region]={’West coast’, ’South America’}>。
集合修飾詞可修改前面的集合識別碼選擇。如果沒有引用集合識別碼,則目前選項狀態是隱含的。
有許多方法可定義選項,如下所述。
以其他欄位為基礎
簡單的方式是,選項會以另一個欄位的選取值為基礎,例如 <OrderDate = DeliveryDate>。此修飾詞會取用 DeliveryDate 的選取值,然後將其套用為 OrderDate 的選項。如果有許多相異值 (超過幾百個),則此運算會需要大量的 CPU,應避免使用。
根據元素集合
最常見的例子是集合運算式以大括弧括起來的欄位值清單為基礎。這些值以逗號分隔,例如 <Year = {2007, 2008}>。大括弧用於定義元素集合,其中的元素可為明確的欄位值或欄位值的搜尋。
除非列出的值包含空格或特殊字元,否則不需要引號。列出的值會恰好符合欄位值。此比較不區分大小寫。
若列出的值包含空格或特殊字元,或者若您想要使用萬用字元,則您需要以引號將值括起來。若列出的值為明確的欄位值,則應使用單引號。而列出的值之間會區分大小寫,且將會產生個別的欄位值。
雙引號應用於搜尋,亦即包含萬用字元或以相關運算子或等號開始的字串。例如,<Ingredient = {"*Garlic*"}> 將會選取包含字串 ’Garlic’ 的所有成分。雙引號可用括弧替代,例如 <Ingredient = {[*Garlic*]}>。雙引號也能用抑音符號替代,例如 <Ingredient = {`*Garlic*`}>。搜尋不區分大小寫。
在先前版本的 QlikView 中,沒有區分單引號和雙引號的差異,所有引號內的字串皆作為搜尋來處理。為了維持回溯相容性,透過舊版 QlikView 建立的文件將會依照在先前版本中的運作方式繼續運作。透過 QlikView 2017 年 11 月或更高版本建立的文件,將會尊重兩種引號類型之間的差異。
強制排除
最後,處於 And 模式的欄位也可能會強制排除。若要強制排除特定的欄位值,則需要在欄位名稱前使用 “~”。
範例與結果:
範例 | 結果 |
---|---|
sum( {1<Region= {USA} >} Sales ) | 會傳回 USA 區域的銷售額,忽略目前選項 |
sum( {$<Region = >} Sales ) | 會傳回目前選項的銷售額,但移除「Region」選項 |
sum( {<Region = >} Sales ) |
會傳回與上例相同的結果。當省略要修改的集合時,會採用 $。 資訊備註注意!前兩個範例中的語法會解譯為在「Region」中「無選項」,亦即有可能是指定其他選項的所有區域。這不等同於語法 <Region = {}> (或隱含會產生空元素集合之等號右側的其他任何文字),因為會解譯為無地區。
|
sum( {$<Year = {2000}, Region = {US, SE, DE, UK, FR}>} Sales ) | 會傳回目前選項的銷售額,但包含「Year」和「Region」兩者中的新選項。 |
sum( {$<~Ingredient = {“*garlic*”}>} Sales ) |
Ingredient 欄位處於 AND 模式下。 會傳回目前選項的銷售額,但強制排除包含字串「garlic」的所有食材。 |
sum( {$<Year = {“2*”}>} Sales ) | 會傳回目前選項的銷售額,但為在欄位「Year」中選取以數字「2」開頭的所有年份 (亦即很有可能是 2000 年和之後的年份)。 |
sum( {$<Year = {“2*”,”198*”}>} Sales ) | 與上例相同,但現在 1980 年代也包括在選項中。 |
sum( {$<Year = {“>1978<2004”}>} Sales ) | 傳回目前選項的銷售額,但同時使用數字搜尋,以區分要進行加總的銷售額的年份範圍。 |
若您想要強制排除文字物件等物件中的特定欄位值,必須修改指令碼語法。例如,若您的指令碼陳述式如下:
=count({<ANDActor=>}DISTINCT Title)
請修改如下:
=count({<~ANDActor=, ANDActor=>} DISTINCT Title)