QuickBI关于OpenAPI的使用问题梳理及高频需求实现样例

本文涉及的产品
智能商业分析 Quick BI,专业版 50license 1个月
简介: Quick BI企业客户所购买的多为专业版,且企业存在自有oa(办公)系统,组织架构庞大、复杂,系统多,权限分配及管理存在自有的集成系统统一管理,用以做到精准的权限管控。而Quick BI官方提供的OpenAPI提供了多样化的权限控制统一接口用以满足不同企业权限统一且自动化管控的的集成需求,本文针对Quick BI的工作流程、使用方法及限制以及针对高频场景从OpenAPI Explorer到封装python SDK由浅入深的给出了多种调用方式的使用样例。

一、概述

Quick BI企业客户所购买的多为专业版,且企业存在自有oa(办公)系统,组织架构庞大、复杂,系统多,权限分配及管理存在自有的集成系统统一管理,用以做到精准的权限管控。而Quick BI官方提供的OpenAPI提供了多样化的权限控制统一接口用以满足不同企业权限统一且自动化管控的的集成需求,本文针对Quick BI的工作流程、使用方法及限制以及针对高频场景从OpenAPI Explorer到封装python SDK由浅入深的给出了多种调用方式的使用样例。

二、OpenAPI的工作流程

  1. 客户发起指定API的请求,一般会通过如下两种方式向阿里云网关发送请求
  1. 阿里云官方SDK:支持java、python、C++等语言
  2. OpenAPI Explorer:可视化界面在线调试API
  1. 阿里云网关首先解析用户的请求,进行验签、鉴权,并根据api的调用信息找到对应产品线的服务提供者,携带请求参数及uid等唯一标识转发到QuickBI产品api的提供地址进行接口请求
  2. QuickBI后端根据请求参数处理完该请求后通过阿里云网关返回客户侧

二 、QuickBI产品侧OpenAPI的使用

1. 使用方法

QuickBI官网针对OpenAPI给出了官方支持的不同分类的api列表及调用参数等相关说明,链接如下:https://help.aliyun.com/document_detail/415066.html。根据自身需求可以点击相应的说明页并点击调试进入OpenAPI的调试界面

在调试页面可以通过如下三种方式进行操作

  • 手动输入参数并在网页上发起调用
  • 通过编辑示例SDK的代码,点击“运行示例”在临时的虚拟机中进行运行
  • 下载sdk到本地测试环境进行api的调用

2. 使用限制

  1. openapi目前仅支持国内公有云、金融云专业版用户的调用
  2. 调用的人需具备管理员权限并登录过quickbi工作台至少一次

  1. 行级权限管理相关api仅支持新版行列权限模型,旧版将报错

可以同步客户对旧版进行升级,但要充分提示客户新旧切换中可能遇到的问题,切换入口见下图

  1. CreateTicket中的GlobalParam参数需联系qbi运营人员添加白名单,否则调用报如下错:https://next.api.aliyun.com/api/quickbi-public/2022-01-01/CreateTicket?spm=a2c4g.11186623.0.0.15614f6cAkyVBg&params={}&tab=DOC
{
"RequestId": "CF76D780-4E90-543F-A1A7-C36107C7E3E4",
"HostId": "quickbi-public.cn-hangzhou.aliyuncs.com",
"Code": "AE0579000002",
"Message": "The global parameter function is restricted in your version",
"Recommend": "https://next.api.aliyun.com/troubleshoot?q=AE0579000002&product=quickbi-public"}


