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月份毛利额下滑的关键要素,并将其分享给团队,以便指导相关业务部门采取决策和行动,提高企业整体毛利额。  
相关文章
|
14天前
|
分布式计算 IDE 大数据
MaxCompute产品使用合集之有多人调用大数据计算MaxCompute,我需要给他们每个人都生成ak信息吗
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
13天前
|
数据采集 分布式计算 DataWorks
DataWorks产品使用合集之DataWorks数据地图中的数据发现相关api接口调用如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
23 0
|
13天前
|
分布式计算 DataWorks 搜索推荐
DataWorks操作报错合集之DataWorks我做简单的用户画像,根据文档的例子,连接 OSS 时遇到连接问题,如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
23 0
|
3月前
|
DataWorks 关系型数据库 分布式数据库
dataworks数据集问题之数据中台报错如何解决
DataWorks数据集是指在阿里云DataWorks平台内创建、管理的数据集合;本合集将介绍DataWorks数据集的创建和使用方法,以及常见的配置问题和解决方法。
36 1
|
8月前
|
SQL 数据采集 分布式计算
基于DataWorks+MaxCompute的公共电影票房数据预处理实践
本次实验对春节档每日票房的数据进行预处理,主要是数据清洗(例如空值过滤,条件筛选),数据转换(例如含有相同属性的两条数据合并为一条数据)。通过本次实验让大家掌握阿里云大数据产品DataWorks及MaxCompute的基本使用。
|
8月前
|
存储 机器学习/深度学习 运维
课时1:日志服务 SLS 可观测数据分析平台介绍
课时1:日志服务 SLS 可观测数据分析平台介绍
336 0
|
10月前
|
存储 数据采集 监控
阿里云SLS简介和购买流程
阿里云SLS是阿里巴巴集团旗下的一款日志服务产品。作为阿里云日志服务的核心组成部分,阿里云SLS(Simple Log Service)为企业提供了一种高效、安全、稳定的日志收集、存储、检索和分析解决方案。
|
10月前
|
SQL 机器学习/深度学习 存储
阿里云数据湖分析简介和购买流程
云原生数据湖分析(简称DLA)是新一代大数据解决方案,采取计算与存储完全分离的架构,支持数据库(RDS\PolarDB\NoSQL)与消息实时归档建仓,提供弹性的Spark与Presto,满足在线交互式查询、流处理、批处理、机器学习等诉求,也是传统Hadoop方案上云的有竞争力的解决方案。
|
SQL 运维 DataWorks
阿里云 DataWorks v2.0 常见问题与难点解析整理
阿里云 DataWorks v2.0 常见问题与难点解析整理
449 0
阿里云 DataWorks v2.0 常见问题与难点解析整理
|
数据采集 运维 分布式计算
DataWorks OpenAPI 数据开发治理实战系列
DataWorks作为飞天大数据平台操作系统,历经11年发展,形成了涵盖数据集成、数据开发、数据治理、数据服务的一站式大数据开发治理平台。很多企业用户在使用产品的过程中希望他们的本地服务能够和阿里云上的DataWorks服务进行交互,从而提升企业大数据处理的效率,减少人工操作和运维工作,降低数据风险和企业成本,现在DataWorks开放OpenAPI能力满足企业的定制化需求。 DataWorks OpenAPI涵盖租户、元数据、数据开发、运维中心、数据质量、数据服务等DataWorks核心能力,企业版和旗舰版分别赠送100万次/月、1000万次/月的免费调用额度。
1018 0
DataWorks OpenAPI 数据开发治理实战系列