用于解析和分析Kettle XML文件的库

KettleParser的Python项目详细描述


https://travis-ci.org/graphiq-data/KettleParser.svg?branch=masterhttps://badge.fury.io/py/KettleParser.svg

About

KettleParser是一个Python库,它解析Kettle XML文件(.ktr和.kjb)以进行快速分析。它接受转换或作业的XML元数据并对其进行解析,以便您可以轻松地访问各种属性,而不必使用。您可以获取有关步骤、跳数、连接的信息,并将转换或作业转换为用于结构分析的python图形对象。

Usage

通过调用get_attribute方法,可以访问步骤、跃点和连接的所有元数据。有关更多信息,请参阅以下转换并通读下面的示例。

https://github.com/graphiq-data/KettleParser/blob/master/tests/transformation_1/transformation_1.png?raw=true

Parsing

目前,kettleparser只支持解析本地保存的完整kettle文件,而不支持原始xml字符串。这个 Parseclass是解析kettle文件(.ktr或.kjb)的主类。只要调用类并将文件路径传递给您的kettle文件即可:

>>>importKettleParser>>>my_transformation=KettleParser.Parse("/path/to/my_transformation.ktr")

Steps

转换中的所有步骤都可以通过steps属性进行迭代:

>>>forstepinmy_transformation.steps:...step.get_attribute("name")'Text file input'...step.get_attribute("type")'TextFileInput'

每种类型的步骤都有不同的属性,但您希望使用的常见属性是:

  • name:步骤的名称–这将是同一转换中所有步骤的唯一值
  • type:步骤类型
  • copies:启动该步骤的副本数(仅限(.ktr文件)

要按启用或禁用的步骤进行筛选,请分别使用get_enabled_steps()get_disabled_steps()方法。

Hops

转换中的所有跳都可以通过hops属性进行迭代:

>>>forhopinmy_transformation.hops:...hop.get_attribute("from")'Text file input'...hop.get_attribute("to")'Select values'...hop.get_attribute("enabled")True

每个跳包含三个主要属性:

  • from:源步骤的名称
  • to:目标步骤的名称
  • enabled:是否已启用跃点?(布尔值)

对于转换,hops对象包含所有跃点:启用和禁用,包括错误处理(请注意,启用/禁用和错误处理不是互斥的)。要轻松筛选不同类型的跃点,请使用以下方法:

  • get_enabled_hops():只返回已启用的跃点(包括错误处理)
  • get_disabled_hops():只返回已禁用的跃点(包括错误处理)
  • get_error_hops():只返回错误处理跃点的跃点(包括启用和禁用的跃点)

Graph

还可以通过调用kettlegraph类将转换表示为图形对象。这个类接受一个hop对象列表,用它来构建图形。

>>>importKettleParser>>>my_transformation=KettleParser.Parse("/path/to/my_transformation.ktr")>>>my_graph=KettleParser.KettleGraph(my_transformation.hops)

调用graph属性以获取python图形对象:

>>>my_graph.graph{'Text file input':['Select values'],'Filter rows':['Dummy (do nothing)','Text file output'],'Select values':['Filter rows']}

还可以通过使用find_all_paths()方法并将其传递给步骤名称来查找两个步骤之间的所有路径。此方法是一个生成器,允许您遍历所有可能的路径(请注意,非常复杂的转换在步骤之间可能有数千条路径):

>>>paths=my_graph.find_all_paths("Text file input","Text file output")>>>paths.next()['Text file input','Select values','Filter rows','Text file output']

Installation

要安装KettleParser,只需:

pip install KettleParser

Issues

请提交问题here

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
maven通过pom文件增加最大java堆大小   java如何在Kojo IDE输出窗格中打印到同一行?   如何使用特定的JRE交付Java应用程序?   java Cordova插件调用日志找不到符号   Java上Redis哈希中的spring列表   java ThreadSafeClientConnManager不是多线程   java如何在激活器中获取IEclipseContext   java如何通过编程更改除法器偏差   在中找不到maven Java/Mvn本地资源。罐包装   JOptionPane的java用户输入验证。showInputDialog   java编辑:如何更改日期对象的日期格式?   文件编写器Java;如何覆盖   一行中包含多个值的java读取属性   java如何在安卓中使用截击上传视频