3. 常用参数id获取方式及途径

  1. UserId
  1. 截至发稿前,openapi官网已经维护了三个通过api获取的途径
  2. 用户也可以通过quickbi“用户管理”界面,“批量导出”用户excel进行获取
  1. TagId
  1. AddUserTagMeta:通过如下链接新建标签后返回 https://next.api.aliyun.com/api/quickbi-public/2022-01-01/AddUserTagMeta?lang=JAVA&params={}
  2. QueryUserTagMetaList:直接获取组织下所有标签的TagId https://next.api.aliyun.com/api/quickbi-public/2022-01-01/QueryUserTagMetaList?params={}&sdkStyle=old&lang=JAVA&tab=DEBUG
  1. UserGroupId
  1. CreateUserGroup:新建用户组的时候自定义输入并返回 https://next.api.aliyun.com/api/quickbi-public/2022-01-01/CreateUserGroup?lang=PYTHON&params={}&tab=DOC
  2. QueryUserGroupListByParentId:https://next.api.aliyun.com/api/quickbi-public/2022-01-01/QueryUserGroupListByParentId?params={}
  1. WorksId
  1. 仪表盘
  2. 电子表格
  3. 自助取数
  1. DataPortalId
  2. MenuIds
  1. ListPortalMenus:根据数据门户DataPortalId获取分层菜单列表https://next.api.aliyun.com/api/quickbi-public/2022-01-01/ListPortalMenus?params={}&tab=DEBUG
  1. DatasetId
  2. ApiId
  3. ApplicationId
  1. 需按照文档配置自定义渠道,开启自定义审批流,并根据下图所示的方法进行验签后获得https://help.aliyun.com/document_detail/389614.html

四、高频需求实现样例

如下三个需求最为常见,下面采用不同的实现方式由浅入深的进行高频需求的实现:

  • 通过openapi官网页面实现调用测试
  • 通过官方sdk实现简单代码调用-基于python
  • 以官方sdk为基础,根据客户需求实现特殊场景下的简单封装-基于python

1. Ticket票据实现免密登陆及权限控制

报表免密登陆,嵌入自有系统,数据权限控制和传参实现“千人千面”的安全增强方案AccessTicket票据接口CreateTicket:https://help.aliyun.com/document_detail/391291.html 。在拼接免密登陆的url时,通过网页调用测试参数及accesskeyid权限。

  1. 选择公有云或者金融云的服务地址
  2. 根据openapi文档填入api调用必填和选填的参数
  3. 点击发起调用并获得调用结果

2. 自定义权限审批流回调

企业权限审批集成至自有系统,在quickbi中的权限审批会按照“自定义渠道”中填写的webhook地址进行推送,待验签完成后,即可获得该审批流的ID:ApplicationId,根据此内容自定义回调审批流:ResultCallback,此处使用sdk进行样例实现。

  • 打开对应openapi官网,选择区域,填写上需要配置的参数(此处可以随意填写,仅作为生成样例sdk中类参数的便捷操作),sdk实例代码即会自动生成样例
  • 复制sdk示例代码至测试环境,集成自有系统配置,填入“审批理由”及“审批结果”,并配置好管理员权限的accessKeyId,accessKeySecret,内嵌测试系统或者直接运行相关的代码
  • 代码运行成功,可以在quickbi控制台,“我的审批”中查看详情,显示审批已经通过

3. 递归获取当前用户组目录树及UserGroupId

获取当前组织下quickbi工作台手动创建的(通过api创建的用户组会直接在请求中返回UserGroupId)所有用户组的UserGroupId用于在自有系统中进行用户组目录树的罗列和人员-用户组的管理。客户工单频率较高,所以根据当前openapi提供的接口QueryUserGroupListByParentId进行了该场景的二次封装,根据递归的方法得到当前组织目录树的样例。

  • 当前的组织示例:
  • 根据递归的方式封装的代码
# -*- coding: utf-8 -*-# author: syffromalibabacloud_quickbi_public20220101.clientimportClientasquickbi_public20220101Clientfromalibabacloud_tea_openapiimportmodelsasopen_api_modelsfromalibabacloud_quickbi_public20220101importmodelsasquickbi_public_20220101_modelsfromalibabacloud_tea_utilimportmodelsasutil_modelsimportjsonclassSample:
def__init__(self):
pass@staticmethoddefcreate_client(
access_key_id: str,
access_key_secret: str,
    ) ->quickbi_public20220101Client:
