# 分析

QV2QS は各 QlikView ドキュメントを自動的にスキャンし、移行後に注意が必要となる可能性のある機能やパターンを検出します。一部の検出結果は情報提供を目的としています。その他の調査結果では、サポートされていない機能や Qlik Sense で動作が異なる領域が特定されます。結果は、エグゼクティブサマリーのその他の所見セクション、およびExcelレポートの分析ワークシートに表示されます。

分析は変換レポートとは別になっています。変換レポートは、オブジェクトがどの程度適切に変換されたかを測定します。この分析では、Qlik Cloud 展開に関する追加の互換性の懸念事項が特定されます。

## スキャン対象

QV2QS は、QlikView ドキュメントの 7 つの領域を検査します。

隠しスクリプト

QlikView ドキュメントには、表示スクリプトの前に実行される非表示のロード スクリプトを含めることができます。隠しスクリプトは QVW/QVF バイナリ内の圧縮ブロックに格納されており、PRJ フォルダーには表示されません。QV2QS はバイナリから非表示のスクリプトを抽出し、`script.qvs` 内の表示されているロード スクリプトの先頭に追加します。非表示のスクリプトが検出されると、Analysis ワークシートおよびエグゼクティブサマリーの Other findings セクションに情報ファインディングが表示されます。

スクリプトパターンの読み込み

QV2QS は、移行時に注意が必要なステートメントおよび関数がないか、ロード スクリプト (`LoadScript.txt`) をスキャンします。非表示のスクリプトが存在する場合、非表示のスクリプトのコンテンツはスキャンに含まれます。一部のステートメントは、Qlik Sense ではサポートされていません。その他のパターンでは、パスの調整または代替値のアプローチが必要になる場合があります。コメント行およびブロックコメントは、スキャンから除外されます。

検出されたパターンは次のとおりです:

| パターン | 説明 |
| --- | --- |
| バイナリ ロード | 別の QVW ファイルからデータをロードする `BINARY` ステートメント。データ読み込みのアプローチを見直す必要がある場合があります。 |
| バンドル ロード | QVW に画像を埋め込む `BUNDLE` または `INFO LOAD` ステートメント。Qlik Sense ではサポートされていません。 |
| InputField | ユーザーデータ入力用の`INPUTFIELD`ステートメント。Qlik Sense ではサポートされていません。 |
| Direct Discovery | ライブ データ ソース接続用の `DIRECT QUERY` ステートメント。Qlik Sense ではサポートされていません。 |
| Include (含める) | `$(Include=...)` または `$(Must_Include=...)` による外部スクリプトファイルへの参照。ファイルパスの調整が必要な場合があります。 |
| コマンド | オペレーティング システム コマンドを実行する `COMMAND` ステートメント。Qlik Sense ではサポートされていません。 |
| 実行: | 外部プログラムを実行する `EXECUTE` ステートメント。Qlik Cloud ではサポートされていません。 |
| Image\_Size | `Image_Size` 関数。Qlik Sense ではサポートされていません。 |
| GetCurrentField | `GetCurrentField` 関数。Qlik Sense ではサポートされていません。 |
| GetExtendedProperty | `GetExtendedProperty` 関数。Qlik Sense ではサポートされていません。 |
| InputAvg / InputSum | 入力フィールドの集計関数。Qlik Sense ではサポートされていません。 |
| MsgBox | ダイアログ ボックス用の `MsgBox` 関数。Qlik Sense ではサポートされていません。 |
| NoOfReports | `NoOfReports` 関数。Qlik Sense ではサポートされていません。 |
| レポートコメント / レポートID / レポート名 / レポート番号 | レポート関連機能。Qlik Sense ではサポートされていません。 |

各検出結果には、ロード スクリプトの行番号と行テキストが含まれます。

ドキュメントのプロパティ

QV2QS は `DocProperties.xml` をチェックして、注意が必要なドキュメントレベルの機能がないか確認します。一部は Qlik Sense ではサポートされていません。その他はサポートされていますが、手動でのセットアップが必要であるか、動作が異なります。

| プロパティ | 説明 |
| --- | --- |
| セクション アクセス | 行レベルのセキュリティが有効になっています。Qlik Sense はセクション アクセスをサポートしていますが、構文が異なります。 |
| 動的データ更新 | 動的データ更新が有効になっています。Qlik Sense ではサポートされていません。 |
| Direct Discovery モード | Direct Query モードはドキュメント レベルで有効になっています。Qlik Sense ではサポートされていません。 |
| アラート | アラート定義が存在します。アラートは Qlik Sense ではサポートされていません。 |
| ドキュメントの OnOpen アクション | ドキュメントレベルのOnOpenトリガーアクションが定義されています。手動で再作成する必要があります。 |
| ドキュメントの OnPostReload アクション | ドキュメントレベルの OnPostReload トリガー アクションが定義されています。手動で再作成する必要があります。 |
| ドキュメント拡張機能 | ドキュメント拡張機能がインストールされています。`QVAccessibility` 以外の拡張機能はサポートされていません。 |

