企业本地数据接入

背景

基于安全性的考虑,智能数据助理使用到的数据,有时企业不希望迁移到公有云上,需要能够访问到企业内部的数据。本文提出通过http(s)的方式接入企业数据,满足企业安全性的要求。

调用流程

调用链路通过http(s)接口,实现离线T+1的数据Schema同步,以及指标的实时在线查询。

http(s)服务接口

1.Schema查询

http(s)://{custom-url}/ding-talk/schemaInfo?tableCode={table_code}

其中:

custom-url:客户的服务地址,如xxx.com:8080

table_code:对应的数据实体名称(或数据库表名),具有唯一性

返回结果示例:

{  
   "tableAlias": "super销售数据",      //数据表中文名,必填
   "tableCode": "super_sales_data",  //数据表code,必填且不可与当前已有元数据重复
   "timeFieldCode": null,            //时间字段,若没有时间字段可以为null,若有则格式必须为yyyyMMdd
   "fields": [
      {
        "code": "sales_amount",      //字段code,必填
        "alias": "销售金额",           //字段名称,必填
        "dataType": "Double",        //字段数据类型,必填,可为String/Long/Double/Date/Datetime
        "description": "",           //字段说明,可为null
        "type": "measure",           //维度指标类型,可为measure/dimension
        "valueFormat": "###,#",      //数值格式
      },
      {
        "code": "passenger_volume", 
        "alias": "客单价",
        "dataType": "Double",
        "description": "",
        "type": "measure",
        "valueFormat": "###,#",
      },
      {
        "code": "store", 
        "alias": "店铺",
        "dataType": "String",
        "description": "店铺",
        "type": "dimension",
        "valueFormat": null,
      }
   ]
}

2.维度查询

http(s)://{custom-url}/ding-talk/query?tableCode={table_code}&levels={dim1_name}[,{dim2_name}]

其中:

custom-url:客户的服务地址,如xxx.com:8080

table_code:应为企业内不重复的数据表名

dim*_*:为所需要查询的维度名,多个维度以逗号分隔

例如请求店铺地址维度的枚举值:

https://xxx.com:8080/ding-talk/query?tableCode=table_abc&levels=店铺

返回结果示例:

{
  "data": [
    {
      "店铺": "湖北黄冈黄梅县人民大道专卖店"
    },
    {
      "店铺": "湖北天门市元春街罗马商城专卖店"
    },
    ……
  ]
}

3.指标查询

http(s)://{custom-url}/ding-talk/query?tableCode={table_code}&startDate=xxx&endDate=xxx

&measures=m1,m2[&dim1=val1,val2&dim2=val3..]

其中:

custom-url:客户的服务地址,如xxx.com:8080

table_code:应为企业内不重复的数据表名

measures:参数为一个或多个度量,以逗号分隔

dim*:参数为一个或多个维度,每个维度的多个维度值以逗号分隔

例如请求两天的销量数据:

https://xxx.com:8080/ding-talk/query?tableCode=table_abc&sstartDate=2020-04-01&endDate=2020-04-02&measures=销售金额

返回结果示例:

{
  "data": [
    {
      "日期": "2020-04-01",
      "线下-POS销量": "0",
      "线上-云店": "0",
      "线上-电商": "0"
    },
    {
      "日期": "2020-04-02",
      "线下-POS销量": "0",
      "线上-云店": "0",
      "线上-电商": "0"
    }
  ],
  "title": "销售金额",
  "type": "折线图"
}

数据助理配置

1.配置界面

在智能数据助理-数据配置中,提供http的接入方式,具体配置界面如下:

p188164

其中,安全签名为企业自己随机生成的token,用于生成请求的签名,通知可以通过后台配置进行更新。

2.请求签名生成逻辑

请求地址需额外添加两个参数:timestamp(时间戳)与signature(请求签名)

timestamp:生成方式为请求发起的时间,如请求时间为:2020-08-14 00:50:45,则用时间戳参数为:1597337445

signature:生成方式为本次请求的签名,生成规则为:md5([请求所需参数按参数名字典序排序]+ timestamp +安全签名token)

例如,请求中包含4个参数:domain=财务领域,beginDate=2020-05,endDate=2020-06,measure=绩效地图,signature为:md5("2020-05","财务领域","2020-06","绩效地图","1597337445","fl8WoDmS")=b7743e06385d65239b0a04766f0ca548

3.举例

原始url:http://127.0.0.1/v1/ding-talk/report?domain=财务领域&beginDate=2020-05&endDate=2020-05&measure=绩效地图

签名后:http://127.0.0.1/v1/ding-talk/report?domain=财务领域&beginDate=2020-05&endDate=2020-05&measure=绩效地图&timestamp=1597337445&signature=b7743e06385d65239b0a04766f0ca548