"""        使用AK&SK初始化账号Client        @param access_key_id:        @param access_key_secret:        @return: Client        @throws Exception        """config=open_api_models.Config(
access_key_id=access_key_id,
access_key_secret=access_key_secret        )
config.endpoint=f'quickbi-public.cn-hangzhou.aliyuncs.com'returnquickbi_public20220101Client(config)
@staticmethoddefget_all_user_group_ids(
access_key_id: str, access_key_secret: str, user_group_id: str="-1"    ) ->str:
"""        递归获取当前组织用户组的目录树        :param access_key_id:        :param access_key_secret:        :param user_group_id: 默认-1表示根结点        :return: 目录树的json字符串        """client=Sample.create_client(access_key_id, access_key_secret)
defhelper(user_group_id: str):
ifnotuser_group_id:
return []
query_user_group_list_by_parent_id_request= \
quickbi_public_20220101_models.QueryUserGroupListByParentIdRequest(
parent_user_group_id=user_group_id                )
runtime=util_models.RuntimeOptions()
try:
requests=client.query_user_group_list_by_parent_id_with_options(
query_user_group_list_by_parent_id_request, runtime)
return [{'user_group_name': i.user_group_name,
'user_group_id': i.user_group_id,
'parent_user_group_id': i.parent_user_group_id,
'child_group_list': helper(i.user_group_id)} foriinrequests.body.result]
exceptExceptionaserror:
print(f'user_group_id:{user_group_id}\t', error)
return []
returnjson.dumps(helper(user_group_id), ensure_ascii=False)
if__name__=='__main__':
user_group_desc=Sample.get_all_user_group_ids('LTAI5t9JzTe3JS9*******', 'lfYmlSmx57KjMdf**********', '-1')
print(user_group_desc)


  • 根据上述代码得到结果如下,可以正常获取到用户组目录树及对应的UserGroupId
