> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arc.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ソース構造の設定

> CData Arc で、送信EDI ドキュメントワークフローのソース構造を定義します。

export const siteNameShort = "Arc";

送信ドキュメントワークフローでは、データソースから取得するデータをコネクタに指定するソース構造を定義する必要があります。ソース構造は**Edit Source Structure** ダイアログで設定します。このダイアログは、**Action** タブの**Add Source Structure** をクリックすることで開きます。

<img src="https://mintcdn.com/cdata-arc/B9j3ZXSvx_WDIgXX/public/images/edi_mapping_source_structure.png?fit=max&auto=format&n=B9j3ZXSvx_WDIgXX&q=85&s=8796967f9f06a31a60208121ca84d82a" alt="Action タブのAdd Source Structure ボタン" width="800" data-path="public/images/edi_mapping_source_structure.png" />

ソース構造を定義すると、マッピングエディタの左ペインにソース列が表示され、宛先EDI ドキュメント構造へのマッピングが可能になります。

<img src="https://mintcdn.com/cdata-arc/B9j3ZXSvx_WDIgXX/public/images/edi_mapping_tables_defined.png?fit=max&auto=format&n=B9j3ZXSvx_WDIgXX&q=85&s=8f12b83c42ccd232c62d957632289861" alt="ソース構造定義後のマッピングビュー（ソース列と宛先EDI ドキュメントが並んで表示される）" width="800" data-path="public/images/edi_mapping_tables_defined.png" />

## 構造タイプ

**Edit Source Structure** ダイアログを開いたら、ドロップダウンから**Structure Type** を選択します。構造タイプは、コネクタがデータソースをクエリする方法を決定します。

