跳到主要内容

预策数据魔方

本文档说明 Open Insight 标准对象从预策哪些接口获取。当前预策连接器以 pull 为主,接口统一通过 YuceClient 访问,PAT/personkey 认证头使用 X-Access-Token

登录授权

Open Insight 通过 Personal Access Key 访问预策数据魔方。可以通过以下两种方式获取。

方式一:在页面中直接获取

访问预策数据魔方的 Personal Access Token 页面:

https://xxx.yyy.com/#/personal-access-token

https://xxx.yyy.com 替换为所在环境的预策数据魔方地址,然后在页面中创建并复制 Personal Access Key。此方式适用于当前部署版本提供该页面的用户。

方式二:通过接口手动获取

如果当前版本没有 Personal Access Token 页面,可以使用已登录会话中的 YCSESSIONID 创建 Personal Access Key:

  1. 登录并访问预策数据魔方首页。

  2. 打开浏览器开发者工具,进入 应用(Application)→ Cookie → 当前站点域名,找到并复制 YCSESSIONID 的值。

    在浏览器开发者工具中获取 YCSESSIONID

  3. 在本地命令行中执行以下请求,将地址和 YCSESSIONID 替换为所在环境的真实值:

curl -X POST 'https://{预策数据魔方地址}/api/personalAccessToken/create?tokenName=CLI&expireDays=365' \
-H 'Content-Type: application/json;charset=UTF-8' \
-b 'YCSESSIONID={YCSESSIONID}'

例如:

curl -X POST 'https://xxxxx.yyyy.com/api/personalAccessToken/create?tokenName=cli&expireDays=365' \
-H 'Content-Type: application/json;charset=UTF-8' \
-b 'YCSESSIONID=xxxxx'

从接口返回内容中获取 tokenValue

请求成功后,返回内容中的 tokenValue 即为 Personal Access Key。

授权信息安全

YCSESSIONID 和 Personal Access Key 都属于敏感授权信息。推荐在自己的本地命令行中执行请求,不要将真实值粘贴到聊天、文档或日志中;让 Codex 代为执行可能使授权信息经过代码执行中转环境。若信息意外泄露,请尽快撤销或更换。

接口总览

标准对象Pull 范围主要预策接口补充预策接口说明
Cluster所有 pull预策连接器按约定自动创建默认集群,engineType=starrocks
Tabletable / allPOST /asset/retrieveAssetsPOST /worktable/loadWorkTableDetailPOST /worktable/getAllFields从资产检索接口分页发现工作表,再拉取工作表详情和字段列表。
Tasktask / allPOST /etlScheduleTaskApi/pageTaskInfoPOST /lineage/getLineageDag从调度任务分页接口获取任务名称、负责人、调度周期、状态和任务模板信息;上游血缘内联到 lineage
User实时查询GET /user/getAllUserNames分页获取用户,映射为 user list 输出。
Baseline实时查询POST /pageBaselineInfo分页获取基线定义,映射为 baseline list 输出。
Dashboard实时查询GET /site/listReportFormPOST /reportForm/loadFormByFormIdPOST /reportForm/queryFormCards通过 dashboard list/get 实时读取远端最新仪表盘信息,不写入 source/
Chart实时查询POST /reportForm/queryFormCardsPOST /reportFormItem/getItemById / POST /reportFormItem/getCardData通过 chart list/get/query 实时读取远端最新图表信息和数据,不写入 source/

user listdashboard list/getchart list/get/querysubject list/getpermission get 是实时查询能力,不属于标准对象 pull,也不写入 cache.yamlsource/

对象明细

Cluster

Cluster 表示预策背后的默认计算引擎。当前不通过预策接口拉取,而是由连接器自动生成:

kind: Cluster
id: cluster.yuce.default
systemId: system.yuce
engineType: starrocks
extensions:
yuce:
nodeId: ""

cluster query 通过 POST /analysis/previewDynamicSqlData 执行 SQL。请求体包含:

{
"dynamicParameterList": [],
"sql": "select * from fxxb0507"
}

连接器使用 FINANCE_MASTER 应用版本,dynamicParameterList 固定传空数组,SQL 中直接使用表名。响应中的 data.fields 用于生成列名,data.rows[].columns 用于生成结果行。

Table

Table 表示预策工作表。

