singer.io tap用于从DayForce Rest API v1中提取数据
tap-dayforce的Python项目详细描述
轻触DayForce
点击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格式的配置文件作为参数。此配置文件有四个必需字段:
username
:有效的DayForce Web服务用户帐户用户名。password
:有效的dayforce web服务用户帐户密码。client_name
:将插入请求url的有效客户端名称(例如公司名称)。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:
Employees
:Endpoint DocumentationEmployeePunches
:Endpoint 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
水龙头偶尔会发出Metric、Schema、Record和State 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格式的配置。此配置文件有两个必需字段:
client_id
:与要向其发送数据的缝合数据帐户关联的ID。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 ^{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>
例如,要在提交更改之前使用isort和flake8格式化代码,请运行以下命令:
$ 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!