> ## 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" />
