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月份毛利额下滑的关键要素,并将其分享给团队,以便指导相关业务部门采取决策和行动,提高企业整体毛利额。  
相关文章
|
6月前
|
分布式计算 IDE 大数据
MaxCompute产品使用合集之有多人调用大数据计算MaxCompute,我需要给他们每个人都生成ak信息吗
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
4月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之OpenAPI列表可以在什么地方查看
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
6月前
|
分布式计算 DataWorks 搜索推荐
DataWorks操作报错合集之DataWorks我做简单的用户画像,根据文档的例子,连接 OSS 时遇到连接问题,如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
存储 分布式计算 MaxCompute
基于OpenSearch向量检索版和MaxCompute快速搭建图搜服务
本文将介绍企业在没有向量数据的情况下,如何通过OpenSearch向量检索版、MaxCompute以及OSS,快速搭建图像搜索服务。
42768 1
基于OpenSearch向量检索版和MaxCompute快速搭建图搜服务
|
6月前
|
数据可视化 数据库
OpenSearch如何可视化分析数据?
OpenSearch如何可视化分析数据
200 0
|
存储 分布式计算 算法
OpenSearch向量检索版和MaxCompute快速搭建图搜服务
本方案介绍用户在没有向量数据的情况下,通过直接导入图片源数据,在OpenSearch内部便捷完成图片向量化、向量搜索等步骤,实现以图搜图、以文搜图等多种图像检索能力。
1539 0
|
监控 关系型数据库 Serverless
基于Serverless+OSS分分钟实现图片秒变素描
在阿里云Serverless函数计算服务中部署普通图片转素描图函数服务,实现将批量上传到指定OSS桶内的图片自动转换为素描图并保存到另一个OSS桶内
基于Serverless+OSS分分钟实现图片秒变素描
|
监控 关系型数据库 Serverless
基于 Serverless+OSS 分分钟实现图片秒变素描
在阿里云 Serverless 函数计算服务中部署普通图片转素描图的函数服务,实现批量上传到指定 OSS 桶内的图片自动转换为素描图并保存到另一个 OSS 桶内。
基于 Serverless+OSS 分分钟实现图片秒变素描
|
存储 DataWorks 算法
依赖DataWorks OpenAPI补数据实现圈人
从2020年10月份起DataWorks为企业版提供了API的能力,我们可以根据现有的API能力打通应用与离线数据加工,从而让大数据能直接为在线应用服务,本篇文章使用圈人功能做一个简单的介绍实现;
2014 0
依赖DataWorks OpenAPI补数据实现圈人
|
数据采集 分布式计算 运维
DataWorks OpenAPI 实战-数据开发全流程介绍
DataWorks作为飞天大数据平台操作系统,历经11年发展,形成了涵盖数据集成、数据开发、数据治理、数据服务的一站式大数据开发治理平台。很多企业用户在使用产品的过程中希望他们的本地服务能够和阿里云上的DataWorks服务进行交互,从而提升企业大数据处理的效率,减少人工操作和运维工作,降低数据风险和企业成本,现在DataWorks开放OpenAPI能力满足企业的定制化需求。
7053 0
DataWorks OpenAPI 实战-数据开发全流程介绍