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
|
1月前
|
分布式计算 DataWorks 数据处理
"DataWorks高级技巧揭秘:手把手教你如何在PyODPS节点中将模型一键写入OSS,实现数据处理的完美闭环!"
【10月更文挑战第23天】DataWorks是企业级的云数据开发管理平台,支持强大的数据处理和分析功能。通过PyODPS节点,用户可以编写Python代码执行ODPS任务。本文介绍了如何在DataWorks中训练模型并将其保存到OSS的详细步骤和示例代码,包括初始化ODPS和OSS服务、读取数据、训练模型、保存模型到OSS等关键步骤。
104 3
|
6月前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之如何同步SLS日志到odps上
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
7月前
|
数据采集 分布式计算 DataWorks
DataWorks产品使用合集之DataWorks数据地图中的数据发现相关api接口调用如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
64 0
|
7月前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之在DataWorks中,同步OSS中的数据的步骤如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
106 0
|
7月前
|
分布式计算 DataWorks 搜索推荐
DataWorks操作报错合集之DataWorks我做简单的用户画像,根据文档的例子,连接 OSS 时遇到连接问题,如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
7月前
|
数据采集 DataWorks 监控
DataWorks产品使用合集之在DataWorks数据质量中,判断订阅成功的标准如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
119 0
|
7月前
|
数据可视化 数据库
OpenSearch如何可视化分析数据?
OpenSearch如何可视化分析数据
227 0
|
SQL 运维 DataWorks
阿里云 DataWorks v2.0 常见问题与难点解析整理
阿里云 DataWorks v2.0 常见问题与难点解析整理
506 0
阿里云 DataWorks v2.0 常见问题与难点解析整理
|
存储 DataWorks 算法
依赖DataWorks OpenAPI补数据实现圈人
从2020年10月份起DataWorks为企业版提供了API的能力,我们可以根据现有的API能力打通应用与离线数据加工,从而让大数据能直接为在线应用服务,本篇文章使用圈人功能做一个简单的介绍实现;
2024 0
依赖DataWorks OpenAPI补数据实现圈人