大数据OLAP Kylin3.0RESTful API query查询接口改造

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 大数据OLAP Kylin3.0RESTful API query查询接口改造

kylin3.0提供了 restful api
query接口
Request Sample

{
"sql":"select * from TEST_KYLIN_FACT",
"offset":0,
"limit":50000,
"acceptPartial":false,
"project":"DEFAULT"
}
Curl Example

curl -X POST -H "Authorization: Basic XXXXXXXXX" -H "Content-Type: application/json" -d '{ "sql":"select count(*) from TEST_KYLIN_FACT", "project":"learn_kylin" }' http://localhost:7070/kylin/api/query
Response Body

columnMetas - Column metadata information of result set.
results - Data set of result.
cube - Cube used for this query.
affectedRowCount - Count of affected row by this sql statement.
isException - Whether this response is an exception.
ExceptionMessage - Message content of the exception.
Duration - Time cost of this query
Partial - Whether the response is a partial result or not. Decided by acceptPartial of request.
Response Sample

{
"columnMetas":[

  {  
     "isNullable":1,
     "displaySize":0,
     "label":"CAL_DT",
     "name":"CAL_DT",
     "schemaName":null,
     "catelogName":null,
     "tableName":null,
     "precision":0,
     "scale":0,
     "columnType":91,
     "columnTypeName":"DATE",
     "readOnly":true,
     "writable":false,
     "caseSensitive":true,
     "searchable":false,
     "currency":false,
     "signed":true,
     "autoIncrement":false,
     "definitelyWritable":false
  },
  {  
     "isNullable":1,
     "displaySize":10,
     "label":"LEAF_CATEG_ID",
     "name":"LEAF_CATEG_ID",
     "schemaName":null,
     "catelogName":null,
     "tableName":null,
     "precision":10,
     "scale":0,
     "columnType":4,
     "columnTypeName":"INTEGER",
     "readOnly":true,
     "writable":false,
     "caseSensitive":true,
     "searchable":false,
     "currency":false,
     "signed":true,
     "autoIncrement":false,
     "definitelyWritable":false
  }

],
"results":[

  [  
     "2013-08-07",
     "32996",
     "15",
     "15",
     "Auction",
     "10000000",
     "49.048952730908745",
     "49.048952730908745",
     "49.048952730908745",
     "1"
  ],
  [  
     "2013-08-07",
     "43398",
     "0",
     "14",
     "ABIN",
     "10000633",
     "85.78317064220418",
     "85.78317064220418",
     "85.78317064220418",
     "1"
  ]

],
"cube":"test_kylin_cube_with_slr_desc",
"affectedRowCount":0,
"isException":false,
"exceptionMessage":null,
"duration":3451,
"partial":false
}
众所周知,这个返回接口返回给开发是非常不友好的,基于业务需求改造成标准的返回接口

原来的
@RequestMapping(value = "/query", method = RequestMethod.POST, produces = {"application/json"})

@ResponseBody
public SQLResponse query(@RequestBody PrepareSqlRequest sqlRequest) {
    return queryService.doQueryWithCache(sqlRequest);
}