[
    {
"user_group_name": "数据部",
"user_group_id": "c4e8a581-3a12-4410-b52e-e370d61bd79c",
"parent_user_group_id": "c7b29ffa-3f07-4379-b5eb-7bfcbcf3fc7e",
"child_group_list": [
            {
"user_group_name": "数据平台组",
"user_group_id": "165edc77-2b4f-4ff8-a31e-8e4887991316",
"parent_user_group_id": "c4e8a581-3a12-4410-b52e-e370d61bd79c",
"child_group_list": []
            },
            {
"user_group_name": "数据智能组",
"user_group_id": "91ce46b8-9cbd-4b8a-92e4-84222ac12d88",
"parent_user_group_id": "c4e8a581-3a12-4410-b52e-e370d61bd79c",
"child_group_list": []
            }
        ]
    },
    {
"user_group_name": "财务部",
"user_group_id": "12345",
"parent_user_group_id": "c7b29ffa-3f07-4379-b5eb-7bfcbcf3fc7e",
"child_group_list": []
    },
    {
"user_group_name": "人力部",
"user_group_id": "79f6179f-0f27-4c1a-bcc7-e234e0c9609b",
"parent_user_group_id": "c7b29ffa-3f07-4379-b5eb-7bfcbcf3fc7e",
"child_group_list": [
            {
"user_group_name": "员工关系部",
"user_group_id": "a7edd4fb-c781-47ce-91ef-f3b089a612ef",
"parent_user_group_id": "79f6179f-0f27-4c1a-bcc7-e234e0c9609b",
"child_group_list": [
                    {
"user_group_name": "原厂管理部",
"user_group_id": "f6aff865-167a-4a40-a51f-8951a92a6b10",
"parent_user_group_id": "a7edd4fb-c781-47ce-91ef-f3b089a612ef",
"child_group_list": []
                    },
                    {
"user_group_name": "生态管理部",
"user_group_id": "76a5b158-bc69-4267-933b-20b4d2f4d293",
"parent_user_group_id": "a7edd4fb-c781-47ce-91ef-f3b089a612ef",
"child_group_list": []
                    }
                ]
            },
            {
"user_group_name": "员工福利部",
"user_group_id": "5a9d3ce0-29d9-425d-ab1f-dfb71693df54",
"parent_user_group_id": "79f6179f-0f27-4c1a-bcc7-e234e0c9609b",
"child_group_list": []
            }
        ]
    }
]
相关实践学习
助力游戏运营数据分析
本体验通过多产品组合构建了游戏数据运营分析平台,提供全面的游戏运营指标分析功能,并有效的分析渠道效果。更加有效地掌握游戏运营状态,也可充分利用数据分析的结果改进产品体验,提高游戏收益。
Quick BI在业务数据分析中的实战应用
Quick BI 是一款专为云上用户和企业量身打造的新一代自助式智能BI服务平台,其简单易用的可视化操作和灵活高效的多维分析能力,让精细化数据洞察为商业决策保驾护航。为了帮助您更快的学习和上手产品,同时更好地感受QuickBI在业务数据分析实践中的高效价值,下面将以一个真实的数据分析案例为场景带您开启QuickBI产品之旅。场景:假设您是一家大型互联网新零售企业的数据分析师,您的经理刚刚拿到8月份的月度运营分析数据,他发现近期企业运营状况不佳,8月份毛利额环比前几个月下滑较大,三季度存在达标风险。因此将这个任务交给了您,根据订单信息和流量渠道信息等相关数据,分析企业8月份毛利额下滑的关键要素,并将其分享给团队,以便指导相关业务部门采取决策和行动,提高企业整体毛利额。  
相关文章
|
运维 搜索推荐 API
Dataphin 提供各模块对应的 OpenAPI
Dataphin 提供各模块对应的 OpenAPI
295 2
|
6月前
|
存储 监控 数据可视化
基于阿里云 OpenAPI 插件,让 Grafana 轻松实现云上数据可视化
本文旨在提供一个指导性的框架,帮助用户了解插件的安装、配置以及探索如何通过 Grafana 内的阿里云 OpenAPI 插件来对云上数据进行可视化和快速验证开发原型,加强数据可视化和云监控能力,助力开发速度。
33560 20
|
4月前
|
数据采集 DataWorks 安全
DataWorks产品使用合集之补数据的api接口是什么
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
5月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之OpenAPI列表可以在什么地方查看
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
7月前
|
数据可视化 数据库
OpenSearch如何可视化分析数据?
OpenSearch如何可视化分析数据
226 0
|
SQL 运维 DataWorks
阿里云 DataWorks v2.0 常见问题与难点解析整理
阿里云 DataWorks v2.0 常见问题与难点解析整理
506 0
阿里云 DataWorks v2.0 常见问题与难点解析整理
|
存储 弹性计算 自然语言处理
揭开云的面纱,OpenAPI服务分析
在上一篇《揭开云的面纱,从云的语言OpenAPI开始》从语言的视角对OpenAPI做了一个案例分析RunInstance。不难发现:RunInstances包含了 计算、存储、网络、安全等核心“部件”,符合“冯诺依曼结构”。对应单个服务器,由计算、存储、网络、安全融合为一个“硬件+软件“的台式机。在云原生环境下,云服务器变成了由分布式的计算池、存储池、网络池、安全服务等通过‘微服务’组装成云上的‘服务器‘,依然符合’冯诺伊曼‘架构’。那么这些微服务,提供计算、存储、网络等是如何‘粘合’一起,完整地支持OpenAPI的服务器请求处理的呢?下面进行分析。
466 1
揭开云的面纱,OpenAPI服务分析
|
存储 DataWorks 算法
依赖DataWorks OpenAPI补数据实现圈人
从2020年10月份起DataWorks为企业版提供了API的能力,我们可以根据现有的API能力打通应用与离线数据加工,从而让大数据能直接为在线应用服务,本篇文章使用圈人功能做一个简单的介绍实现;
2024 0
依赖DataWorks OpenAPI补数据实现圈人
|
数据采集 分布式计算 运维
DataWorks OpenAPI 实战-数据开发全流程介绍
DataWorks作为飞天大数据平台操作系统,历经11年发展,形成了涵盖数据集成、数据开发、数据治理、数据服务的一站式大数据开发治理平台。很多企业用户在使用产品的过程中希望他们的本地服务能够和阿里云上的DataWorks服务进行交互,从而提升企业大数据处理的效率,减少人工操作和运维工作,降低数据风险和企业成本,现在DataWorks开放OpenAPI能力满足企业的定制化需求。
7064 0
DataWorks OpenAPI 实战-数据开发全流程介绍
|
自然语言处理 运维 程序员
OpenAPI开发者挑战赛第三期——是时候展现真正的“码术”了!
CodeSample全民赛码,与数万开发者一起,秀出你的“码”!
OpenAPI开发者挑战赛第三期——是时候展现真正的“码术”了!
下一篇
DataWorks