DataV通过与DataWorks数据服务的对接,可以使用DataWorks数据服务开发数据API,快速在DataV中调用API并展现MaxCompute的数据分析结果。

数据服务对接DataV产生背景

MaxCompute是阿里巴巴集团自主研究的快速、完全托管的TB、PB和EB级数据仓库解决方案。当今社会数据收集的方式不断丰富,行业数据大量积累,导致数据规模已增长到传统软件行业无法承载的海量级别。MaxCompute服务于批量结构化数据的存储和计算,已经连续多年稳定支撑阿里巴巴全部的离线分析业务。

过去,如果您想要通过DataV展示海量数据的分析结果,需要自建一套离线数据计算自动导入MySQL的任务流程,过程繁琐且成本高。现在通过DataWorks为您提供的数据集成 > 数据开发 > 数据服务的全链路数据研发平台,结合MaxCompute即可快速搭建企业数仓。

DataWorks数据服务提供了快速将数据表生成API的功能,通过可视化的向导模式操作,无需代码便可快速生成API,然后通过DataV调用API并在大屏中展示数据分析结果,高效实现数仓的开发和数据的展示。

前提条件

要想实现DataWorks数据服务与DataV的对接,您需要提前准备好数据源,并开通DataV服务

新建数据源

数据服务支持丰富的数据源类型,如下所示:
  • 关系型数据库:RDS、DRDS、MySQL、PostgreSQL、Oracle和SQL Server
  • 分析型数据库:AnalyticDB
  • NoSQL数据库:TableStore(OTS)和MongoDB
  1. 登录DataWorks控制台,单击相应工作空间后的进入数据服务
  2. 鼠标悬停至新建,单击新建数据源,跳转至工作空间管理 > 数据源页面。
  3. 单击右上角的新增数据源
  4. 新增数据源对话框中,选择数据源类型为PostgreSQL

    本文将以PostgreSQL数据源为例,通过PostgreSQL数据源可以直接实时查询MaxCompute中的数据。

  5. 配置新增PostgreSQL数据源对话框中的参数。
    参数 描述
    数据源类型 当前选择的数据源类型为PostgreSQL > 连接串模式(数据集成网络可直接连通)
    数据源名称 数据源名称必须以字母、数字、下划线组合,且不能以数字和下划线开头。
    数据源描述 对数据源进行简单描述,不得超过80个字符。
    适用环境 可以选择开发生产环境。
    说明 仅标准模式工作空间会显示此配置。
    JDBC URL JDBC连接信息,格式为jdbc:postgresql://ServerIP:Port/Database。详情请参见访问域名Endpoint
    用户名 数据库对应的用户名。
    密码 数据库对应的密码。
  6. 单击测试连通性
  7. 测试连通性通过后,单击完成

新建API

数据源创建完成后,进入数据服务页面。本文以向导模式生成API为例,为您介绍如何新建API。
  1. 单击左上角的图标,选择全部产品 > 数据服务,进入数据服务页面。
  2. 鼠标悬停至新建,选择生成API > 向导模式
  3. 配置生成API对话框中的参数。
    参数 描述
    API名称 支持中文、英文、数字、下划线,且只能以英文或中文开头,4~50个字符。
    API分组 API分组是指针对某一个功能或场景的API集合,也是API网关对API的最小管理单元。在阿里云API市场中,一个API分组对应于一个API商品。

    您可以将鼠标悬停至新建图标,单击新建分组进行新建。

    API Path API存放的路径,例如/user
    协议 目前支持HTTP和HTTPS协议。
    请求方式 目前支持GET和POST请求方式。
    返回类型 目前仅支持JSON返回类型。
    描述 对API进行简要描述。
  4. 配置完成后,单击确认,即可进入API参数配置页面。

配置API参数

  1. 选择表模块, 选择数据源类型数据源名称数据表名称选择数据源类型
    说明
    • 您需要提前在数据集成中配置好数据源,数据表下拉框支持表名搜索。
    • 创建好API后,会自动跳转至数据表配置页面,您可以直接进行配置。
  2. 环境配置模块,设置内存超时时间环境配置
  3. 选择好数据表后,下方的选择参数模块会自动列出该表的所有字段。勾选需要设为请求参数设为返回参数的字段,分别添加至请求参数和返回参数列表中。选择参数
  4. 编辑请求参数信息。
    单击页面右侧的请求参数,设置参数名称参数类型操作符是否必填示例值默认值描述请求参数
  5. 编辑返回参数信息。
    单击页面右侧的返回参数,设置参数名称参数类型示例值描述,并可以进行返回结果分页使用过滤器等高级配置。返回参数
    配置过程中需要注意返回结果分页的设置:
    • 如果不开启返回结果分页,则API默认最多返回2,000条记录。
    • 如果返回结果可能超过2,000条,请开启返回结果分页功能。

