# Qlik script プロセッサー

Qlik スクリプトを使用して入力を作成または変換します。

[Qlik スクリプト] プロセッサーを使用すると、テキスト エディターで Qlik スクリプトを直接入力してデータを準備したり、入力として使用するときにデータをロードしたりできます。上級のユーザーを対象としており、テーブルを操作するときに特定の操作を手動でコーディングすることを好む場合は、Qlik 構文全体を活用できます。

## 使用方法

* データ フローで Script プロセッサーを使用するには、エディターで追加するコードが、受信データのスキーマおよびこの時点までに実行された準備アクションと一致している必要があります。また、スクリプトは次の特定のルールに従う必要があります。

  * 入力フローから取得したテーブルを使用するには、スクリプトに `resident` ステートメントが含まれている必要があります。

    ```
    resident tablename
    ```

    詳細については、「[ロード](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartLevelScripting/RegularStatements/Load.htm)」を参照してください。

  * `NoConcatenate` ステートメントを含める必要があります。

    ```
    NoConcatenate LOAD A,B
    ```

    詳細については、「[NoConcatenate](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/NoConcatenate.htm)」を参照してください。

  * 実行する特定の操作のスクリプトを追加した後、最後に `drop table` ステートメントを追加して、受信テーブルを削除し、生成された出力のみを保持する必要があります。

    ```
    drop table  tablename
    ```

    詳細については、「[テーブルのドロップ](https://help.qlik.com/fr-FR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptRegularStatements/drop-table.htm)」を参照してください。

* プロセッサーを入力ノードとして使用する場合、最大 2 つの出力フローを使用して、2 つの異なるテーブルをロードできます。

* プロセッサーを中間ノードとして使用する場合、複数の入力フローと最大 2 つの出力フローを持つことができます。

* データ フローでは最大 50 個の Qlik スクリプト プロセッサーを使用できます。

警告メモデータ フローでエラーが発生しないように、スクリプト プロセッサーによって生成されるテーブル名が一意であり、フロー内の他のプロセッサーによって生成されるテーブルと異なることを確認してください。

## プロパティ

構成

| Property | 構成 |
| --- | --- |
| スクリプト | 次のプレースホルダーと必要なステートメントを含む Qlik スクリプトをテキスト エディターに入力します。<br><br>```<br>MyTable:<br>NoConcatenate Load *<br>Resident [name of input table];<br>Drop Table [name of input table];<br>```<br><br>入力テーブルの名前はスクリプト エディターの上部に表示されます。 これらはプロセッサーに接続された入力に対応しています。テーブル名をクリックすると、スクリプトに直接挿入されます。 |

プロセッサーの名前を変更したり、その説明を変更したりするには、[プロパティ] パネルで変更する名前または説明にマウスを合わせ、[the 編集 icon ] アイコンをクリックします。

## 圧縮ビューの使用

右側のパネルで、フル エディターを開かずにプロセッサーをすばやく更新できます。次の操作が可能です:

* [スクリプト] に直接テキストを入力します。

* [入力テーブル] の下にあるテーブルをクリックすることで、スクリプトに入力テーブルを追加できます。

![スクリプトのテキストを強調表示し、入力テーブルを選択して、スクリプト内の指定された位置に追加する](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/Dataflow/qlik_script_processor_condensed_panel.png)

より多くのオプションと高度な機能については、スクリプト エディターを開きます。「[スクリプト エディターの使用](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataFlow/data-flow-processor-script.htm#Using)」を参照してください。

## スクリプト エディターの使用

構成パネルの [エディターを開く] ボタンをクリックすると、Qlik スクリプトの作成を支援する高機能な [スクリプト エディター] が開きます。テーブル、項目名、関数の簡単な挿入、ドキュメントの参照、スクリプト挿入、スクリプトの有効性の確認などを実行できます。

![Qlik スクリプトを記述するためのスクリプト エディターの使用](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/Dataflow/qlik_script_expression_editor.png)

左側のパネルでは、データ フローに現在ロードされているテーブルと項目を表示し、さまざまな Qlik スクリプト関数を参照できます。このパネルは、次の 3 つのタブで構成されています。

* テーブル: フローにロードされているテーブルが一覧表示されます。いずれかのテーブル名の上にマウスを置き、+ をクリックしてスクリプトに直接挿入します。

* 項目: フローのこの時点で使用可能な項目がリストされます。いずれかの項目名の上にマウスを置き、+ をクリックして数式に直接挿入します。

* 関数: Qlik の関数を参照できます。 検索フィールドを使用して特定の関数を検索することや、 [関数カテゴリ] のドロップダウンを使用して関数をフィルタリングすることができます。

  いずれかの関数の上にマウスを置き、+ をクリックして数式に直接挿入します。

  * [解説ガイド] のトグルを選択すると、関数をクリックしたときに短い説明とドキュメントへのリンクが表示されます。

上部のパネルでは、スクリプトの作成時に役立つガイドとなる 3 つのツールを有効または無効にしたり、ショートカットを使用して他のファイルからスクリプトを挿入したり、間違いを修正するための元に戻すボタンとやり直しボタンを使用したりできます。

* 検索と置換: 特定の値を自動的に検索し、必要に応じて置き換えます。

  ![スクリプト エディターでの検索と置換の機能](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/Dataflow/calculate_fields_search_replace.png)

* ヘルプ モード: スクリプト内に記述した関数を、クリックした時にドキュメントにアクセスできるリンクに変換します。

  ![スクリプト エディターでヘルプ モードをアクティブ化する](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/Dataflow/script_editor_help_mode.png)

* オートコンプリート: 入力時に、関数の短い説明と例を含む候補を表示します。

  ![オートコンプリートを使用してスクリプト関数を記述する](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/Dataflow/script_editor_autocomplete.png)

* スクリプトを含める: スクリプトを挿入します。「[ロード スクリプトに他のスクリプトを挿入する](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/QVS/inserting-qvs-script-editor.htm)」を参照してください。

  ![qvf ファイルからスクリプトを挿入する](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/Dataflow/qlik_script_include_script.png)

下のパネルには、不正な項目名や無効な数式など、スクリプトの潜在的なエラーが表示されます。

![スクリプトのエラーを示す検証ツール](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/Dataflow/script_editor_validation.png)

ステータス パネルに緑色の [Ok] が表示されたら、スクリプトは有効です。[確認] をクリックして、このスクリプトを Qlik スクリプト プロセッサーに使用し、データ フロー エディターに戻ります。その後、プロセッサー構成を検証できます。

## 例

* 同じスキーマを持つ複数のテーブルを、フローの 1 つの入力にロードします。この例では、カタログから同じ項目を持ちながら、内容が異なる 2 つの .txt ファイルを使用します。さらに、この数式はどのデータがどのテーブルから取得されるかを追跡するための項目を追加し、ID 番号として整数を生成します。

  ```
  [MyTable_1]:
  LOAD
  'table1' as source_table,
  [firstname],
  [lastname],
  [nationality]
  FROM [lib://DataFiles/MyTable_1.txt] (txt, codepage is 28591, embedded labels, delimiter is ',', msq);

  [MyTable_2]:
  CONCATENATE (MyTable_1)
  LOAD
  'table2' as source_table,
  [firstname],
  [lastname],
  [nationality]
  FROM [lib://DataFiles/MyTable_2.txt] (txt, codepage is 28591, embedded labels, delimiter is ',', msq);

  [NewTable]:
  LOAD
  recno() as id,
  * RESIDENT MyTable_1;

  drop table MyTable_1;
  ```

  詳細については、「[連結](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/concatenate.htm)」を参照してください。

* フローへの入力として編集可能なデータを含むインライン テーブルを作成します。

  ```
  MyTable:
  Load * Inline [
  Country, Year, Sales
  Argentina, 2014, 66295.03
  Argentina, 2015, 140037.89
  Austria, 2014, 54166.09
  Austria, 205,182739.87
  ];
  ```

  詳細については、「[インライン ロードを使用したデータのロード](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/inline-loads-qs.htm)」 を参照してください。

* フォルダー内のすべてのファイルをフローの入力として読み込みます。この例では、フォルダー内の指定された拡張を持つすべてのファイルを反復処理し、それらを単一のテーブルに読み込みます。データ接続名とフォルダー パスを独自の値を置き換え、必要に応じてファイルの拡張と書式設定を調整します。

  ```
  SET vFolderPath = 'lib://YourDataConnection/FolderName';

  FOR EACH vFile IN filelist('$(vFolderPath)/*.csv')
      LOAD * FROM [$(vFile)]
      (txt, utf8, embedded labels, delimiter is ',');
  NEXT
  ```

  詳細については、[For each..next](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartLevelScripting/ControlStatements/for-each.htm)を参照してください。

  スクリプト式のその他の例については、「[一般的なステートメント](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartLevelScripting/modifier-regular-statements.htm)」および「[スクリプトおよびチャート関数](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/functions-in-scripts-chart-expressions.htm)」を参照してください。