问题描述
我对 Matillion 完全陌生,我不确定如何管理 POST 请求的 Matillion API 配置文件。
我有一个编排和转换工作,它从源中提取数据并通过转换执行业务逻辑并将数据加载到目标表中。
将数据加载到目标表(SNowflake DB)后,我需要从中提取数据并进行 API POST 调用以将 JSON 格式的数据摄取给第三方供应商。
Sample command line argument to make API post call using curl
curl -L https://xxx.xxxxx.xxx/v1/load_data -X POST -H 'Content-Type: application/json' -H 'x-api-key: somekey' -d '{"is_ingestion_finished": false,"job_id": "","chunk_number": 1,"payload": [{"key1": "value1","key2": "value2"},{"key1": "value1_1","key2": "value2_2"}]'
上述命令行参数将通过 POST 摄取数据。请注意,“is_ingestion_finished”值需要设置为false,直到从目标表中检索到最后一个数据块,并且在最后一个块处应将其设置为true。对于第一个块,“job_id”应设置为 null。处理完第一个块后,我们将在 API 响应中获取作业 ID,并且需要将其用于其余的块。
我浏览了 Matillion 文档,似乎 API 查询组件用于通过 API 发出 GET 请求并将其存储在表中。
不确定如何通过发出 API 发布请求来发布目标表中的数据,而且我将需要分页逻辑来发布请求,因为数据集很大并且需要分块发送结果集。
我目前使用的 Matillion 版本是 1.46.5(build 2)。任何有关配置 API 配置文件或任何示例 rsd 脚本或 python 脚本的步骤的帮助将不胜感激。谢谢!
解决方法
您可以按如下方式执行此操作:
- 定义一个作业变量来包含雪花表中的负载
- 使用'query result to scalar'组件将snowflake中的payload加载到变量中
- 使用“Python 脚本”组件(编排作业:脚本)在 Matillion 中执行 POST 事件。
Matillion 中还有一个新组件:“Webhook Post”,它也可以满足您的需求:https://documentation.matillion.com/docs/2576584