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

# 配置源結構

> 為知行之橋中的出站 EDI 文件工作流程定義源結構。

對於出站文件工作流程，必須定義源結構，指定連接器要從資料來源檢索的資料。在**操作**索引標籤中點選**新增源結構**，即可開啟**編輯源結構**對話方塊。

<img src="https://mintcdn.com/qiao/Ucivuk3ay0Gk5vqt/public/images/edi_mapping_source_structure.png?fit=max&auto=format&n=Ucivuk3ay0Gk5vqt&q=85&s=ef1e0fc063c3577ec9c4ab380f4e44c9" alt="操作索引標籤上的新增源結構按鈕" width="800" data-path="public/images/edi_mapping_source_structure.png" />

定義後，源列會顯示在對映編輯器左側，可對映到目標 EDI 文件結構。

<img src="https://mintcdn.com/qiao/Ucivuk3ay0Gk5vqt/public/images/edi_mapping_tables_defined.png?fit=max&auto=format&n=Ucivuk3ay0Gk5vqt&q=85&s=95e35d7709732421691bb64bd040b406" alt="定義源結構後的對映檢視" width="800" data-path="public/images/edi_mapping_tables_defined.png" />

## 結構型別

在**編輯源結構**對話方塊中選擇**結構型別**。結構型別決定連接器如何查詢資料來源：

* **父表和子表**：按父子層次結構查詢表，並可新增更多子表。
* **聯接表**：透過單個 JOIN 查詢組合兩個或更多相關表。

<Note>對於實施 API 速率限制的資料來源，聯接表只發出一次查詢，通常比父表和子表方式更高效。</Note>

## 父表和子表

選擇**父表和子表**後，從下拉式清單中選擇目標表，並使用箭頭向結構新增子表。完成後點選**應用**。

### 結果

點選**應用**後，對映編輯器的源窗格中會顯示 **Items** 節點。要配置查詢的列和篩選器，請點選表名稱旁的省略號，然後選擇**表設定**。

**編輯 \[表名稱] 設定**對話方塊包含**列**和**篩選器**兩個索引標籤。

**列**索引標籤預設選擇表中的所有列。取消選中不需要的列即可從查詢輸出中排除。還可使用底部的**排序依據**欄位按某列排序，並選擇 **ASC**（升序）或 **DESC**（降序）。