接口链路:

  1. POST /asset/retrieveAssets
    • 参数包含 retrieveType=WORKTABLEpagesizequeryWord
    • 用于分页发现工作表。
    • 当前从列表项读取 objectIdtableIdid 作为远端表 id。
  2. POST /worktable/loadWorkTableDetail
    • 参数包含 tableId
    • 用于获取表名、展示名、负责人、来源类型、资产节点等详情。
  3. POST /worktable/getAllFields
    • 参数包含 tableId
    • 用于获取字段列表,映射为标准对象的 columns
  4. POST /lineage/getLineageDag
    • table lineage <node_id> 实时查询数据血缘。
    • 参数固定包含 expandType=UP_STREAMgraphType=DATA_LINEAGEmaxLevel(默认 3)、nodeId
    • 默认输出完整 JSON;--format table 会输出 lineageNodesdependencies 两张完整表格。

关键字段映射:

标准字段预策字段来源
id{kind}.yuce.{safeToken(remoteId)} 标准化生成(见 helpers.objectId
remoteId列表项 objectIdtableIdid(取首个非空值)
title详情 aliasTableNametableAliasNamedisplayName;兜底列表项 aliasTableNamedisplayNametableNamename
ownerownerNamecreatorNameassetNodeVO.ownerNameassetNodeVO.creatorName
clusterId固定写入 cluster.yuce.default
tabletableNamename
tableType固定 table
columns[].namefieldNamenamecolumnNamefieldId
columns[].typefieldTypetypedataType
columns[].nullablenullable
columns[].descriptiondescriptioncommentfieldDesc
extensions.yuce.sourceTypetableSourceTypeEnumsourceTypesource_type
extensions.yuce.assetClassassetClass
extensions.yuce.sourceNamesourceNamesource_name

Task

Task 表示预策调度任务。

接口链路:

  1. POST /etlScheduleTaskApi/pageTaskInfo
    • 参数包含 taskNamepageIndexpageSize
    • 用于分页获取调度任务。
  2. POST /lineage/getLineageDag
    • 参数包含 expandType=UPDOWN_STREAMgraphType=TASKmaxLevelnodeId(等于 taskCode)。
    • 用于获取上游血缘,内联写入 lineage
  3. POST /lineage/getLineageDag
    • task lineage <task_id> 实时查询上下游任务血缘。
    • 参数固定包含 expandType=UPDOWN_STREAMgraphType=TASKmaxLevel(默认 3)、nodeId(等于 task_id)。
    • 默认输出完整 JSON;--format table 会输出 lineageNodesdependencies 两张完整表格。

关键字段映射:

标准字段预策字段来源
id{kind}.yuce.{safeToken(remoteId)} 标准化生成(见 helpers.objectId
remoteIdtaskCodetask_codeid
titletaskNametask_name
ownerownerNameownercreateUser
scheduleschedulePeriodperiod
statustaskStatusstatus
templateCodetaskTemplateCode
templateNametaskTemplateName
inputsdependencies[].parentNodes 解析出的上游 nodeId,标准化为 task.yuce.{safeToken(nodeId)}
lineage.maxLevelpull 参数 maxLevel(默认 1
lineage.upstreamTaskCodesdependencies[].parentNodes 沿父节点图解析
lineage.lineageNodesPOST /lineage/getLineageDag 返回的 lineageNodes
lineage.dependenciesPOST /lineage/getLineageDag 返回的 dependencies
lineage.groupsPOST /lineage/getLineageDag 返回的 groups
extensions.yuce.taskCodetaskCode
extensions.yuce.rawStatustaskStatusstatus

User

User 表示预策用户账号。

接口链路:

  1. GET /user/getAllUserNames
    • 查询参数包含 pagepageSize
    • 用于分页获取用户。

关键字段映射:

标准字段预策字段来源
iduser.yuce.{safeToken(remoteId)} 标准化生成
remoteIduserIduser_ididusernameuserName、字符串记录本身
titlerealNamenickNamedisplayNameuserNameusername、字符串记录本身
usernameusernameuserNamename、字符串记录本身
namename
displayNamedisplayNamerealNamenickNameuserName
emailemailmail
departmentdepartmentNamedepartmentdeptNamedept
statusstatususerStatusenabled
extensions.yuce.userId标准化前的 remoteId
extensions.yuce.username标准化后的 username

Baseline

Baseline 表示预策基线定义。

接口链路:

  1. POST /pageBaselineInfo
    • 参数包含 currentpageSize
    • 用于分页获取基线列表。

关键字段映射:

标准字段预策字段来源
id{kind}.yuce.{safeToken(remoteId)} 标准化生成(见 helpers.objectId
remoteIdbaselineIdbaseline_ididbaselineCode
titlebaselineNamebaseline_namenametitle
ownerownerNameownercreateUsercreatorName
statusbaselineStatusstatusbaselineStatusType
promiseTimepromiseTimepromise_timetargetTimebaselineTime
taskIdstaskCodestaskCodeListrelatedTaskCodestaskList 中的任务编码,标准化为 task.yuce.{safeToken(taskCode)}
extensions.yuce.baselineIdbaselineId
extensions.yuce.taskCodes原始任务编码列表

BaselineInstance

BaselineInstance 表示某业务日期下的基线运行实例。不通过本地缓存同步,也不写入本地缓存;openinsight baseline-instance list --date 每次直接查询远端。

接口链路:

  1. POST /pageBaselineInstanceInfo
    • 参数包含 currentpageSizebaselineDatebaselineStatusTypeListcompleted
    • 用于分页获取指定日期的基线实例。
  2. GET /listBaselineInstanceRelatedTaskInstance
    • 查询参数包含 baselineInstanceId
    • 用于获取基线实例关联的调度实例,内联写入 taskInstances

关键字段映射:

标准字段预策字段来源
idbaseline-instance.yuce.{safeToken(remoteId)}
remoteIdbaselineInstanceIdbaseline_instance_ididinstanceId
titlebaselineNamebaseline_namenametitle
baselineIdbaselineIdbaseline_idbaselineCode,标准化为 baseline.yuce.{safeToken(baselineId)}
baselineDateCLI --date 参数
statusbaselineStatusTypebaselineStatusstatus
completedcompleted
promiseTimepromiseTimepromise_timetargetTime
actualTimeactualTimeactual_timefinishTimeendTime
taskInstancesGET /listBaselineInstanceRelatedTaskInstance 返回记录列表
extensions.yuce.baselineInstanceIdbaselineInstanceId
extensions.yuce.baselineRemoteIdbaselineId

Dashboard

Dashboard 表示预策仪表盘。

site get <site_id> 会调用 GET /site/getSite?siteId=<site_id> 读取站点信息和节点树,并递归遍历 siteNodeTreeBO.childListnodeType=2 的节点。每个节点的 nodeContent 会作为仪表盘远端 id 继续查询仪表盘详情,最终在返回 JSON 的 dashboards 字段中保留节点路径、节点 id 和仪表盘详情。

接口链路:

  1. GET /site/listReportForm
    • 参数包含 size=2000keyWord=
    • 用于发现仪表盘列表;如果返回数量达到 2000,会打印结果可能不完整的警告并继续。
  2. POST /reportForm/loadFormByFormId
    • 参数包含 formId
    • 用于获取仪表盘详情。
  3. POST /reportForm/queryFormCards
    • 参数包含 formId
    • 用于获取仪表盘内卡片列表,并映射为标准对象的 charts 引用。

关键字段映射:

标准字段预策字段来源
id{kind}.yuce.{safeToken(remoteId)} 标准化生成(见 helpers.objectId
remoteIdreportFormIdformIddashboardIdid
title详情 nameformNametitle;兜底列表 nameformNametitlereportFormName
ownerownerNameownercreateUser
charts卡片 iditemIdcardId 标准化为 chart.yuce.{safeToken(cardId)}
extensions.yuce.siteIdsiteId
extensions.yuce.siteNamesiteNamesiteTitle

Chart

Chart 表示预策仪表盘中的图表卡片。

接口链路:

  1. GET /site/listReportForm
  2. POST /reportForm/queryFormCards
    • 前两个接口用于发现所有仪表盘和仪表盘卡片。
  3. POST /reportFormItem/getItemById
    • 参数包含 itemIdformId
    • 用于获取图表完整配置。当前不会额外传入 version=WORKING

关键字段映射:

标准字段预策字段来源
id{kind}.yuce.{safeToken(remoteId)} 标准化生成(见 helpers.objectId
remoteId卡片 iditemIdcardId
titlenameitemNamecardNametitle
dashboardId所属仪表盘 formId 标准化为 dashboard.yuce.{safeToken(formId)}
chartTypechartTypechart_type,兜底 cardTypeitemTypetype
query.sqlsqlTextsqlContentsqlfinalSqlcustomSqlsqlTemplateplaceholderSqlsql_textsql_template
datasetIdsrcCollectionIdcollectionIdcollection_id;非 -1 时映射为 dataset.yuce.{safeToken(collectionId)}
dimensionsdimensions 中的 namefieldNamefieldIdfieldTypefieldAliasexpression 等字段标准化为对象数组
measuresmetricsmeasures,或 cardDataConfigList[].cardDataConfigElement.fieldConfigList 中的指标字段标准化为对象数组
measures[].comparison指标字段 contrastInfo,用于保留日环比、周同比、月同比、年同比等配置
measures[].proportion指标字段 proportionCalculateParam,用于保留列占比、行占比等配置
measures[].format指标字段 numberFormatConfig
filtersqueryConditionListqueryConditionsfilterConditionsconditions 标准化为对象数组
extensions.yuce.cardTypecardTypeitemTypetype
extensions.yuce.collectionIdsrcCollectionIdcollectionIdcollection_id
extensions.yuce.dashboardRemoteId所属仪表盘远端 id
extensions.yuce.siteId所属站点 id

Permission

Permission 查询不映射为本地标准对象,只通过 openinsight permission get 实时读取预策权限接口,并原样输出 JSON。

接口链路:

  1. GET /centralizedAuthorization/getShieldResourceInfo
    • --scope functionresourceType=PLATFORM_PERMISSION
    • --scope dataresourceType=DATA
    • --scope dashboardresourceType=CUBE_SITE_PERMISSION
    • 查询参数包含 authId=<user-id>authType=<auth-type>
  2. POST /centralizedAuthorization/getBenchResourceSubNodes
    • --scope data-resource 使用该接口。
    • 请求体包含 authObjectId=<user-id>authTargetType=<auth-type>,并固定传 parentId=uaKymyLsPIresourceShareType=PUBLICshieldQueryType=PUBLIC_RESOURCE

示例:

openinsight permission get --scope function --user-id 0795386429996234
openinsight permission get --scope data-resource --user-id 0795386429996234
openinsight permission get --scope data --user-id 0795386429996234
openinsight permission get --scope dashboard --user-id 0795386429996234

Subject

Subject(指标中心-分析主体)查询不映射为本地标准对象,只通过 openinsight subject list/get 实时读取预策指标中心-分析主体接口。

接口链路:

  1. GET /objectTypeApi/v2/listObjectTypes
    • openinsight subject list 使用该接口,输出指标中心-分析主体清单表格。
  2. GET /objectTypeApi/use/v2/loadObjectTypeProperties
    • openinsight subject get <object_type_rid> 使用该接口查询属性。
    • 查询参数包含 objectTypeRid=<object_type_rid>
  3. GET /ontologyObjectTypeRelationshipApi/getObjectTypeRelationships
    • openinsight subject get <object_type_rid> 使用该接口查询关系。
    • 查询参数包含 objectTypeRid=<object_type_rid>

示例:

openinsight subject list
openinsight subject get Br8I2dsv4F

暂未通过预策接口拉取的标准对象

标准对象当前状态
Cluster由连接器约定生成默认对象,不从预策业务接口拉取。
Dataset当前没有独立预策 dataset pull。Chart.datasetId 仅根据图表配置中的 collection id 生成引用。

Pull 输出位置

标准对象输出目录
Clustersource/clusters/*.cluster.yaml
Tablesource/tables/*.table.yaml
Tasksource/tasks/*.task.yaml
User不写入本地文件,由 user list 实时查询
Baseline不写入本地文件,由 baseline list 实时查询
BaselineInstance不写入本地文件,由 baseline-instance list --date 实时查询
Dashboard不写入本地文件,由 dashboard list/get 实时查询
Chart不写入本地文件,由 chart list/get/query 实时查询
Subject不写入本地文件,由 subject list/get 实时查询

除实时查询对象外,其他对象仅在启用 --save-raw 时写入相同目录下的 *.raw.json