> ## Documentation Index
> Fetch the complete documentation index at: https://help.dingtalk.io/llms.txt
> Use this file to discover all available pages before exploring further.

# データ準備

> YiDAのデータ準備機能について解説します。データソースの設定、データセットの作成、データの加工、データの高速化までの手順を紹介し、可視化分析を簡単に構築する方法をお伝えします。

専用版限定

## 1. データ準備とは

データ準備機能の使い方に入る前に、まずデータ準備とは何か、どのような場面でこのプレミアム機能が必要になるのかを確認しましょう。

YiDAは、データ分析ページを構築するためのデータ処理、データ可視化、および組み込みBIサービスを提供しています。**データ準備とは、可視化分析を行う前にデータソースまたはデータセットに対して実施する一連の操作（複数テーブルの結合やデータ変換など）を指します。可視化分析の前段階に位置するステップです。**

つまり、レポートを作成してデータを分析する前に、まずデータソースやデータセットを加工することができます。

## 2. データ準備の設定方法

### 2.1 データ準備画面を開く

**手順**：アプリページを開く >> レポートを作成 >> 表示コンポーネントをドラッグ >> データセットを選択 >> データ準備

アプリフォーム内でレポートを作成

データセットを追加

データ準備ページ

「データ準備」をクリックすると、データ準備ページに遷移します。データ準備には以下のフローノードが含まれます。

**データソースの設定 >> データセットの作成 >> データフィールドの設定と加工 >> 保存 >> 高速化**

### 2.2 データソースの設定

データ準備では、データをアップロードする方法が2種類あります。ローカルファイル（Excel/CSV）をインポートする方法と、MySQLやYiDAデータソースなどのサーバーに接続する方法です。

**注意**：YiDAアプリのデータはデフォルトで先頭行に表示され、表示タイプは「YiDAデータソース」として示されます。

データソースの設定

ローカルデータのインポートは、以下のようにExcelおよびCSVファイルに対応しています。

サーバーへの接続は、データベースからのインポートに対応しています。現在対応しているのはMySQLおよびYiDAデータソースのみです。YiDAデータソースを使用する場合は、該当するアプリ名を選択してください。

**特記事項：**

MySQLを選択したら、Driver、URL、DB Name、User Name、Passwordを入力します。

URLの形式は次のとおりです：**jdbc:mysql://データベースIPアドレス:データベースポート/データベース名**

例：MySQLデータベースのIPアドレスが47.96.37.128、ポートが3306、データベース名がaaaの場合、次のように入力します：**jdbc:mysql://47.96.37.128:3306/aaa**

### 2.3 データセットの作成

明細（Detail）と集計（Summary）の2つのモードが用意されています。

例えば、明細データセットでは、複数テーブルの追加、関連付けの定義、数式の適用などによってデータを加工できます。

データの加工が完了したら、**現在の設定ルールを必ず保存してください**。

<Note>
  #### お知らせ：

  Joinはデータベースクエリでよく使われる操作で、指定した条件に基づいて2つ以上のテーブルのデータを結合するために使用されます。

  Joinには主に4種類があります：内部結合（inner join）、左結合（left join）、右結合（right join）、完全外部結合（full outer join）。以下にそれぞれの設定例を示します。

  ##### 内部結合（inner join）

  * 定義：内部結合は、両方のテーブルで結合条件を満たすレコードのみを返します。
  * 用途：両方のテーブルに存在するレコードのみが必要な場合に使用します。例えば、顧客テーブルと注文テーブルがある場合、両方のテーブルに登場するレコードのみを取得したいときに使用します。

  ##### 左結合（left join）

  * 定義：左結合は、左テーブルのすべてのレコードと、結合条件を満たす右テーブルのレコードを返します。右テーブルに一致するものがない場合、該当する列はnullになります。
  * 用途：右テーブルに一致するレコードがない場合でも、左テーブルのすべてのレコードを結果セットに含めたいときに使用します。例えば、注文を出していない顧客も含めて、すべての顧客とその注文を一覧表示したい場合に使用します。

  ##### 右結合（right join）

  * 定義：右結合は、右テーブルのすべてのレコードと、結合条件を満たす左テーブルのレコードを返します。左テーブルに一致するものがない場合、該当する列はnullになります。
  * 用途：左結合と似ていますが、方向が逆になります。例えば、一部の注文に顧客情報がない場合でも、すべての注文とその顧客情報を一覧表示したい場合に使用します。

  ##### 完全外部結合（full outer join）

  * 定義：完全外部結合は、結合条件を満たす左テーブルと右テーブルのすべてのレコードを返します。どちらかのテーブルに一致するものがない場合、該当する列はnullになります。
  * 用途：もう一方のテーブルに一致するものがあるかどうかに関わらず、両方のテーブルのすべてのレコードが必要な場合に使用します。例えば、注文のない顧客と顧客情報のない注文を含めて、すべての顧客とすべての注文を一覧表示したい場合に使用します。
