完全自定义配置
索引引擎管道的主要配置部分如下所述。每个配置部分可以用 Python(用于 Python API 模式)和 YAML 表示,但为了简洁起见,这里展示的是 YAML。
使用自定义配置是高级用例。大多数用户可能更愿意使用默认配置。
索引引擎示例
示例目录包含几个如何使用索引引擎进行_自定义配置_的示例。
大多数示例包括两种不同的运行管道方式,这两种方式都包含在示例的 run.py
中:
- 主要使用 Python API
- 主要使用管道配置文件
运行示例:
- 运行
poetry shell
以激活包含所需依赖项的虚拟环境。 - 从
root
目录运行PYTHONPATH="$(pwd)" python examples/path_to_example/run.py
。
例如,要运行 single_verb
示例,您可以运行以下命令:
配置部分
> extends
此配置允许您扩展一个或多个基础配置文件。
> root_dir
此配置允许您设置管道的根目录。所有数据输入和输出都假定相对于此路径。
> storage
此配置允许您定义管道的输出策略。
type
: 要使用的存储类型。选项有file
、memory
和blob
base_dir
(仅限type: file
):存储数据的基本目录。相对于配置根目录。connection_string
(仅限type: blob
):用于 blob 存储的连接字符串。container_name
(仅限type: blob
):用于 blob 存储的容器。
> cache
此配置允许您定义管道的缓存策略。
type
: 要使用的缓存类型。选项有file
、memory
和blob
。base_dir
(仅限type: file
):存储缓存的基本目录。相对于配置根目录。connection_string
(仅限type: blob
):用于 blob 存储的连接字符串。container_name
(仅限type: blob
):用于 blob 存储的容器。
> reporting
此配置允许您定义管道的报告策略。报告文件是生成的工件,总结了管道的性能指标并发出任何错误消息。
type
: 要使用的报告类型。选项有file
、memory
和blob
base_dir
(仅限type: file
):存储报告的基本目录。相对于配置根目录。connection_string
(仅限type: blob
):用于 blob 存储的连接字符串。container_name
(仅限type: blob
):用于 blob 存储的容器。
> workflows
此配置部分定义了管道的工作流 DAG。在这里,我们定义了一个工作流数组,并在步骤中表达它们的相互依赖关系:
name
: 工作流的名称。这在配置的其他部分用于引用工作流。steps
: 该工作流包含的 DataShaper 步骤。如果一个步骤以workflow:<workflow_name>
的形式定义输入,则假定它依赖于该工作流的输出。
workflows:
- name: workflow1
steps:
- verb: derive
args:
column1: "col1"
column2: "col2"
- name: workflow2
steps:
- verb: derive
args:
column1: "col1"
column2: "col2"
input:
# 依赖关系在此处建立
source: workflow:workflow1
> input
type
: 要使用的输入类型。选项有file
或blob
。file_type
: 文件类型字段区分不同的输入类型。选项有csv
和text
。base_dir
: 读取输入文件的基本目录。相对于配置文件。file_pattern
: 匹配输入文件的正则表达式。正则表达式必须为文件过滤器中的每个字段命名组。post_process
: 在执行主要工作流之前应用于输入的 DataShaper 工作流定义。source_column
(仅限type: csv
):包含数据源/作者的列text_column
(仅限type: csv
):包含数据文本的列timestamp_column
(仅限type: csv
):包含数据时间戳的列timestamp_format
(仅限type: csv
):时间戳的格式input: type: file file_type: csv base_dir: ../data/csv # 包含CSV文件的目录,相对于配置文件 file_pattern: '.*[\/](?P<source>[^\/]+)[\/](?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})_(?P<author>[^_]+)_\d+\.csv$' # 匹配CSV文件的正则表达式 # 一个额外的文件过滤器,使用文件模式中的命名组进一步过滤文件 # file_filter: # # source: (source_filter) # year: (2023) # month: (06) # # day: (22) source_column: "author" # 包含数据来源/作者的列 text_column: "message" # 包含数据文本的列 timestamp_column: "date(yyyyMMddHHmmss)" # 可选,包含数据时间戳的列 timestamp_format: "%Y%m%d%H%M%S" # 可选,时间戳的格式 post_process: # 可选,在数据进入工作流之前处理数据的步骤集 - verb: filter args: column: "title", value: "My document"
input: type: file file_type: csv base_dir: ../data/csv # 包含CSV文件的目录,相对于配置文件 file_pattern: '.*[\/](?P<source>[^\/]+)[\/](?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})_(?P<author>[^_]+)_\d+\.csv$' # 匹配CSV文件的正则表达式 # 一个额外的文件过滤器,使用文件模式中的命名组进一步过滤文件 # file_filter: # # source: (source_filter) # year: (2023) # month: (06) # # day: (22) post_process: # 可选,在进入工作流程之前处理数据的一系列步骤 - verb: filter args: column: "title", value: "My document"