フィールドのプロパティ

QV2QS は、常に1つを選択 プロパティが有効になっているフィールドを検出します。このプロパティは、JSONビルド出力を介して適用できないエンジンレベルの設定です。プロパティは、展開後に Qlik Sense アプリ エディターで手動で適用する必要があります。

VBAマクロ

QV2QS は PRJ フォルダーから `Module.txt` を読み取り、すべての VBA Sub および Function 定義を解析します。各マクロについて、分析では名前、種類（Sub または Function）、および行数がレポートされます。

QV2QS は、すべてのオブジェクト XML ファイルと `DocProperties.xml` をスキャンしてマクロを呼び出すアクショントリガーを探すことにより、マクロの呼び出しも相互参照します。相互参照は、どのオブジェクトがどのマクロを呼び出しているか、およびそれらのオブジェクトが表示されているシートを特定します。定義されているが一度も呼び出されないマクロは、未使用としてマークされます。

セット分析における数式の引用

QV2QS は、すべてのオブジェクト数式（軸、メジャー、表示条件、色の数式、テキスト数式）および変数定義をスキャンして、Qlik Sense で動作が異なるセット分析の引用符パターンを検出します。QlikView (2017 年 11 月より前) では、セット修飾子内の単一引用符で囲まれた値を、二重引用符で囲まれた値と同様に、大文字と小文字を区別しない検索として扱っていました。Qlik Sense は、単一引用符で囲まれた値を大文字と小文字を区別するリテラルとして扱います。

検出されたパターンは次のとおりです:

| パターン | ルール | 可能性 | 説明 | 修復 |
| --- | --- | --- | --- | --- |
| シングルクォートで囲まれたワイルドカード (`'*US*'`, `'A?'`, `'^abc'`) | シングルクォート内のワイルドカード | 高 | ワイルドカード文字 `*`、`?`、および `^` 単語境界アンカーは、Qlik Sense では検索パターンではなくリテラル テキストとして解釈されます。 | 検索動作を元に戻すには、シングルクォートをダブルクォートに置き換えてください。 |
| シングルクォートで囲まれた比較 (`'>=5'`, `'<2020'`) | シングルクォート内の比較 | 高 | 比較演算子 `>`、`>=`、`<`、`<=` は、Qlik Sense では数値検索ではなくリテラル テキストとして解釈されます。 | 数値比較を復元するには、シングルクォートをダブルクォートに置き換えます。 |
| シングルクォートで囲まれたあいまい検索 (`'~company'`) | シングルクォート内のあいまい検索 | 高 | `~` プレフィックスは、二重引用符内のあいまい一致をトリガーします。単一引用符で囲まれている場合、Qlik Sense はそれをリテラル文字列として扱います。 | シングルクォートをダブルクォートに置き換えて、あいまい検索を復元します。 |
| シングルクォートで囲まれた式の検索 (`'=Sum(Sales)>100'`) | シングルクォートで囲まれた式の検索 | 高 | `=` プレフィックスは、二重引用符内の式検索をトリガーします。単一引用符で囲まれている場合、Qlik Sense はそれをリテラル文字列として扱います。 | シングルクォートをダブルクォートに置き換えて、式検索を復元します。 |
| シングルクォートで囲まれた検索修飾子 (`'+abc'`, `'-solution'`) | シングルクォートで囲まれた検索修飾子 | 高 | `+` (含む必要がある) および `-` (含めてはならない) 修飾子は、二重引用符内で機能します。シングルクォート内では、Qlik Sense はそれらをリテラル文字列として扱います。 | シングルクォートをダブルクォートに置き換えて、修飾子の動作を復元します。 |
| シングルクォートで囲まれた複合検索 (`'(1\|2\|3)'`, `'(*ABC*&?*Inc*)'`) | シングルクォーテーションで囲まれた複合検索 | 高 | 論理演算子 `\|` (OR)、`&` (AND)、`^` (XOR) を使用した複合検索は、二重引用符内で機能します。単一引用符で囲まれている場合、Qlik Sense はそれをリテラル文字列として扱います。 | シングルクォートをダブルクォートに置き換えて、複合検索を復元します。 |
| 数値フィールドのシングルクォートで囲まれた値（日付または数値フィールドでの `'2020'`） | 数値フィールドのシングルクォート | 高 | 単一引用符で囲まれた値は、Qlik Sense のテキスト表現と一致します。数値フィールドまたはデュアルフィールドでは、テキスト表現が格納されている値と一致せず、型の不一致が発生する場合があります。 | 代わりに、引用符で囲まれていない数値または二重引用符を使用してください。 |
| 引用符のないベア文字列 (`{USA,France}`) | クォートされていないベア値 | 低 | Qlik Sense は引用符で囲まれていない値を受け入れますが、スペース、演算子、または特殊文字が含まれていると動作が不安定になります。 | リテラル一致にするには、値をシングルクォートで囲みます。 |
| 修飾なしのフィールド参照 (`<Field1=Field2>`) | ベアフィールド参照 | 高 | QlikView では、`<Field1=Field2>`項目間で選択を転送できます。Qlik Sense は、セット修飾子における単独のフィールド間参照をサポートしていません。 | P() 要素関数を使用するには、`<Field1=P(Field2)>` に置き換えます。 |
| 波括弧で囲まれていないベア値 (`<Country=USA>`) | 波括弧で囲まれていないベア値 | 高 | セット修飾子の代入の右辺にある、中括弧のない単独の値。QlikView は、コンテキストに応じて値をリテラルまたは項目参照として解釈する場合があります。Qlik Sense では、値を中括弧で囲む必要があります。 | 中括弧で囲みます: `<Country={USA}>` または `<Country={'USA'}>`。 |

