如何从JIRA获取表单数据并导入Snowflake(Matillion场景)
JIRA表单数据在Snowflake同步中的定位与获取方法
核心数据存储逻辑
JIRA的「表单数据」(无论是自定义字段组成的工单表单,还是Jira Service Management的请求表单)不会单独存放在一张名为「form」的表中,而是分散在关联的核心表和扩展表里:
- 通用自定义表单字段:数据存在
customfieldvalue表,通过issueid关联jiraissue(工单核心表);字段的定义信息在customfield表,用customfield.id和customfieldvalue.customfield关联就能匹配字段名与对应值。 - Jira Service Management(JSM)请求表单:额外的表单上下文数据在
request表,表单字段值存在requestfieldvalue表,通过request.issueid关联jiraissue;表单的字段定义在requesttypefield表,关联requesttype(对应不同的请求表单类型)。
同步与查询注意事项
- 权限与数据源配置
- 确认你的JIRA Token拥有对应权限:如果是JSM表单,需要包含Service Management相关的访问权限,否则Matillion无法拉取
request系列表。 - 在Matillion的JIRA数据源配置里,检查是否勾选了
customfield、customfieldvalue、request、requestfieldvalue这些容易被遗漏的表,默认同步可能只拉取核心工单表。
- 确认你的JIRA Token拥有对应权限:如果是JSM表单,需要包含Service Management相关的访问权限,否则Matillion无法拉取
- API拉取补充(如果表同步不全)
- 如果通过表同步无法获取完整表单数据,可以在Matillion中调用JIRA REST API的
/rest/servicedeskapi/request/{issueIdOrKey}接口,解析返回的JSON字段后写入Snowflake。
- 如果通过表同步无法获取完整表单数据,可以在Matillion中调用JIRA REST API的
Snowflake中查询表单数据示例
通用自定义表单字段查询
SELECT j.id AS issue_id, j.summary AS issue_summary, cf.cfname AS form_field_name, cv.stringvalue AS form_field_value FROM jiraissue j LEFT JOIN customfieldvalue cv ON j.id = cv.issueid LEFT JOIN customfield cf ON cv.customfield = cf.id WHERE j.id = 'YOUR_ISSUE_ID';
JSM请求表单数据查询
SELECT r.id AS request_id, j.summary AS request_summary, rt.name AS form_type, rtf.name AS form_field_name, rfv.value AS form_field_value FROM request r LEFT JOIN jiraissue j ON r.issueid = j.id LEFT JOIN requesttype rt ON r.requesttypeid = rt.id LEFT JOIN requestfieldvalue rfv ON r.id = rfv.requestid LEFT JOIN requesttypefield rtf ON rfv.requesttypefieldid = rtf.id WHERE r.id = 'YOUR_REQUEST_ID';
内容的提问来源于stack exchange,提问作者Xi12
相关产品推荐
相关产品推荐

