页面树结构
转至元数据结尾
转至元数据起始

数据模型取数

  • 接口调用-方式1
import smartbi.net.sf.json.JSONObject;
import smartbi.net.sf.json.JSONArray;
import smartbi.sdk.ClientConnector;
import smartbi.sdk.InvokeResult;

public class DataModelDemo {

        public static void main(String[] args) {
        // 用户名
        String user = "admin";
        // 密码
        String password = "admin";
        // Smartbi链接http://10.10.35.85:18080/smartbi
        String smartbiURL = "http://localhost:8080/smartbi";
        // 创建Smartbi链接对象
        ClientConnector conn = new ClientConnector(smartbiURL);
        // 建立此连接时,就对smartbi进行了登录
        boolean ret = conn.open(user, password);
        String str = "参考下面post的内容";
        // post的内容说明,参考接口调用-方式2的说明,如:
        // str = "{\"dataSetId\": \"I8a8aa3d4018220a120a154fd018220c691c50013\",\"rows\": [ \"product_name\"],\"columns\": [\"store_sales_m\"]}";
        JSONObject obj = JSONObject.fromString(str);
        // 查询模型
        InvokeResult res = conn.remoteInvoke("AugmentedDataSetForVModule", "getData", new Object[]{obj});
        // 结果示例可以看附件,result.txt:https://wiki.smartbi.com.cn/download/attachments/136905788/result.txt?api=v2
        /*JSONObject result = (JSONObject) res.getResult();
        JSONArray rows = result.getJSONArray("iterator");
		for (int i = 0; i < rows.length(); i++) {
		  JSONArray cells = (JSONArray) rows.get(i);
		  for (int j = 0; j < cells.length(); j++) {
		    JSONObject cell = (JSONObject) cells.get(j);
		    System.out.println(cell.get("value").toString());
		  }
        }*/
        conn.close();
        }
}
  • 接口调用-方式2(仅支持在已登录的情况下)

http://host:port/smartbi/smartbix/api/augmentedQuery/data/

  • 接口请求类型

POST

  • 返回值

DataIterator 数据结果

属性类型说明
columnLabelsList数据迭代器对应的列表标题列表占位
iteratorIterator<List > 结果(二维数组)
totalRowCountInt总行数,目前不支持,返回-1

CellData 单元格数据

属性类型说明
typeValueType数据类型
displayValueString显示值
valueObject真实值

示例-普通二维查询

普通二维查询,维度放行区、度量放列区

{
    "dataSetId": "I8a8aa3d4018220a120a154fd018220c691c50013",
    "rows": [
        "product_name"
    ],
    "columns": [
        "store_sales_m"
    ]
}

示例-交叉表查询

交叉表查询的情况,度量放行区

{
    "dataSetId": "I8a8aa3d4018220a120a154fd018220c691c50013",
    "rows": [
        "product_name","store_sales_m"
    ]
}

示例-过滤

{
    "dataSetId": "I8a8aa3d4018220a120a154fd018220c691c50013",
    "rows": [
        "product_name"
    ],
    "columns": [
        "store_sales_m"
    ],
    "filters": [
        {
            "name": "product_name",
            "operation":"EQUALS",
            "values":["型号1"]
        }
    ]
}

示例-过滤关系

使用RelationNode组织筛选器之间的关系 relationNode有两种结构,

关系组,用于设置子项的连接关系

{
  "childNodes": [], // relationNode列表: 可以是关系组 也可是叶子节点
  "leaf": false
}

叶子节点,即筛选器节点

{
  "filter": {}, // filters 中对应的 filter 此时filters中的filter要有id,且此处filter的id与filters中的id要对应,详见下方完整示例
  "leaf": true
}

完整示例

// 使用relationNode设置 筛选关系节点
// (OrderID > 10250 OR CustomerID = 'VIENT') AND EmployeeID = 5

{
  "dataSetId": "I8a8a9f230194f2cef2ce390b0194f2ce390b0000",
  "rows": [
    "OrderID",
    "CustomerID",
    "EmployeeID"
  ],
  "columns": null,
  "nameLabelMap": null,
  "filters": [
    {
      "id": "I8a8a9f230194f3e6f3e64dfa0194f3e64dfa0000", // 此处id与relationNode中的filter的id要对应上
      "name": "OrderID",
      "operation": "GREATER",
      "values": [
        "10250"
      ]
    },
    {
      "id": "I8a8a9f230194f3e6f3e64dfa0194f3e64dfa0001",
      "name": "CustomerID",
      "operation": "EQUALS",
      "values": [
        "VINET"
      ]
    },
    {
      "id": "I8a8a9f230194f3e6f3e64dfa0194f3e64dfa0002",
      "name": "EmployeeID",
      "operation": "EQUALS",
      "values": [
        "5"
      ]
    }
  ],
  "relationNode": {
    "childNodes": [
      {
        "childNodes": [
          {
            "filter": {
              "id": "I8a8a9f230194f3e6f3e64dfa0194f3e64dfa0000",
              "name": "OrderID",
               "operation": "GREATER",
              "values": [
                "10250"
              ]
            },
            "leaf": true
          },
          {
            "filter": {
              "id": "I8a8a9f230194f3e6f3e64dfa0194f3e64dfa0001",
              "name": "CustomerID",
              "operation": "EQUALS",
              "values": [
                "VINET"
              ]
            },
            "leaf": true
          }
        ],
        "relation": "OR",
        "leaf": false
      },
      {
        "filter": {
          "id": "I8a8a9f230194f3e6f3e64dfa0194f3e64dfa0002",
          "name": "EmployeeID",
          "operation": "EQUALS",
          "values": [
            "5"
          ]
        },
        "leaf": true
      }
    ],
    "relation": "AND",
    "leaf": false
  }
}