改造后:
public SQLResponse query2(@RequestBody PrepareSqlRequest sqlRequest) {

    return queryService2.doQueryWithCache(sqlRequest);
    List<Map> mapList = new ArrayList<Map>();

    SQLResponse response = queryService.doQueryWithCache(sqlRequest);
    List<List<String>> results = response.getResults();
    if (results != null && results.size() > 0) {
        List<SelectedColumnMeta> columnMetas = response.getColumnMetas();
        Map<String, Object> map;
        int size;
        for (List<String> result : results) {
            map = new HashMap<>();
            size = result.size();
            for (int i = 0; i < size; i++) {
                map.put(columnMetas.get(i).getLabel(), result.get(i));
            }
            mapList.add(map);
        }

    }

    return new SQLResponse(mapList, response.getCube(), response.getAffectedRowCount(), response.getIsException(),
            response.getExceptionMessage(), response.isPartial(), response.isPushDown(), response.getDuration(),
            response.getTotalScanCount(), response.getTotalScanBytes(), response.isStorageCacheUsed());
}
1650771882532.jpg![1650771882532.jpg](https://ucc.alicdn.com/pic/developer-ecology/42eec56238d94065a5f22f4dcfd3cbb7.jpg)


改造后返回参数
{
"results": [
    {
        "repay_date": "2021-11-12", 
        "repaid_amt": "61",
        "cert_code": null,
        "bill_no": "ZZD",
        "adv_repay_fee": "0",
        "fund_flag": "2",
        "repay_status": "0
    },
    {
        "repay_date": "2021-05-05", 
        "repaid_amt": "29.7",
        "cert_code": null,
        "bill_no": "xxxxxxx",
        "adv_repay_fee": "0",
        "fund_flag": "2",
        "repay_status": "0"
    }
],
"isException": false,
"exceptionMessage": null,
"duration": 244,
"total": 22

}

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
10天前
|
JSON API 开发工具
淘宝实时 API 接口丨淘宝商品详情接口(Taobao.item_get)
淘宝商品详情接口(Taobao.item_get)允许开发者获取商品的详细信息,包括基本信息、描述、卖家资料、图片、属性及销售情况等。开发者需注册账号、创建应用并获取API密钥,通过构建请求获取JSON格式数据,注意遵守平台规则,合理使用接口,确保数据准确性和时效性。
|
11天前
|
JSON 安全 API
Python调用API接口的方法
Python调用API接口的方法
53 5
|
11天前
|
JSON 缓存 监控
淘宝商品详情接口(Taobao.item_get)丨淘宝API接口指南
淘宝商品详情接口(Taobao.item_get)允许开发者通过HTTP GET方法获取淘宝商品的详细信息,包括商品ID、价格、库存等。请求需包含key、secret、num_iid等必选参数,支持缓存及多种返回格式。此接口广泛应用于电商数据分析、商品选品、价格监控等领域,提升商家运营效率。
|
15天前
|
JSON 搜索推荐 API
LAZADA关键词搜索API接口的获取与应用
Lazada作为东南亚领先的电商平台,为满足开发者和商户需求,开放了关键词搜索API接口。本文详细介绍该接口的获取与应用,助力提升电商业务效率。接口支持关键词搜索、指定搜索范围和排序方式,提供精准、灵活且全面的数据支持,促进电商应用和服务的优化与创新。
21 3
|
17天前
|
负载均衡 大数据
大数据散列分区查询频率
大数据散列分区查询频率
20 5
|
21天前
|
存储 大数据 数据管理
大数据分区提高查询性能
大数据分区提高查询性能
27 2
|
26天前
|
JSON API 数据格式
淘宝 / 天猫官方商品 / 订单订单 API 接口丨商品上传接口对接步骤
要对接淘宝/天猫官方商品或订单API,需先注册淘宝开放平台账号,创建应用获取App Key和App Secret。之后,详细阅读API文档,了解接口功能及权限要求,编写认证、构建请求、发送请求和处理响应的代码。最后,在沙箱环境中测试与调试,确保API调用的正确性和稳定性。
|
21天前
|
JSON API 数据库
电商拍立淘按图搜索API接口,数据格式示例
电商拍立淘按图搜索API接口系列为电商平台和购物应用提供了强大的图像搜索功能,以下是其文档说明的详细参考
|
23天前
|
Web App开发 API Windows
取接口访问者信息[IP,浏览器,操作系统]免费API接口教程
此API用于获取访问者的IP地址、浏览器和操作系统信息,支持70多种浏览器和操作系统。通过POST或GET请求至`https://cn.apihz.cn/api/ip/getapi.php`,需提供用户ID和KEY。返回结果包括状态码、消息、IP、浏览器和操作系统信息。示例:{&quot;code&quot;:200,&quot;ip&quot;:&quot;175.154.88.178&quot;,&quot;browser&quot;:&quot;Chrome&quot;,&quot;os&quot;:&quot;Windows 10&quot;}。详情见官网文档。
|
16天前
|
监控 安全 API
深入浅出:构建高效RESTful API的最佳实践
在数字化时代,API已成为连接不同软件和服务的桥梁。本文将带你深入了解如何设计和维护一个高效、可扩展且安全的RESTful API。我们将从基础概念出发,逐步深入到高级技巧,让你能够掌握创建优质API的关键要素。无论你是初学者还是有经验的开发者,这篇文章都将为你提供实用的指导和启示。让我们一起探索API设计的奥秘,打造出色的后端服务吧!