</Note>

### 2.4 データの高速化

データ準備の最終フローノードは、データの高速化です。保存後に「高速化」をクリックすると、バックエンドがデータに最適な高速化方式を自動的に選択します。

「ログ」をクリックすると、現在の高速化の進捗を確認できます。高速化が完了したら、データをプレビューして期待どおりの内容になっているかを確認してください。

### 2.5 レポート分析

データ分析編集ページに戻り、「更新」をクリックします。作成したデータセットが単一テーブルデータまたは複数テーブル関連付けの中で利用可能になります。

## 4. よくあるご質問

<AccordionGroup>
  <Accordion id="q1" title="4.1 高速化が失敗するのはなぜですか？">
    高速化ログを確認し、末尾までスクロールして失敗メッセージを表示してください。

    ```xml theme={"theme":{"light":"github-light","dark":"github-dark"}}
    [2020-09-03 16:22:35] failed, jobId:T_4b1c7e0a-bd80-44d2-a3fd-0adc12b40387, schemaCode:query_APP_I8PRTK1GTAFLKO5DG4SH_371846, targetSchemaCode:null, tableName:query_APP_I8PRTK1GTAFL_234946_6d60de83d95fb0b96dd2ae1e_069cd3, queryCode:query_APP_I8PRTK1GTAFL_234946_6d60de83d95fb0b96dd2ae1e_069cd3, costTime:59794 error msg:表数据为空异常。详情:Query table:query_APP_I8PRTK1GTAFL_234946_6d60de83d95fb0b96dd2ae1e_069cd3 data size equal zero. cannot be accelerated. , root msg:DataSizeZeroException: 表数据为空异常。详情:Query table:query_APP_I8PRTK1GTAFL_234946_6d60de83d95fb0b96dd2ae1e_069cd3 data size equal zero. cannot be accelerated.
    [2020-09-03 16:22:35] failed, jobId:T_74d02519-ae60-4971-b8db-57f00e8ec0dd, schemaCode:query_APP_I8PRTK1GTAFLKO5DG4SH_371846, targetSchemaCode:null, tableName:query_APP_I8PRTK1GTAFL_234946_6d60de83d95fb0b96dd2ae1e_069cd3, queryCode:query_APP_I8PRTK1GTAFL_234946_6d60de83d95fb0b96dd2ae1e_069cd3, costTime:59820 error msg:表数据为空异常。详情:Query table:query_APP_I8PRTK1GTAFL_234946_6d60de83d95fb0b96dd2ae1e_069cd3 data size equal zero. cannot be accelerated. , root msg:DataSizeZeroException: 表数据为空异常。详情:Query table:query_APP_I8PRTK1GTAFL_234946_6d60de83d95fb0b96dd2ae1e_069cd3 data size equal zero. cannot be accelerated.
    [2020-09-03 16:22:35] failed, jobId:T_MAIN_bf7181fd-6a79-43f2-a5d8-d133751c3880, schemaCode:query_APP_I8PRTK1GTAFLKO5DG4SH_371846, targetSchemaCode:null, tableName:query_APP_I8PRTK1GTAFL_234946_6d60de83d95fb0b96dd2ae1e_069cd3, queryCode:query_APP_I8PRTK1GTAFL_234946_6d60de83d95fb0b96dd2ae1e_069cd3, costTime:73113 error msg:表数据为空异常。详情:Query table:query_APP_I8PRTK1GTAFL_234946_6d60de83d95fb0b96dd2ae1e_069cd3 data size equal zero. cannot be accelerated. , root msg:DataSizeZeroException: 表数据为空异常。详情:Query table:query_APP_I8PRTK1GTAFL_234946_6d60de83d95fb0b96dd2ae1e_069cd3 data size equal zero. cannot be accelerated.
    ```
  </Accordion>

  <Accordion id="q2" title="4.2 データソースの設定でエラーが発生するのはなぜですか？">
    (1) エラー1

    **原因**：ファイルが空です。

    **対処法**：ファイルが空でないことを確認してください。

    **注意**：ファイルに内容が含まれている場合は、ファイルを開いて再度保存し、アップロードをやり直してください。

    (2) エラー2

    **原因1**：現在対応しているのはMySQL 5.7以前のバージョンのみです。

    **原因2**：MySQLサーバーにアクセスホワイトリストが設定されており、YiDAをホストするサーバーのipがホワイトリストに登録されていない。

    **対処法**：

    1. MySQLのバージョンを変更してください。

    2. YiDAをホストするサーバーのIPをMySQLのアクセスホワイトリストに追加してください。
  </Accordion>

  <Accordion id="q3" title="4.3 データ準備で接続したMySQLデータベースのデフォルトの更新間隔は変更できますか？">
    現時点では、データ高速化のスケジュールと間隔をカスタマイズすることはできません。
  </Accordion>
</AccordionGroup>