示例-快速度量、排序

示例-分类汇总、提示

私有计算度量、私有分组字段

{
        "dataSetId": "I8a8aa3d4018220a120a154fd018220c691c50013",
        "rows": ["sales_region2", "customGroup"],
    "columns": ["store_sales_m", "custom1"],
    "custom": {
        "items": [
            {
                "name": "custom1",
                "expression": "[Measures].[store_sales_m] + 1",
                "valueType": "BIGDECIMAL",
                "type": "CALC_MEASURE"
            }, {
                "name": "customGroup",
                "expression": "{\"calcField\":{\"type\":\"CALC_GROUP\",\"define\":{\"expression\":{\"groupType\":\"ENUM\",\"valueList\":[{\"enumData\":[[\"中型卖场\",\"中型卖场\"],[\"大型超市\",\"大型超市\"],[\"小型卖场\",\"小型卖场\"]],\"id\":1,\"name\":\"卖场\"}],\"otherName\":\"其他\",\"mergeIntoOneItem\":\"merge\",\"valueType\":\"STRING\"},\"ref\":\"AUGMENTED_DATASET_FIELD.I8a8aa3d4018220a120a154fd018220c691c50013.Field-FoodmartCN_datamodel-null-null-store-store_type\"}}}",
                "valueType": "STRING",
                "type": "CALC_GROUP"
            }
        ]
    }
}

  • 接口参数及其说明
DataModelQueryVO 模型查询VO
属性类型说明
dataSetIdStirng模型 id
rowsList行区字段名称列表
columnsList列区字段名称列表
nameLabelMapMap<String, String>汇总别名设置
filtersList筛选区列表
quickCalculationsList快速计算定义列表
customDataModelCustomVO多维元素私有定义
orderBysList排序设置列表
subtotalsList分类汇总设置列表
tooltipsList提示字段设置列表
paramValuesMap<String, Object>参数值映射:参数名 <-> 参数值
rowPageNumint第几页(行区),默认是 1
rowsPerPageint每页几行(行区),默认是 20
queryTypeQueryType查询方式:LIST_QUERY、MONDRIAN_QUERY,分别代表:清单查询、多维查询;清单查询时只能查维度、层次;默认是多维查询
DataModelFilterVO 筛选区VO
属性类型说明
nameStirng字段名称
operationFilterOperationType运算符类型
valuesList过滤器的值
DataModelQuickCalcVO 快速计算设置VO
属性类型说明
nameStirng快速计算命名
fieldNameString需要快速计算的字段名称
calcTypeCalculationType计算类型
timeTypeFieldTreeNodeType时间层次类型:LEVEL_TIME_YEAR、LEVEL_TIME_QUARTER、LEVEL_TIME_MONTH、LEVEL_TIME_DAY
timeHierIdString时间层次 Id (可不填,当行、列区有多个不同日期层次的时候才填)
DataModelCustomVO 模型私有定义VO
属性类型说明
itemsList模型私有定义列表
DataModelCustomItemVO 模型查询VO
属性类型说明
name名称模型私有定义列表
expressionStringmdx 表达式
typeFieldTreeNodeTypeCALC_MEASURE、CALC_MEMBER、NAMEDSET,分别代表:计算度量、计算成员、命名集
dataFormatString数据格式
valueTypeValueType数据类型
DataModelOrderByVO 排序设置 VO
属性类型说明
fieldNameStirng字段名称
typeOrderByType排序类型:ASC、DESC、BASC、BDESC、NONE,分别代表:升序、降序、全局升序、全局降序
orderPriorityint优先级
DataModelSubtotalVO 分类汇总 VO
属性类型说明
nameStirng字段名称
subtotalSubtotal字段是否汇总,SHOW、SHOW 分别代表:显示、隐藏
DataModelTooltipVO 提示设置 VO
属性类型说明
nameStirng字段名称
  • 无标签