> ## 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 文件工作流程定義源結構。

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

![操作索引標籤上的新增源結構按鈕](https://mintcdn.com/qiao/kYLwR1iZrGqYINH1/26.4/images/edi_mapping_source_structure.png?fit=max\&auto=format\&n=kYLwR1iZrGqYINH1\&q=85\&s=03400d7292bb2a3005b3ea84615e86a8)

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

![定義源結構後的對映檢視](https://mintcdn.com/qiao/kYLwR1iZrGqYINH1/26.4/images/edi_mapping_tables_defined.png?fit=max\&auto=format\&n=kYLwR1iZrGqYINH1\&q=85\&s=2d1f3062fb5cefd66d0c22f285077417)

## 結構型別

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

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

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

## 父表和子表

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

### 結果

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

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

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

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

### 選項

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

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

## 聯接表

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

![JOIN 設計器](https://mintcdn.com/qiao/92y00drsn6lqgU2C/26.4/images/dbsa_join_designer.png?fit=max\&auto=format\&n=92y00drsn6lqgU2C\&q=85\&s=b6d82b9cab818c908d89328d268d7db0)

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

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

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

![透過 Id 列聯接 Bill 和 Bill1](https://mintcdn.com/qiao/92y00drsn6lqgU2C/26.4/images/dbsa_join_addtable.png?fit=max\&auto=format\&n=92y00drsn6lqgU2C\&q=85\&s=7e3b86a02a1ee51612c120bc2c53aaa6)

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

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

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

### 結果

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

![結果設定的列索引標籤](https://mintcdn.com/qiao/92y00drsn6lqgU2C/26.4/images/dbsa_join_results.png?fit=max\&auto=format\&n=92y00drsn6lqgU2C\&q=85\&s=2f5cef83d03305003b06b574e9e3893f)

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

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

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

### 選項

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

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

## 篩選器

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

> [!NOTE]
>
> 如果業務場景不需要，可以不對資料應用篩選器。

### 建立篩選器

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

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

![Vendor 列包含 CData 的篩選器](https://mintcdn.com/qiao/92y00drsn6lqgU2C/26.4/images/dbsa_filter.png?fit=max\&auto=format\&n=92y00drsn6lqgU2C\&q=85\&s=497133726b6a947f6a52c82257ba31ca)

### 篩選器組

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

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

![包含 AND 和 OR 邏輯的多個篩選器組](https://mintcdn.com/qiao/92y00drsn6lqgU2C/26.4/images/dbsa_filter_group.png?fit=max\&auto=format\&n=92y00drsn6lqgU2C\&q=85\&s=e440ba54f156f81bbdecae15bcaa77d9)

圖中的條件要求：

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

### 使用查詢檢視

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

![使用自定義 SQL 的查詢檢視](https://mintcdn.com/qiao/kYLwR1iZrGqYINH1/26.4/images/edi_query_view_263.png?fit=max\&auto=format\&n=kYLwR1iZrGqYINH1\&q=85\&s=d8230cd6ebd85f1c4d16059edf655bf2)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.