singer.io tap用于从DayForce Rest API v1中提取数据

tap-dayforce的Python项目详细描述


轻触DayForce

PyPI versionLicense: GPL v3Python VersionsBuild Status

点击Singer可从Dayforce REST API v1中提取数据。

安装

由于包依赖关系往往在不同的tap和目标之间发生冲突,singerrecommends将tap和目标安装到它们自己独立的虚拟环境中:

安装DayForce水龙头

$ python3 -m venv ~/.venvs/tap-dayforce
$ source ~/.venvs/tap-dayforce/bin/activate
$ pip3 install tap-dayforce
$ deactivate

安装缝合目标(可选)

$ python3 -m venv ~/.venvs/target-stitch
$ source ~/.venvs/target-stitch/bin/activate
$ pip3 install target-stitch
$ deactivate

配置

tap接受json格式的配置文件作为参数。此配置文件有四个必需字段:

  1. username:有效的DayForce Web服务用户帐户用户名。
  2. password:有效的dayforce web服务用户帐户密码。
  3. client_name:将插入请求url的有效客户端名称(例如公司名称)。
  4. email:要插入http请求头的From头中的有效电子邮件地址。

需要注意的是,附加到配置文件中使用的用户帐户的角色必须至少启用“web服务”功能以及“读取数据”子功能。

一个简单的dayforce配置文件可能如下所示:

{"username":"foo","password":"bar","client_name":"foo_bar","email":"foo.bar@gmail.com"}

此外,您可以为单个流指定更细粒度的配置。流下的每个键都应该表示该端点的有效api请求参数。更充实的配置文件可能类似于以下内容:

{"username":"foo","password":"bar","client_name":"foo_bar","email":"foo.bar@gmail.com","streams":{"employees":{"expand":"EmploymentStatuses,Roles,EmployeeManagers,CompensationSummary,Locations,LastActiveManagers"},"employee_punches":{"filterTransactionStartTimeUTC":"2019-06-01T00:00:00Z"}}}

当前版本的tap同步两个不同的Streams

  1. EmployeesEndpoint Documentation
  2. EmployeePunchesEndpoint Documentation

发现

singer taps描述流通过Discovery进程支持的数据。通过在运行时传递--discover标志,可以在发现模式下运行dayforce tap:

$ ~/.venvs/tap-dayforce/bin/tap-dayforce --config=config/dayforce.config.json --discover

点击将生成一个Catalog到标准输出。要将目录传递给文件,只需将其重定向到文件即可:

$ ~/.venvs/tap-dayforce/bin/tap-dayforce --config=config/dayforce.config.json --discover > catalog.json

同步到标准输出

Sync mode中运行tap将从各种选定流中提取数据。要在同步模式下运行tap并将消息发送到stdout,请传递有效的配置文件和目录文件:

$ ~/.venvs/tap-dayforce/bin/tap-dayforce --config=config/dayforce.config.json --catalog=catalog.json

水龙头偶尔会发出MetricSchemaRecordState messages。通过将消息重定向到文件,可以在运行之间保持状态:

$ ~/.venvs/tap-dayforce/bin/tap-dayforce --config=config/dayforce.config.json --catalog=catalog.json >> state.json
$ tail -1 state.json > state.json.tmp
$ mv state.json.tmp state.json

同步到缝合

您还可以将tap的输出发送到Stitch Data以便加载到数据仓库中。为此,首先为stitch创建一个json格式的配置。此配置文件有两个必需字段:

  1. client_id:与要向其发送数据的缝合数据帐户关联的ID。
  2. token与Stitch数据帐户中的特定Import API integration关联的令牌。

配置文件示例如下:

{"client_id":1234,"token":"foobarfoobar"}

创建配置文件后,只需将抽头的输出通过管道发送到Stitch数据目标,并向目标提供新创建的配置文件:

$ ~/.venvs/tap-dayforce/bin/tap-dayforce --config=config/dayforce.config.json --catalog=catalog.json --state=state.json | ~/.venvs/target-stitch/bin/target-stitch --config=config/stitch.config.json >> state.json
$ tail -1 state.json > state.json.tmp
$ mv state.json.tmp state.json

贡献

贡献的第一步是获得源代码的副本。首先,fork ^{} on GitHub。然后,cd进入源代码副本所在的目录并克隆源代码:

$ git clone git@github.com:YourGitHubName/tap-dayforce.git

既然在本地计算机上有了源代码的副本,就可以利用Pipenv和相应的Pipfile在虚拟环境中安装开发依赖项:

$ pipenv install --three --dev

此命令将为您的tap-dayforce项目创建一个独立的虚拟环境,并安装环境内部Pipfile中定义的所有开发依赖项。然后可以在环境中输入外壳:

$ pipenv shell

或者,您可以在环境中运行单独的命令,而无需输入shell:

$ pipenv run <command>

例如,要在提交更改之前使用isortflake8格式化代码,请运行以下命令:

$ pipenv run make isort
$ pipenv run make flake8

在使用tox

$ pipenv run tox

最后,您可以使用如下命令在虚拟环境中运行本地版本的tap:

$ pipenv run tap-dayforce --config=config/dayforce.config.json --catalog=catalog.json

一旦您确认了您的更改有效并且测试套件通过了测试,请随时发布一个pr!

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

推荐PyPI第三方库


热门话题
二进制字符串的java NumberFormatExceprion   java如何在Neo4j中查找/匹配/选择标识符名称   java哪一年的日期与原始年份相同?   java什么时候JAXB可以用于Json而不是XML?   java使用PayPal权限API进行PayPal支付   java Getting error在使用安卓 vision api扫描二维码时加载图像失败   java直接突出显示RichTextFX中的一个文本范围   java Resolve@RegisteredAuth2AuthorizedClient,其令牌在spring Security 5.2的spring server之外获得。十、   yyyymmddhhmmss的Java正则表达式   java我试图将google recaptcha与spring mvc集成,但GreCaptCharResponse总是返回false。这里有一些代码   java使用JsonPath将文本转换为json   java无法解析符号。Maven依赖项已就位,但代码为红色   java使用循环查找范围内具有不同数字的数字   java这个SwingWorker是否不重用ThreadPoolExecutor中的线程?