テキストフィールドのシングルクォートで囲まれたプレーンテキスト値（例: `'USA'`）にはフラグが付けられません。これらの値は、Qlik Sense で大文字と小文字を区別するリテラルとして正しく機能します。

QV2QS は、セット修飾子の割り当ての左辺にある、角括弧で囲まれた (`[Invoice Number]`)、二重引用符で囲まれた (`"Invoice Number"`)、および重アクセント記号で囲まれた (`` `Invoice Number` ``) フィールド名をサポートしています。スキャンおよび修正時に、3種類すべてのクォートスタイルが認識されます。

デフォルトでは、QV2QS はオブジェクト数式および変数定義の変換時に、単一引用符で囲まれた検索値を自動的に修正します。検索構文（ワイルドカード、比較、あいまい検索、式検索、検索修飾子、または複合検索演算子）を含むシングルクォートで囲まれた値は、ダブルクォートに変換されます。検索構文を含まない数値フィールドのシングルクォートで囲まれた値は、手動レビューの対象としてフラグが設定されますが、自動修正は行われません。引用符で囲まれていないベア文字列値に対する試験段階の修正も利用可能ですが、デフォルトでは無効になっています — 有効にするには `--fixUnquotedSetValues` を渡してください。修正は、セット修飾子の値リスト内での位置指定による置換のみを使用して適用されます — フィールド名、関数名、その他の数式テキストが変更されることはありません。各修正には独立したトグルがあります (`--noFixSingleQuotedSearch`, `--fixUnquotedSetValues`)。詳細については、[引数リファレンス](https://help.qlik.com/ja-JP/migration/Content/Qv2qsMigration/command-line-interface/argument-reference.htm)を参照してください。

結果は、コンソールサマリーのExpression quoting findingsセクション、エグゼクティブサマリーダッシュボードのExpressionサブタブ、およびExcelレポートのExpression\_Findingsワークシートに表示されます。各検出項目には、ステータスインジケーター（自動修正済み（変換中に修正済み）、要確認（手動での対応が必要）、または修正方法なし（サポートされていない関数））が含まれます。エグゼクティブサマリーダッシュボードにはフィルタートグルが用意されており、自動修正された行を非表示にして、引き続き対応が必要な項目に集中することができます。セット分析の構文の違いに関する詳細については、Qlik Cloud ヘルプの [セット分析](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/set-analysis-set-operators-modifiers.htm) を参照してください。

サポートされていないチャート機能

QV2QS は、すべてのオブジェクト数式 (軸、メジャー、表示条件、色数式、テキスト数式) および変数定義をスキャンし、Qlik Sense でサポートされていない QlikView チャート関数を検出します。スキャナーは、関数名と開き括弧の間に任意の空白または改行が含まれる関数呼び出しにマッチします。文字列リテラル内の関数名は除外されます。

以下の機能が検出されました:

| 関数 | 説明 |
| --- | --- |
| GetCurrentField | 現在のオブジェクトのアクティブなフィールド名を返します。Qlik Sense ではサポートされていません。サポートされている代替手段については、Qlik Cloud の[項目関数](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FieldFunctions/field-functions-charts.htm)を参照してください。 |
| GetExtendedProperty | リンクされたオブジェクトのメタデータを取得します。Qlik Sense ではサポートされていません。サポートされている代替手段については、Qlik Cloud の[項目関数](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FieldFunctions/field-functions-charts.htm)を参照してください。 |
| インプット | ユーザーが入力した入力フィールドの値を取得します。Qlik Sense ではサポートされていません。 |
| InputAvg | 入力フィールドの値の平均を計算します。Qlik Sense ではサポートされていません。 |
| InputSum | 入力フィールドの値の合計を計算します。Qlik Sense ではサポートされていません。 |
| MsgBox | ダイアログ ボックスを表示します。Qlik Sense ではサポートされていません。 |
| NoOfReports | レポートオブジェクトの数を返します。Qlik Sense ではサポートされていません。 |
| ReportComment | レポートのコメントを返します。Qlik Sense ではサポートされていません。 |
| ReportId | レポート識別子を返します。Qlik Sense ではサポートされていません。 |
| ReportName | レポート名を返します。Qlik Sense ではサポートされていません。 |
| ReportNumber | レポート番号を返します。Qlik Sense ではサポートされていません。 |

サポートされていない関数の検出結果は、Expression\_Findings ワークシートおよびコンソール サマリーの Potential expression issues セクションに、セット分析の引用符に関する検出結果とともに表示されます。

開発者ブックマーク

QV2QS は `DocInternals.xml` を読み取り、開発者が作成したすべてのブックマークを一覧表示します。各ブックマークについて、分析では項目の選択、スコープ（グローバルまたはシート固有）、およびレイアウト状態が保存されているかどうかがレポートされます。ブックマークは Qlik Sense で手動で再作成する必要があります。

情報メモ

サーバーレベルのブックマーク（共有およびプライベート）は、PRJフォルダーからは検出できません。

## SaaSサイジング

QV2QS は QVW バイナリ ファイルを読み取り、アプリのベース RAM フットプリントを見積もります。この見積もりは、テーブルおよびフィールドの説明に埋め込まれた `ByteSize` メタデータに基づいています。

情報メモ

ByteSize メタデータは、QlikView 12.30 以降 (2018 年 11 月) で保存された QVW ファイルでのみ利用できます。メタデータが存在しない場合、サイジング層は Unknown としてレポートされます。

QV2QSは、ベースRAMフットプリントに基づいてアプリを次のいずれかのティアに分類します。

| Tier | しきい値 | アクション |
| --- | --- | --- |
| 標準 | 最大 5 GB | 特別なアクションは必要ありません。 |
| 大規模アプリケーション | 最大 50 GB | 大規模アプリのサポートが有効になっているスペースにデプロイします。 |
| 最適化が必要 | 50 GB 超 | 移行前に、Qlik 管理者または Qlik パートナーにご相談ください。 |

Analysis ワークシートのサイジング詳細テーブルには、テーブルおよびフィールドの数 (システム テーブルおよびフィールドを除く) も表示されます。詳細なフィールドのカーディナリティ、テーブルの行数、およびオブジェクトごとのバイトサイズについては、Excel レポートの Data\_Model\_Fields および Data\_Model\_Tables ワークシートを参照してください。

## 信頼度レベル

各ロード スクリプトの検出結果には、実際の互換性の懸念である可能性を示す信頼度レベルが含まれています。

* 高 — パターンが具体的です。この検出結果は、実際の互換性に関する懸念事項である可能性が非常に高いです。
* 中 — パターンが無関係なコードに一致する可能性があります。手動で確認してください。
* 低 — パターンが広範です。フラグが付けられた行を確認して、関連性を確認してください。

ドキュメントプロパティの検出結果およびマクロの検出結果には信頼度レベルがありません。これらの検出結果はパターンマッチングではなく、明示的なXMLフラグに基づいているためです。

## 分析の制限事項

この分析では、PRJフォルダーとQVWバイナリのみをスキャンします。ロード スクリプト スキャナーは、`LoadScript.txt` 内のサポートされていないステートメントおよび関数を検出します。ロード スクリプト スキャナーは、チャート数式をチェックしません。

式スキャナーは、チャート式 (軸、メジャー、表示条件、カラー式、テキスト式、変数定義) にセット分析の引用符パターンやサポートされていない関数呼び出しがないかをチェックします。式スキャナーは、チャート式における他のカテゴリの非互換性を検出しません。

QlikView Server レベルに存在する項目は検出されません。検出されないアイテムには、サーバー ブックマーク、サーバー オブジェクト、クラスター設定、アラート条件、レポート定義、セッション使用状況データが含まれます。

## 詳細を見る

* [コンバージョン成果](https://help.qlik.com/ja-JP/migration/Content/Qv2qsMigration/conversion-results/conversion-outcomes.htm)
* [コンバージョン レポート](https://help.qlik.com/ja-JP/migration/Content/Qv2qsMigration/conversion-results/conversion-report.htm)
* [変換リファレンス](https://help.qlik.com/ja-JP/migration/Content/Qv2qsMigration/conversion-reference/index.htm)
* [既知の制限事項](https://help.qlik.com/ja-JP/migration/Content/Qv2qsMigration/known-limitations/index.htm)