> ## 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.

# CData Select 配置

> 从 CData 检索数据并将其带入知行之桥。

export const DbasaSelectExampleFlow = ({datasource = "the data source", selectXmlFlow = "dbsa_select_flow.png", siteNameShort = "知行之桥"}) => <>
    <p>为 Select 配置的 {datasource} 端口选择表和列后，将端口放置在 {siteNameShort} 工作流的开头。下面的屏幕截图描述了一个示例流程，其中包含一个 {datasource} Select 端口、一个 XML Map 端口、一个 CSV 端口和一个 File 端口：</p>

    <img src={`/public/images/${selectXmlFlow}`} width="900" />

    <p>此示例工作流中的数据通过以下步骤：</p>

    <ol>
      <li><strong>{datasource}_Select</strong> 端口从 {datasource} 连接中提取数据。</li>
      <li>此数据作为 <strong>源文件</strong> 传递给 <strong>XML_Map</strong> 端口，后者映射到 <strong>源</strong> 的树状结构中。</li>
      <li>来自 <strong>CSV1</strong> 端口的数据作为 <strong>目标文件</strong> 传递给 <strong>XML_Map</strong> 端口，后者映射到 <strong>目标</strong> 的树状结构。
        <img src="/public/images/dbsa_xmlmap_select.png" width="800" />
      </li>
      <li><strong>XML_Map</strong> 端口尝试自动将 <strong>源</strong> 元素映射到具有相同名称的 <strong>目标</strong> 元素。你可以手动更改这些并通过将元素从 <strong>源</strong> 拖到 <strong>目标</strong> 来填充空白映射。
        <img src="/public/images/dbsa_xmlmap_elements.png" width="800" />
      </li>
      <li>来自 <strong>CSV1</strong> 的文件已经用来自 <strong>{datasource}_Select</strong> 的数据进行了修改，然后向下传递来自 <strong>CSV1</strong> 的工作流。</li>
    </ol>
  </>;

export const DbasaSelectIntro = ({datasource = "the data source", siteName = "知行之桥"}) => <p>Select 操作从 {datasource} 检索数据并将其带入 {siteName}。</p>;

{/* 注意：CData 端口已弃用，并继续使用 v26.3 之前的 UI。此处直接包含相关内容，以免新版共享组件在旧界面中显示错误上下文。 */}

<DbasaSelectIntro datasource="CData" />

## 表和列

如果为 CData 端口选择 Select，则必须从 CData 中选择一个（或多个）目标表。点击**表**面板上方的**添加**按钮。

<img src="https://mintcdn.com/qiao/Pa-LScG1ebkabWPi/public/images/dbsa_select_tableadd.png?fit=max&auto=format&n=Pa-LScG1ebkabWPi&q=85&s=0cbde8c212a588cbb583ce655c28131b" alt="表面板上方的添加按钮" width="250" data-path="public/images/dbsa_select_tableadd.png" />

随后会显示一个列出所有可用表的对话框。选择所需的表，然后点击**添加**。

<img src="https://mintcdn.com/qiao/Pa-LScG1ebkabWPi/public/images/dbsa_tablelist.png?fit=max&auto=format&n=Pa-LScG1ebkabWPi&q=85&s=bc164256a3edf409fe344342405efe19" alt="列出可选表的对话框" width="500" data-path="public/images/dbsa_tablelist.png" />

所选表会显示在**表**面板中，表中的列则显示在**列**面板中。端口会自动检测具有特殊意义的值（例如主键和外键）并添加相应标记。

<img src="https://mintcdn.com/qiao/Pa-LScG1ebkabWPi/public/images/dbsa_select_columns.png?fit=max&auto=format&n=Pa-LScG1ebkabWPi&q=85&s=f2a18a0b15fa77c37433f35e1975a071" alt="表面板和列面板" width="800" data-path="public/images/dbsa_select_columns.png" />

默认选中所有列，以便将它们包含在 CData 端口的操作中。取消选中某列可将其排除。