* **Parent and Child Tables**：親子階層を使用してテーブルをクエリします。追加のテーブルを子テーブルとして追加できます。詳細については、[親テーブルと子テーブル](#親テーブルと子テーブル)を参照してください。
* **Joined Tables**：2つ以上の関連テーブルのデータを組み合わせる単一のJOIN クエリを発行します。詳細については、[結合テーブル](#結合テーブル)を参照してください。

<Note>Joined Tables はデータソースに対して単一のクエリを発行します。これは、APIレート制限を適用するデータソースに対して、Parent and Child Tables よりも効率的です。</Note>

## 親テーブルと子テーブル

構造タイプとして**Parent and Child Tables** を選択したら、ドロップダウンを使用してデータソースからターゲットテーブルを選択します。矢印を使用して子テーブルを構造に追加します。選択が完了したら、**Apply** をクリックします。

### 結果

**Apply** をクリックすると、マッピングエディタのソースペインに**Items** ノードが表示されます。クエリのカラムとフィルタを設定するには、テーブル名ノードの省略記号をクリックして**Table Settings** を選択します。

**Edit \[table name] Settings** ダイアログが開き、**Columns** と**Filters** の2つのタブが表示されます。

**Columns** タブには、選択したテーブルのすべての列が一覧表示されます。デフォルトでは、すべての列が選択されています。列のチェックを外すと、クエリ出力から除外されます。

**Columns** タブの下部にある**Order by** フィールドを使用して、列で出力をソートし、**ASC**（昇順）または**DESC**（降順）を選択します。

**Filters** タブでは、コネクタが選択する行を制限するフィルタを追加できます。詳細については、[フィルタ](#フィルタ)を参照してください。

### オプション

**Edit Source Structure** ダイアログの右側にある**Options** パネルには、コネクタがレコードを処理する方法を制御する設定が含まれています。

* **Use column \[x] for processing new or changed records**：増分処理を有効にし、前回の実行以降に新しく追加または変更された行のみをコネクタが選択するようにします。
* **Update \[column] with \[value] when rows are processed**：各行が処理された後、指定した値で列を更新します。

## 結合テーブル

構造タイプとして**Joined Tables** を選択すると、JOIN デザイナーが表示されます。JOIN デザイナーを使用して、データソース内のテーブルの関連付けを定義します。コネクタはこの設定を単一のJOIN クエリに変換します。

<img src="https://mintcdn.com/cdata-arc/OPGQ97w9DtgBQbbJ/public/images/dbsa_join_designer.png?fit=max&auto=format&n=OPGQ97w9DtgBQbbJ&q=85&s=50e4613ea8cf4f87a12c50c1a15e2427" alt="JOIN designer with empty join row fields" width="800" data-path="public/images/dbsa_join_designer.png" />

JOIN デザイナーの各行は1つの結合関係を表し、次のフィールドが含まれます。

* **Join Type**：実行するSQL JOIN の種類。利用可能なオプションはデータソースがサポートするものによって異なります。一般的なオプションには**Inner Join**、**Left Join**、**Right Join**、**Full Outer Join** があります。
* **Left Table**：JOIN の左側のテーブル。最初の行の左テーブルがクエリのベーステーブルになります。
* **Left Column**：JOIN に使用する左テーブルの列。
* **Right Table**：JOIN の右側の関連テーブル。
* **Right Column**：左列と一致する右テーブルの列。

次の例は、**Bill** テーブルを共有の**Id** 列で**Bill1** テーブルに結合しています。

<img src="https://mintcdn.com/cdata-arc/OPGQ97w9DtgBQbbJ/public/images/dbsa_join_addtable.png?fit=max&auto=format&n=OPGQ97w9DtgBQbbJ&q=85&s=8ba4536939ae7b432df58ac447a77749" alt="JOIN designer with Bill and Bill1 tables joined on the Id column" width="800" data-path="public/images/dbsa_join_addtable.png" />

これは次のクエリと同等です：

```sql theme={null}
SELECT ... FROM Bill INNER JOIN Bill1 ON Bill.Id = Bill1.Id
```

3つ以上のテーブルを結合するには、**Add Join** をクリックして別の結合行を追加します。追加した各行は、前の結合結果に新しいテーブルを結合します。

結合の設定が完了したら、**Apply** をクリックします。

### 結果

**Apply** をクリックすると、マッピングエディタのソースペインの**Items** ノードの下に**Results** ノードが表示されます。JOIN 出力の列とフィルタを設定するには、Results ノードの省略記号をクリックして**Results Settings** を選択します。**Edit Results Settings** ダイアログが開き、**Columns** と**Filters** の2つのタブが表示されます。

<img src="https://mintcdn.com/cdata-arc/OPGQ97w9DtgBQbbJ/public/images/dbsa_join_results.png?fit=max&auto=format&n=OPGQ97w9DtgBQbbJ&q=85&s=50c58f7b2a869558429f657d6597537c" alt="Edit Results Settings dialog showing the Columns tab with source table tags" width="700" data-path="public/images/dbsa_join_results.png" />

**Columns** タブには、すべての結合テーブルのすべての列が一覧表示されます。各列には、ソーステーブルを示すタグが表示されます。デフォルトでは、すべての列が選択されています。列のチェックを外すと、クエリ出力から除外されます。

<Note>2つの結合テーブルが同じ列名を共有する場合、コネクタは競合を避けるために重複する列に自動的にテーブル名のプレフィックスを付けます。</Note>

**Columns** タブの下部にある**Order by** フィールドを使用して、列で出力をソートし、**ASC**（昇順）または**DESC**（降順）を選択します。

**Filters** タブでは、コネクタが選択する行を制限するフィルタを追加できます。詳細については、[フィルタ](#フィルタ)を参照してください。

### オプション

**Edit Source Structure** ダイアログの右側にある**Options** パネルには、コネクタがレコードを処理する方法を制御する設定が含まれています。

* **Use column \[x] for processing new or changed records**：増分処理を有効にし、前回の実行以降に新しく追加または変更された行のみをコネクタが選択するようにします。Joined Tables 設定では、このカラムはベース（最左）テーブルのものである必要があります。結合テーブルの列はこの設定には使用できません。
* **Update \[column] with \[value] when rows are processed**：各行が処理された後、指定した値で列を更新します。

**Edit Source Structure** ダイアログの上部にある**Preview XML** または**Code View** を切り替えると、出力構造のプレビューや基になるXML 設定を表示することもできます。

## フィルタ

コネクタが選択するデータを制限するフィルタを任意で追加できます。設定ダイアログの**Filters** タブをクリックしてフィルタを設定します。

<Note>ユースケースに合わない場合は、データにフィルタを適用する必要はありません。</Note>

### フィルタの作成

フィルタを作成するには、次の手順に従います。

1. **Add Filter** をクリックします。
2. カラムのドロップダウンで、フィルタリングするカラムを選択します。
3. 条件のドロップダウンで、フィルタリング条件を選択します。利用可能な条件は、選択したカラムのデータ型によって異なります。例えば、数値カラムには**Less Than or Equal To** という条件があり、文字列カラムには**Contains** があります。
4. 値フィールドに値を入力します。条件に値が不要な場合（例：**Is Null**）、値フィールドは表示されません。

次の画像は、**Vendor** という名前のカラムに対するフィルタの例を示しています。このフィルタを設定すると、コネクタは**Vendor** カラムに**CData** を含む行のみを選択します。

<img src="https://mintcdn.com/cdata-arc/OPGQ97w9DtgBQbbJ/public/images/dbsa_filter.png?fit=max&auto=format&n=OPGQ97w9DtgBQbbJ&q=85&s=0718959a30ed643c72c2db6ba7b6f21b" alt="Filter configured on the Vendor column with Contains CData condition" width="800" data-path="public/images/dbsa_filter.png" />

### フィルタグループ

**Add Filter** をクリックしてさらにフィルタを作成することで、複数のフィルタを適用できます。デフォルトではすべてのフィルタが同じグループに属します。**Add Group** をクリックしてネストされたグループを作成し、異なるロジックでフィルタを分離します。

各グループには、上部に次のオプションがあります。

* **NOT** トグル：グループ全体のロジックを反転します。例えば、**Amount Less Than or Equal To 5000** を含むグループでNOT を有効にすると、コネクタは金額が5000 より大きい行のみを選択するよう指示されます。
* **And / Or** トグル：このグループが隣接するフィルタまたはグループとどのように関連するかを決定します。
  * **And** を選択した場合、このグループの条件は隣接する条件に加えて真である必要があります。
  * **Or** を選択した場合、このグループの条件は隣接する条件の代替となります。

次のスクリーンショットは、複数のフィルタグループの例を示しています。

<img src="https://mintcdn.com/cdata-arc/OPGQ97w9DtgBQbbJ/public/images/dbsa_filter_group.png?fit=max&auto=format&n=OPGQ97w9DtgBQbbJ&q=85&s=4b2cd39705c265ebc1520590e9f4bd30" alt="Multiple filter groups showing AND and OR logic" width="800" data-path="public/images/dbsa_filter_group.png" />

この例では、次のすべてが真である場合にフィルタ条件が満たされます。

* **Vendor** カラムに**CData** が含まれている
* **Status** カラムが**Active** または**Pending** に等しい
* **Amount** カラムが**5000** 以下では*ない*（つまり、Amount が5000 より大きい）

このフィルタ条件が満たされると、コネクタは一致するデータをSelect してマッピングに渡します。

### クエリビューの使用

**Query View** をオンに切り替えると、データソースからデータを選択するカスタムSQL クエリを記述できます。これにより、デザイナーで作成されたクエリが上書きされます。

<img src="https://mintcdn.com/cdata-arc/B9j3ZXSvx_WDIgXX/public/images/edi_query_view_263.png?fit=max&auto=format&n=B9j3ZXSvx_WDIgXX&q=85&s=c736d969e0c2f93dec88b8eb96ad9d76" alt="カスタムSQL クエリを示すQuery View モード" width="700" data-path="public/images/edi_query_view_263.png" />