**篩選器**索引標籤用於限制連接器選擇的行。請參閱[篩選器](#篩選器)。

### 選項

右側的**選項**面板控制連接器如何處理記錄：

* **使用列 \[x] 處理新增或更改的記錄**：啟用增量處理，只選擇自上次執行以來新增或更改的行。
* **處理行時使用 \[值] 更新 \[列]**：處理每行後，用指定值更新該列。

## 聯接表

選擇**聯接表**後，使用 JOIN 設計器定義資料來源中表之間的關係。連接器會將配置轉換為單個 JOIN 查詢。

<img src="https://mintcdn.com/qiao/wjl62Js5487vomFe/public/images/dbsa_join_designer.png?fit=max&auto=format&n=wjl62Js5487vomFe&q=85&s=4ca1281f3299312978ff2770c7d54588" alt="JOIN 設計器" width="800" data-path="public/images/dbsa_join_designer.png" />

JOIN 設計器的每一行代表一個聯接關係：

* **聯接型別**：要執行的 SQL 聯接型別。可用選項取決於資料來源，通常包括 Inner Join、Left Join、Right Join 和 Full Outer Join。
* **左表**：聯接左側的表。第一行的左表是查詢的基礎表。
* **左列**：左表中用於聯接的列。
* **右表**：聯接右側的相關表。
* **右列**：與左列匹配的右表列。

以下範例透過共有的 **Id** 列聯接 **Bill** 和 **Bill1** 表：

<img src="https://mintcdn.com/qiao/wjl62Js5487vomFe/public/images/dbsa_join_addtable.png?fit=max&auto=format&n=wjl62Js5487vomFe&q=85&s=d873c1d320a5d1adf4381e762a764ede" alt="透過 Id 列聯接 Bill 和 Bill1" width="800" data-path="public/images/dbsa_join_addtable.png" />

該配置生成類似以下內容的查詢：

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

要聯接兩個以上的表，請點選**新增聯接**。每個新行都會將一個新表聯接到前一個聯接的結果。配置完成後點選**應用**。

### 結果

點選**應用**後，源窗格的 **Items** 節點下會顯示 **Results** 節點。點選其省略號並選擇**結果設定**，開啟包含**列**和**篩選器**索引標籤的對話方塊。

<img src="https://mintcdn.com/qiao/wjl62Js5487vomFe/public/images/dbsa_join_results.png?fit=max&auto=format&n=wjl62Js5487vomFe&q=85&s=d40cf4f8e03bb9a248c2a24775e422da" alt="結果設定的列索引標籤" width="700" data-path="public/images/dbsa_join_results.png" />

**列**索引標籤列出所有聯接表的列，並用標籤標識來源表。預設選擇所有列；取消選中即可排除。

<Note>如果兩個聯接表包含同名列，連接器會自動為重複列新增表名字首以避免衝突。</Note>

可使用底部的**排序依據**欄位和 **ASC** 或 **DESC** 對輸出排序。**篩選器**索引標籤用於限制選擇的行。

### 選項

* **使用列 \[x] 處理新增或更改的記錄**：啟用增量處理。聯接表配置中，此列必須來自基礎（最左側）表。
* **處理行時使用 \[值] 更新 \[列]**：處理每行後更新指定列。

還可在對話方塊頂部啟用**預覽 XML**或**程式碼檢視**，預覽輸出結構或底層 XML 配置。

## 篩選器

可以在設定對話方塊的**篩選器**索引標籤中新增篩選器，限制連接器選擇的資料。

<Note>如果業務場景不需要，可以不對資料應用篩選器。</Note>

### 建立篩選器

1. 點選**新增篩選器**。
2. 從列下拉式清單選擇要篩選的列。
3. 選擇篩選條件。可用條件取決於列的資料型別。
4. 輸入條件值。如果條件不需要值（例如 **Is Null**），則不會顯示值欄位。

以下範例只選擇 **Vendor** 列包含 **CData** 的行：

<img src="https://mintcdn.com/qiao/wjl62Js5487vomFe/public/images/dbsa_filter.png?fit=max&auto=format&n=wjl62Js5487vomFe&q=85&s=190490fb7feb9a2a7b11e528fe429fba" alt="Vendor 列包含 CData 的篩選器" width="800" data-path="public/images/dbsa_filter.png" />

### 篩選器組

點選**新增篩選器**可應用多個篩選器。所有篩選器預設屬於同一組；點選**新增組**可建立巢狀組並使用不同邏輯。

* **NOT**：反轉整個組的邏輯。
* **And / Or**：決定該組與相鄰篩選器或組的關係。**And** 要求兩者同時成立，**Or** 表示滿足任一條件即可。

<img src="https://mintcdn.com/qiao/wjl62Js5487vomFe/public/images/dbsa_filter_group.png?fit=max&auto=format&n=wjl62Js5487vomFe&q=85&s=171499a6a548781de3797e1e46fc4566" alt="包含 AND 和 OR 邏輯的多個篩選器組" width="800" data-path="public/images/dbsa_filter_group.png" />

圖中的條件要求：

* **Vendor** 包含 **CData**
* **Status** 等於 **Active** 或 **Pending**
* **Amount** 不小於等於 **5000**，即大於 5000

### 使用查詢檢視

啟用**查詢檢視**可以編寫自定義 SQL 查詢。該查詢會覆蓋設計器建立的查詢。

<img src="https://mintcdn.com/qiao/Ucivuk3ay0Gk5vqt/public/images/edi_query_view_263.png?fit=max&auto=format&n=Ucivuk3ay0Gk5vqt&q=85&s=1f9834fc218fb26b5c534197ebcc8f02" alt="使用自定義 SQL 的查詢檢視" width="700" data-path="public/images/edi_query_view_263.png" />
