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

简介: 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月份毛利额下滑的关键要素,并将其分享给团队,以便指导相关业务部门采取决策和行动,提高企业整体毛利额。  
相关文章
|
7月前
|
存储 机器学习/深度学习 运维
课时1:日志服务 SLS 可观测数据分析平台介绍
课时1:日志服务 SLS 可观测数据分析平台介绍
335 0
|
9月前
|
存储 数据采集 监控
阿里云SLS简介和购买流程
阿里云SLS是阿里巴巴集团旗下的一款日志服务产品。作为阿里云日志服务的核心组成部分,阿里云SLS(Simple Log Service)为企业提供了一种高效、安全、稳定的日志收集、存储、检索和分析解决方案。
|
9月前
|
数据采集 SQL 运维
阿里云日志服务SLS简介和购买流程
日志服务SLS是云原生观测与分析平台,为Log、Metric、Trace等数据提供大规模、低成本、实时的平台化服务。日志服务一站式提供数据采集、加工、查询与分析、可视化、告警、消费与投递等功能,全面提升您在研发、运维、运营、安全等场景的数字化能力
|
存储 运维 监控
SLS 初体验:采集、加工、查询分析及可视化(一)| 学习笔记
快速学习 SLS 初体验:采集、加工、查询分析及可视化。
305 0
SLS 初体验:采集、加工、查询分析及可视化(一)| 学习笔记
|
存储 数据采集 弹性计算
SLS 初体验:采集、加工、查询分析及可视化(二)| 学习笔记
快速学习 SLS 初体验:采集、加工、查询分析及可视化。
187 0
SLS 初体验:采集、加工、查询分析及可视化(二)| 学习笔记
|
存储 运维 监控
CloudLens for OSS--数据洞察可观测平台发布
日志服务联合阿里云OSS推出CloudLens for OSS,支持Bucket粒度的统一管理视图,支持资源用量、访问分析、异常检测、安全分析等可视化分析能力,提供场景化运维管理,实现Bucket资产的可观测性。
202 0
|
监控 关系型数据库 Serverless
基于 Serverless+OSS 分分钟实现图片秒变素描
在阿里云 Serverless 函数计算服务中部署普通图片转素描图的函数服务,实现批量上传到指定 OSS 桶内的图片自动转换为素描图并保存到另一个 OSS 桶内。
基于 Serverless+OSS 分分钟实现图片秒变素描
|
监控 关系型数据库 Serverless
基于Serverless+OSS分分钟实现图片秒变素描
在阿里云Serverless函数计算服务中部署普通图片转素描图函数服务,实现将批量上传到指定OSS桶内的图片自动转换为素描图并保存到另一个OSS桶内
基于Serverless+OSS分分钟实现图片秒变素描
|
SQL 运维 监控
SLS 智能异常分析 APP 时序预测最佳实践
日志服务 SLS 智能异常分析 APP 提供自动化、智能化时序预测能力,可以根据历史数据预测时序指标接下来一段时间的走势。您可以使用指标的走势并配合告警对于系统的潜在风险进行预警,例如当某个指标的预测值超过某个阈值时对运维人员进行告警;另外指标的走势也可以帮助您及时进行决策,例如预测到 CPU 使用率将会持续上升时,及时对系统进行扩缩容。
500 1
|
运维 Kubernetes 监控
SLS 智能异常分析 APP 文本分析作业最佳实践
日志服务 SLS 智能异常分析 APP 中文本分析作业可以自动分析日志内容、检测日志内容的异常变化,将日志中的异常事件以报表的形式呈现。我们可以通过查看分析报表了解系统的健康状态,通过分析异常事件及时感知系统的潜在风险或者在系统异常时快速定位根因。
406 2
SLS 智能异常分析 APP 文本分析作业最佳实践