物件轉換詳細資料
上次更新:2026/10/14QV2QS 在轉換期間處理一系列 QlikView 特有的功能。
表達式
QV2QS 將 QlikView 運算式傳遞至 Qlik Sense,僅進行最少的轉換。運算式語言在 QlikView 和 Qlik Sense 之間大致共用,因此大多數運算式無需修改即可運作。
QV2QS 會套用以下轉換:
- 等號前綴 — Qlik Sense 要求量值表達式和某些屬性表達式以
=開頭。QV2QS 在需要時添加前綴,如果原始的 QlikView 表達式不包含前綴。 - 註解移除 — 整行註解,凡以
//、#或REM開頭者,會從內嵌運算式中移除。Qlik Sense 屬性表達式對註解語法的支援不一致,因此移除註解可避免評估錯誤。區塊註解 (/* */) 不會被移除。程式碼行內的行內//註解也不會被移除。
以下表達式功能會原樣傳遞,並在 Qlik Sense 中運作而無需修改:
- 集合分析表達式 (例如,
{<Year={2024}>}) - 錢號擴展和變數參考 (例如,
$(vMyVar)) - 巢狀
Aggr()運算式 If()運算式,包括條件式格式設定運算式Pick()、Match()、和Dual()模式- 計算維度
設定集合分析引號
QlikView (2017 年 11 月之前) 將集合修飾符中的單引號值視為不區分大小寫的搜尋,與雙引號值相同。Qlik Sense 會將單引號值視為區分大小寫的常值。這種差異可能會破壞依賴萬用字元、比較運算子或在單引號內進行數值比對的運算式。
QV2QS 會掃描所有物件運算式和變數定義,以尋找在 Qlik Sense 中行為不同的集合分析引號模式。偵測到的模式包括單引號萬用字元 ('*US*')、單引號比較運算子 ('>=5')、數值欄位上的單引號值,以及未加引號的裸字串值。結果會顯示在 Excel 報告的 Expression_Findings 工作表中。
QV2QS 會在轉換期間自動修正單引號搜尋值。針對未加引號的裸字串值,也提供一個實驗性的修復,但預設為停用。
- 單引號搜尋值 (預設啟用) 會轉換為雙引號:
{<Country={'*US*'}>}變成{<Country={"*US*"}>}。偵測到的搜尋模式包括萬用字元 (*,?,^), 比較運算子, 模糊搜尋 (~), 表達式搜尋 (=), 搜尋修飾詞 (+,-), 以及複合搜尋。數值欄位中不含搜尋語法的單引號值,會被標記以供手動審查,但不會自動修正。 - 未加引號的裸字串值 (實驗性,預設為停用) 會以單引號包覆:
{<Country={USA}>}變成{<Country={'USA'}>}。傳入--fixUnquotedSetValues以啟用。
修正僅在設定修飾符值清單中,透過位置替換來應用。欄位名稱、函數名稱及其他表達式文字絕不會被修改。這兩個修正獨立控制。傳入 --noFixSingleQuotedSearch 以停用單引號修正。不支援的功能結果未經修改。
「Expression_Findings 工作表和執行摘要儀表板包含一個 Source 欄,指示每個發現是源自於變數定義或圖物件表達式。」一個 狀態 欄位會顯示該發現是否已自動修復、需要手動審查,或沒有可用的自動修復。
如需偵測到的完整模式清單,請參閱分析。如需設定分析語法參考,請參閱設定分析中的 Qlik Cloud 說明。
QV2QS 會掃描所有運算式欄位 (維度、量值、顯示條件、色彩運算式、標題、計算條件及其他),以及變數定義和載入指令碼,以尋找不支援的函數。偵測到的實例列於分析報告中。
下列 QlikView 專用函數在 Qlik Sense 中無法使用:
GetCurrentField,GetExtendedPropertyInput,InputSum,InputAvgMsgBoxImage_SizeNoOfReports,ReportComment,ReportId,ReportName,ReportNumber
如需偵測到的載入指令碼模式清單,請參閱 分析。
數字格式
QV2QS 會將 QlikView 數字格式定義轉換為 Qlik Sense 數字格式類型。格式類型會對應至 Qlik Sense 的對應項目,且自訂格式字串 (Fmt)、小數點分隔符號、千位分隔符號以及小數點精確度都會如實保留。自訂格式字串,例如 #,##0.00;(#,##0.00) 或 '$'#,##0,會在 qFmt 欄位中原樣傳遞。
以下 QlikView 格式類型已對應:
| QlikView 類型 | Qlik Sense 類型 |
|---|---|
| 固定、實數、整數 | 固定 (F) |
| MONEY | 貨幣 (M) |
| DATE | 日期 (日) |
| TIME | 時間 (T) |
| TIMESTAMP | 時間戳記 (時間戳記) |
| INTERVAL | 區間 (IV) |
排序
QV2QS 將所有 QlikView 排序條件轉換為 Qlik Sense 對應項。以下排序設定為一對一對應:依狀態排序、依頻率排序、依數值排序、依字母順序排序、依載入順序排序、依運算式排序 (包括運算式文字)、以及依灰度排序。
對於列表框欄位,QV2QS 會應用額外的啟發式演算法,來抑制在日期類型欄位上基於狀態的排序。如需詳細資訊,請參閱引數參考。
視覺提示和條件式色彩
QlikView 視覺提示 (基於閾值的量值條件式色彩) 會轉換為 Qlik Sense 色彩運算式,用於表格和樞紐分析表視覺化。QV2QS 會產生巢狀的If()運算式,其中包含RGB()或ARGB()色彩函數,可重現原始的低/正常/高閾值行為。文字顏色和背景顏色提示皆會轉換。圖表視覺效果上的視覺提示 (長條圖、折線圖、組合圖及其他) 不會轉換。
基於運算式的著色
QV2QS 會將每個維度和每個量值的色彩運算式 (背景色彩和文字色彩) 轉換為 Qlik Sense 屬性運算式。對於表格和樞紐分析表視覺化,背景顏色運算式和文字顏色運算式都會保留 (cellBackgroundColor 和 cellForegroundColor)。對於圖的視覺化,量值背景顏色表達式會轉換為 colorByExpression 模式。維度色彩運算式和量值文字色彩運算式不會轉換為圖表類型,因為 Qlik Sense 圖不支援每個維度的色彩屬性運算式或每個量值的文字色彩屬性。
對於表格和樞紐分析表視覺效果,如果量值上沒有明確的色彩表達式,但已定義視覺提示,QV2QS 會自動從視覺提示閾值產生色彩表達式。
趨勢線
QlikView 圖量值上的趨勢線會轉換為 Qlik Sense 趨勢線。支援下列趨勢線類型:
- 平均、線性、指數、對數、冪次
- 多項式 (2、3 和 4 次)
參考資料行
QlikView 在圖軸上的參考線會轉換為 Qlik Sense 參考線。標籤、值運算式、顏色、線條樣式和顯示條件 (條件式可見性運算式) 都會保留。如果參考線沒有顯示條件,則預設可見性為始終顯示。組合圖支援同時在主要和次要座標軸上設定參考線。
組合圖軸指派
QV2QS 保留 QlikView 組合圖的軸指派。每個量值保留來自原始 QlikView 圖的主要或次要軸繫結。測量數列類型(長條、線、標記)也會保留。
維度群組
QV2QS 將 QlikView 循環群組和鑽研群組轉換為 Qlik Sense 主維度。循環群成為循環主維度。向下鑽研群組成為向下鑽研主維度。參考群組維度的圖表會連接到轉換後的應用程式中對應的主維度。
字型處理
Qlik Sense 支援一組固定的網路安全字型。QV2QS 將 QlikView 字型對應到最接近的可用 Qlik Sense 字型。無法映射的字型會使用備用字型 (Source Sans Pro)。
以下 QlikView 字型具有明確的對應:
| QlikView 字體 | Qlik Sense 字型 |
|---|---|
| Arial, Helvetica, Tahoma, Calibri | Source Sans Pro |
| Segoe UI | 國際 |
| Verdana | Open Sans |
| 時代新羅馬, 時代, 喬治亞 | PT Serif |
| Courier New, Consolas | Source Sans Pro |
自訂字型若不在 Qlik Sense 字型物件庫中,則會對應至 Source Sans Pro。
等寬字體 (Courier New、Consolas) 會對應到比例字體 Source Sans Pro。等寬字元對齊未保留。
系統變數
QV2QS 會將系統變數從轉換後的變數清單中排除。這些變數由 Qlik 引擎管理,且不需要包含在 variables.json 中。範例包括DateFormat、ThousandSep、DecimalSep、TimestampFormat、ErrorMode,以及NullDisplay。
在載入指令碼中明確設定的系統變數 (例如,SET DateFormat='YYYY-MM-DD';) 會保留在載入指令碼中,並在重新載入時生效。排除僅適用於轉換後的應用程式中的變數定義,不適用於載入指令碼中的SET或LET陳述式。
使用者定義變數會轉換。
網格模式
已啟用格線模式的 QlikView 圖表 (EnablePrimaryDimension) 使用第一個維度做為分面欄位,以顯示迷你圖表的格線。Qlik Sense 在標準圖表上沒有原生格狀模式。QV2QS 會自動轉換網格圖表,方法是使用 Visualization Bundle 中的 Qlik Sense 網格容器延伸 (qlik-trellis-container)。
在轉換過程中,QV2QS 會執行以下步驟:
- 建立主要視覺化 — 原始圖會轉換,不含網格維度。對於僅限主要格線圖,維度 0 已移除。當次要網格也啟用時,維度 0 和 1 都會被移除。剩餘的圖會儲存為應用程式中的主要視覺化。
- 建立格線容器 —
qlik-trellis-container物件會放置在工作表的原始圖位置。容器參考主要視覺化,並使用已移除的維度作為其資料定義中的分面欄位。當主要和次要網格都啟用時,容器資料定義包含兩個分面維度。 - 配置格線 — QlikView 欄和列設定會對應至 trellis 容器欄計數和最大圖計數。圖表的上限數量是透過欄數乘以列數計算的。當刻面維度的數量超過格線大小時,QV2QS 會增加最大圖表計數以容納所有維度值。對於次要網格,總基數是主要維度與次要維度的基數的乘積。此值會向上捨入至欄數的最近倍數,以便格線均勻填滿。此擴展記錄為圖調整。
網格容器使用與原始圖相同的qv_id映射,因此它在工作表上佔據相同的位置。
僅限主要格線需要至少兩個維度 (一個用於格線分面,另一個用於主圖)。主要加上次要的網格至少需要三個維度(兩個用於網格分面,一個用於主圖)。圖表若維度少於所需,則會被跳過。
測量累積
QlikView 量值累計 (執行中總計) 會轉換為 Qlik Sense 累計修飾符。支援以下累積模式:
- 完整累計 — 量值運算式會使用
RangeSum()搭配Above()和RowNo()重新撰寫,以產生跨所有列的執行中總計。修飾符fullAccumulation旗標設定為true,其steps值為 6。 - 步驟累計 — 當 QlikView 累計步數大於 1 時,量值運算式會使用
RangeSum()搭配Above()以及指定的步數。修飾元fullAccumulation旗標已設定為false。
生成的累積表達式適應維度欄位類型:
- 數值維度 — 設定分析邊界使用
Min()和Max()針對該欄位。 - 文字尺寸 — 設定分析邊界使用
MinString()和MaxString()用於欄位。 - 二維圖表 — 會產生一個
Aggr()包裝器,以將累積巢狀地放置在外部維度內容中。
當套用累積時,QV2QS 會停用連續軸模式 (preferContinuousAxis=false),並將 nullMode 設定為 connect,以確保正確的視覺呈現。原始量值表達式和標籤保存在修飾符的 base 屬性中。
分頁容器
QV2QS 會使用三種策略轉換 QlikView 索引標籤容器,具體取決於容器組態和內容。在所有情況下,子物件會保留在與容器相同的 Qlik Sense 工作表上。
- 索引標籤式容器 — 不會與其他物件重疊的獨立多索引標籤容器,會轉換為原生 Qlik Sense 索引標籤式容器 (
sn-tabbed-container)。每個分頁成員都會成為容器中的一個分頁。Tab 鍵順序遵循原始 QlikView 成員順序。 - 偽分頁 — 當多分頁容器與其他物件重疊,或巢狀內嵌於另一個容器中時,QV2QS 會將分頁扁平化為一個版面配置容器。會產生一個按鈕列,其中每個分頁都有一個
action-button。每個按鈕都會使用SetVariable動作來設定一個導覽變數。顯示子物件上的條件 (例如,=If('$(vCT01Tab)'='1',1,0)) 控制哪個分頁內容可見。一次只能看到一個分頁。按鈕列重現原始 QlikView 容器的索引標籤切換行為。 - 版面配置容器 — 容器在格線模式中會轉換為版面配置容器(
sn-layout-container)。
單一物件容器已簡化。未建立分頁條或變數。單一子物件直接放置於容器位置,並套用容器顯示條件。
巢狀容器支援最多可達 8 層深度。QV2QS 會偵測循環並停止遞迴,如果容器建立循環參照。
在容器上以及在個別子物件上的顯示條件,是使用邏輯 AND 組合的。子物件僅在容器條件、分頁變數條件以及子物件條件全部評估為 true 時可見。
顯示條件
QlikView 在個別物件上的顯示條件會被保留。Qlik Sense 不支援直接在視覺化物件上設定顯示條件。QV2QS 將具有顯示條件的物件包裝在單一子項版面配置容器中,並將條件套用為容器上的condition項目。已在版面配置容器內的物件 (由於重疊),會直接收到容器項目上的條件。
當顯示條件評估為 false 時,版面配置容器仍會保留在格線位置,但不顯示任何內容。隱藏的容器不會摺疊或導致相鄰物件重排。在動態格線和固定畫布模式下,隱藏的物件會在原始位置留下空白空間。空白空間行為與 QlikView 相符,其中隱藏的物件也會留下空白空間。
替代狀態
QV2QS 保留替代狀態指派。繫結至 QlikView 中替代狀態的物件,在 Qlik Sense 中會保留相同的狀態繫結。州名會被精確保留。QV2QS 在部署期間,於 Qlik Cloud 應用程式中建立所需的替代狀態。在集合分析表達式中的替代狀態參考 (例如,{[State2]<Year={2024}>}) 會原樣傳遞,並在 Qlik Sense 中無需修改即可運作。
在「僅限本機」模式下 (--unbuildOnly),替代狀態名稱會寫入 cloud/alternate_states.json 到專案子資料夾中 (例如,<outputDir>/Sales/cloud/alternate_states.json)。部署輸出至 Qlik Cloud 租用戶時,必須手動或透過 qlik app build 工具建立狀態。
物件動作
QV2QS 轉換按鈕 (BU、BT) 和文字物件 (TX) 上的動作。包含動作的文字物件會升級為動作按鈕 (action-button)。支援的動作類型包括導覽、SetVariable、SelectField,以及其他記載於轉換結果的類型。
其他物件類型(圖表、列表框、滑桿和容器)上的動作不會轉換。QlikView 支援 OnActivate 動作於任何物件類型,但 QV2QS 僅從按鈕和文字物件 XML 解析動作。非巨集動作 (SetVariable、SelectField、導覽) 附加到圖表、清單方塊或其他非按鈕物件,會在轉換期間捨棄,且不會出現在轉換報告中。為了尋找已捨棄的動作,請在 PRJ XML 檔案中搜尋非按鈕物件定義裡的 <Actions> 元素。
間隙掃描器會偵測跨所有物件類型的巨集呼叫,以用於報告目的。分析工作表中的巨集交叉參照會反映所有物件,不只按鈕。非按鈕物件上的非巨集動作類型不會被報告。
計算條件
計算條件會保留用於下列視覺化類型:長條圖、盒鬚圖、組合圖、量測計、折線圖、Mekko 圖、圓形圖、散佈圖、格線圖、樞紐分析表、表格、樹狀結構圖和瀑布圖。
條件表達式和自訂錯誤訊息 (當條件不符合時向使用者顯示的文字) 都會套用至超立方體定義。如果原始 QlikView 物件沒有自訂訊息,Qlik Sense 會顯示預設計算條件訊息。
不在上述清單中的視覺效果類型 (包括漏斗圖、雷達圖和 KPI) 不會收到計算條件。如果 QlikView 物件具有計算條件,且目標視覺化類型不支援此功能,則條件和訊息都會被靜默捨棄。