# スクリプト構文とデータ構造を理解する

## 抽出、変換、ロード

一般的に、アプリケーションまたはスクリプトにデータをロードする方法は、抽出、変換、ロードプロセスで説明できます。

* 抽出

  最初のステップは、データ ソース システムからのデータ抽出です。スクリプトで、SELECT または LOAD ステートメントを使用してこれを定義します。この 2 つのステートメントには、以下のような違いがあります。

  * SELECT は、ODBC データ ソースあるいは OLE DB プロバイダからのデータ選択に使用します。SELECT SQL ステートメントは、Qlik Sense ではなく、データ プロバイダによって評価されます。
  * LOAD は、ファイルのデータやスクリプトで定義されたデータ、以前にロードされたテーブル、ウェブページ、後続の SELECT ステートメントの結果からロードされたデータ、または自動的に生成されたデータのロードに使用します。

* 変換

  変換段階では、スクリプト関数とルールを使用してデータを操作し、目的のデータ モデル構造を取得します。標準的な操作は以下のとおりです。

  * 新しい値の計算
  * コード化された値の変換
  * 項目名の変更
  * テーブルの結合
  * 値の集計
  * ピボット化
  * データ検証

* ロードまたはエクスポート

  最後のステップでは、スクリプトを実行して定義したデータ モデルをアプリケーションにロードするか、スクリプトからデータをロードおよびエクスポートします。

Qlik Sense でデータを効率良く取り扱えるデータ モデルを構築することが目標です。これは通常、循環参照しない、ある程度標準的なスター スキーマあるいはスノーフレーク スキーマを作り、各エンティティが個々のテーブルで維持されるようなモデルを作成することを意味します。典型的なデータ モデルは、以下のようになります。

* (ユニット数、売上金額、予算額などの) メジャーの計算に使用される、軸および数値のキーを含む中心ファクト テーブル。
* (製品、顧客、カテゴリ、カレンダー、サプライヤなど) 属性をすべて備えた軸を含む周辺のテーブル。

情報メモ多くの場合、集計などのタスクは、ロード スクリプトでより高度なデータ モデルを構築するか、チャート式で集計を実行することで解決できます。一般的に、ロード スクリプトにデータ変換が含まれていると、より高いパフォーマンスを実現できます。

ヒント メモデータ モデルを紙にスケッチすることも役立ちます。構造を目で確認することで、どのデータを抽出し、どの変換を実行すべきかを判断しやすくなります。

## データ ロードのステートメント

データは、LOAD または SELECT ステートメントによりロードされます。各ステートメントは、1 つの内部テーブルを生成します。テーブルは常にデータのリストとして表示されます。各レコード (行) には、オブジェクト タイプの新しいインスタンス、各項目 (列) には、オブジェクトの特定の属性またはプロパティが含まれます。

この 2 つのステートメントには、以下のような違いがあります。

* SELECT は、ODBC データ ソースあるいは OLE DB プロバイダからのデータ選択に使用します。SELECT SQL ステートメントは、Qlik Sense ではなく、データ プロバイダによって評価されます。
* LOAD は、ファイルのデータやスクリプトで定義されたデータ、以前にロードされたテーブル、ウェブページ、後続の SELECT ステートメントの結果からロードされたデータ、または自動的に生成されたデータのロードに使用します。

### ルール

以下の規則はデータをアプリケーションおよびスクリプトにロードする際に適用されます。

* Qlik Sense では、LOAD ステートメントで生成されるテーブルと SELECT ステートメントで生成されるテーブルに違いはありません。つまり、複数のテーブルをロードする場合、LOAD と SELECT のいずれか一方のステートメントを使用するか、これら 2 つを組み合わせて使用するかは問題にはなりません。
* Qlik Sense ロジックでは、ステートメント内またはデータベース内の元のテーブルの項目の順序は任意です。
* 項目名は、項目を識別したり、関連付けを作成する処理で使用されます。項目名には大文字と小文字の区別があり、そのために項目名を変更する必要がしばしば生じます。

## スクリプトの実行

典型的な LOAD または SELECT ステートメントでは、イベントの順序は概ね次のようになります。

1. 数式の評価
2. as による項目名の変更
3. alias による項目名の変更
4. 項目名の修飾
5. 項目名が一致する場合はデータのマッピング
6. 内部テーブルへのデータの保存

関連する学習コンテンツ：

* [テーブルの関連付けとデータの変換](https://help.qlik.com/lnk/Assoc_tables_transform_data_QS)

## 詳細を見る

* [テーブルの関連付けとデータの変換](https://help.qlik.com/lnk/Assoc_tables_transform_data_QS)