<Note>点击**添加**并重复上述过程，可以选择更多表。有关更多信息，请参阅[子表](/26.3/self-hosted/zh/connectors/cdata/cdata-ac#child-tables)。</Note>

### 从多个表中选择

CData 端口支持通过一个操作选择多个表。可以通过以下两种方式实现：

* 将其他表指定为父表的子表。有关更多信息，请参阅[子表](/26.3/self-hosted/zh/connectors/cdata/cdata-ac#child-tables)。
* 创建多个配置为 Select 的 CData 端口，为每个端口分配不同的表，然后将它们连接到工作流中的同一端口。

可以根据需要为每个子表或各个 CData 端口分配单独的查询。有关更多信息，请参阅[过滤器](#过滤器)。

## 过滤器

选择表后，可以选择使用**过滤器**面板筛选端口选择的数据。端口会将过滤规则转换为查询语法，并在端口配置页面底部的**查询**面板中显示。

<Note>如果用例不需要，则无需对数据应用过滤器。</Note>

### 创建过滤规则

按照以下步骤创建过滤规则：

1. 点击**添加规则**。
2. 在新规则的下拉列表中选择要过滤的列。
3. 随后会显示两个新字段。在新的下拉列表中选择过滤条件。
   * 可用过滤条件取决于所选列的数据类型。例如，`long` 数据类型支持 **Greater Than** 条件，而 `string` 数据类型不支持。
4. 如果过滤条件需要值，请在值字段中输入该值。如果条件不需要值（例如 **Is Null**），则不会显示值字段。
5. 过滤规则完成后，其背景会从红色变为白色。

下图展示了对 <strong>Author</strong> 列设置过滤规则的示例。应用此规则后，端口仅选择 <strong>Author</strong> 列包含 <strong>Smith</strong> 的值。

<img src="https://mintcdn.com/qiao/Pa-LScG1ebkabWPi/public/images/dbsa_filter_single.png?fit=max&auto=format&n=Pa-LScG1ebkabWPi&q=85&s=076e359489ff897b3a9a05aa9bf3d736" alt="Author 列配置为包含 Smith 的过滤规则" width="600" data-path="public/images/dbsa_filter_single.png" />

### 过滤器组

点击**添加规则**可创建多个过滤规则。过滤规则按组划分，默认情况下所有过滤器属于同一组。点击**添加组**可创建多个组，以使用不同逻辑分隔过滤规则。

组内过滤规则之间的关系由组顶部的选项决定：

* 选中 **NOT** 可反转过滤条件。例如，在上述 Author 过滤器中选中 **NOT**，会让端口选择 Author 值中\_不\_包含 **Smith** 的记录。
* 选择 **AND** 或 **OR** 确定多个过滤规则的组逻辑。
  * 选择 **AND** 时，组中的每条规则都必须为真。
  * 选择 **OR** 时，组中至少有一条规则必须为真。

过滤器组采用简单的父子关系。下图展示了多个过滤器组。

<img src="https://mintcdn.com/qiao/Pa-LScG1ebkabWPi/public/images/dbsa_filter_multiple.png?fit=max&auto=format&n=Pa-LScG1ebkabWPi&q=85&s=89c2340576d4c4b9650b25e4f58b63c2" alt="使用 OR 逻辑的多个过滤器组" width="600" data-path="public/images/dbsa_filter_multiple.png" />

在此示例中，父组使用 **OR** 逻辑。只要满足以下任一条件，整个过滤条件即成立：

* **Author** 列包含 **Smith**
* **Id** 列等于 **1** 或 **2**
* **Title** 列包含 **Kitchen**，且 **UpdatedAt** 列大于 **400**

满足过滤条件后，端口会选择匹配的数据，并将其传递到工作流下游。

## 高级设置

在**高级**部分，可以配置使用特定列处理记录，以及在成功处理行后以指定值更新列的设置。这些设置有助于维护和跟踪工作流中的更改。

## 知行之桥工作流示例

<DbasaSelectExampleFlow datasource="CData" selectXmlFlow="cdata_xmlflow_select.png" />