测试API

完成API参数的配置并保存后,单击右上角的测试,即可进入API测试环节。测试

填写参数值,单击开始测试,即可在线发送API请求,在右侧可以查看API请求详情及返回内容。如果测试失败,请仔细查看错误提示并进行相应的修改重新测试。

发布API

  1. 完成API测试后,返回服务开发页面。
  2. 单击发布,即可成功生成一个数据API。
  3. 发布完成后,单击右上角服务管理查看API详情。服务管理

如果您需要调用API,请进入服务管理API调用页面,数据服务为您提供简单身份认证(AppCode)和加密签名身份认证(AppKey&AppSecret)两种认证方式,您可以自由选择。下文将为您介绍如何在DataV中进行数据服务API的调用。

添加数据服务为数据源

  1. 登录DataV控制台。
  2. 进入我的数据页面,单击添加数据
  3. 填写添加数据对话框中的配置。添加数据
    参数 描述
    类型 添加的数据源类型。
    自定义数据源名称 数据源的显示名称,可以自由命名。
    项目 选择DataWorks工作空间。
    AppKey/AppSecret 拥有DataWorks数据服务中某一项目访问权限的账号的AppKeyID和AppSecret。
    说明 您可以登录DataWorks数据服务控制台,进入服务管理 > API调用页面进行查看。API调用

在大屏中调用数据服务API

  1. 进入DataV控制台中的我的可视化页面,单击新建可视化
  2. 选择一个模板,单击创建,本文以智能工厂模板为例。智能工厂

    模板中的组件自带了静态数据,下文将以把模板中间的基本折线图改为调用上文创建好的查询成交金额增长趋势的API为例,为您介绍如何在组件中使用数据服务API。

  3. 选中基本折线图组件,切换到数据面板,在数据源类型中选择DataWorks数据服务
  4. 选择刚刚创建的数据源和API,并设置查询参数,本示例将pageSize设置为31,以查询一个月的数据。查询
  5. 单击查看数据响应结果,即可查看API的查询结果。
  6. 填写字段映射关系,在x中填写date,将日期作为横轴,在y中填写amount,将成交金额作为纵轴。字段映射

    由上图可见,当前x和y无法匹配到字段。这是因为DataV对数据格式有一定要求,不能识别结构较深的字段,因此需要添加一个数据过滤器,过滤掉不必要的字段,在本例中直接返回rows数组即可。

  7. 勾选使用过滤器,单击新建图标。此处支持编写JS代码对数据结果进行二次过滤和处理,过滤器的data参数为API返回结果JSON对象。
    本示例只需返回API结果中的rows数组,因此输入return data.data.rows;在下方预览过滤后的结果,并单击完成使用过滤器
    添加过滤器后,字段便会匹配成功。匹配成功

    由于API返回的日期格式与组件默认的格式不一样,此时的折线图并没有正确展示,您还需要设置折线横轴的日期格式。

  8. 切换至配置面板,在x轴 > 轴标签中选择数据种类为时间型,数据格式选择本API所返回的格式2016/01/01,即可看见折线图的正常展示。展示
至此,便完成了通过数据服务将MaxCompute表生成API,然后在DataV数据大屏中进行展示的所有操作,效果如下图所示。效果

注意事项

DataWorks数据服务与DataV进行无缝对接后,无需使用DataV中的API数据源去填写一个URL调用API,直接新建一个DataWorks数据服务作为数据源,便可直接选用数据服务中的API。无需每个API都设置AppKey和AppSecret认证信息,且支持通过表单填写API参数,操作快捷方便并安全可靠。

通过数据服务,您可以将MaxCompute中加工好的数据结果,直接在DataV中进行呈现,实现数据开发-数据服务-数据分析展现的全链路开发。

在开发过程中,请注意以下事项:
  • DataWorks数据服务向导模式生成API仅支持单表简单条件查询,脚本模式支持您编写查询SQL语句,支持多表关联查询、函数以及复杂条件。您可以根据自己的需求灵活选择。
  • 如果您要求毫秒级API查询,建议使用关系型数据库、NoSQL数据库或AnalyticDB作为数据源。
  • DataV组件要求的数据格式是个数组,数据服务生成的API返回结果是带有错误码的完整JSON,因此要使用过滤器对API结果进行处理。您可以选择在DataV中添加过滤器,也可以选择直接在数据服务配置API时添加过滤器。

    通常对于未分页查询的API,直接返回data数组即可,对于分页查询的API直接返回data.rows数组。

  • 如果您要在DataV的折线图或柱状图中添加多个系列,通常DataV要求每个系列的数据是一个对象,并通过字段来区分系列,此时需要注意使用过滤器进行格式转换。