...
Markdown |
---|
## 数据模型取数
- <strong>接口调用-方式1</strong>
```java
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();
}
}
```
- <strong>接口调用-方式2(仅支持在已登录的情况下)</strong>
http://host:port/smartbi/smartbix/api/augmentedQuery/data/
- <strong>接口请求类型</strong>
POST
- <strong>返回值</strong>
<strong>DataIterator 数据结果</strong>
| <strong>属性</strong> | <strong>类型</strong> | <strong>说明</strong> |
| --------------------- | ------------------------ | -------------------------------- |
| columnLabels | List<String> | 数据迭代器对应的列表标题列表占位 |
| iterator | Iterator<List<CellData>> | 结果(二维数组) |
| totalRowCount | Int | 总行数,目前不支持,返回-1 |
<strong>CellData 单元格数据</strong>
| <strong>属性</strong> | <strong>类型</strong> | <strong>说明</strong> |
| --------------------- | --------------------- | --------------------- |
| type | ValueType | 数据类型 |
| displayValue | String | 显示值 |
| value | Object | 真实值 |
### 示例-普通二维查询
普通二维查询,维度放行区、度量放列区
```json
{
"dataSetId": "I8a8aa3d4018220a120a154fd018220c691c50013",
"rows": [
"product_name"
],
"columns": [
"store_sales_m"
]
}
```

### 示例-交叉表查询
交叉表查询的情况,度量放行区
```json
{
"dataSetId": "I8a8aa3d4018220a120a154fd018220c691c50013",
"rows": [
"product_name","store_sales_m"
]
}
```
### 示例-过滤
```json
{
"dataSetId": "I8a8aa3d4018220a120a154fd018220c691c50013",
"rows": [
"product_name"
],
"columns": [
"store_sales_m"
],
"filters": [
{
"name": "product_name",
"operation":"EQUALS",
"values":["型号1"]
}
]
}
```
### 示例-过滤关系
使用RelationNode组织筛选器之间的关系
relationNode有两种结构,
关系组,用于设置子项的连接关系
```json
{
"childNodes": [], // relationNode列表: 可以是关系组 也可是叶子节点
"leaf": false
}
```
叶子节点,即筛选器节点
```json
{
"childNodes": [], // relationNode列表
"relation": "OR" / "AND"
"leaf": false
}
```
完整示例

```json
// 使用relationNode设置 筛选关系节点
// (OrderID > 10250 OR CustomerID = 'VIENT') AND EmployeeID = 5
{
"dataSetId": "I8a8a9f230194f2cef2ce390b0194f2ce390b0000",
"rows": [
"OrderID",
"CustomerID",
"EmployeeID"
],
"columns": null,
"nameLabelMap": null,
"filters": [
{
"id": "I8a8a9f230194f3e6f3e64dfa0194f3e64dfa0000",
"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
}
}
```
### 示例-快速度量、排序

### 示例-分类汇总、提示

### 私有计算度量、私有分组字段
```json
{
"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"
}
]
}
}
```

- <strong>接口参数及其说明</strong>
##### <strong>DataModelQueryVO 模型查询</strong><strong>VO</strong>
| <strong>属性</strong> | <strong>类型</strong> | <strong>说明</strong> |
| --------------------- | -------------------------- | -------------------------------------------------------------------------------------------------------------- |
| dataSetId | Stirng | 模型 id |
| rows | List<String> | 行区字段名称列表 |
| columns | List<String> | 列区字段名称列表 |
| nameLabelMap | Map<String, String> | 汇总别名设置 |
| filters | List<DataModelFilterVO> | 筛选区列表 |
| quickCalculations | List<DataModelQuickCalcVO> | 快速计算定义列表 |
| custom | DataModelCustomVO | 多维元素私有定义 |
| orderBys | List<DataModelOrderByVO> | 排序设置列表 |
| subtotals | List<DataModelSubtotalVO> | 分类汇总设置列表 |
| tooltips | List<DataModelTooltipVO> | 提示字段设置列表 |
| paramValues | Map<String, Object> | 参数值映射:参数名 <-> 参数值 |
| rowPageNum | int | 第几页(行区),默认是 1 |
| rowsPerPage | int | 每页几行(行区),默认是 20 |
| queryType | QueryType | 查询方式:LIST_QUERY、MONDRIAN_QUERY,分别代表:清单查询、多维查询;清单查询时只能查维度、层次;默认是多维查询 |
##### <strong>DataModelFilterVO 筛选区</strong><strong>VO</strong>
| <strong>属性</strong> | <strong>类型</strong> | <strong>说明</strong> |
| --------------------- | --------------------- | --------------------- |
| name | Stirng | 字段名称 |
| operation | FilterOperationType | 运算符类型 |
| values | List<Object> | 过滤器的值 |
##### <strong>DataModelQuickCalcVO 快速计算设置</strong><strong>VO</strong>
| <strong>属性</strong> | <strong>类型</strong> | <strong>说明</strong> |
| --------------------- | --------------------- | ---------------------------------------------------------------------------------- |
| name | Stirng | 快速计算命名 |
| fieldName | String | 需要快速计算的字段名称 |
| calcType | CalculationType | 计算类型 |
| timeType | FieldTreeNodeType | 时间层次类型:LEVEL_TIME_YEAR、LEVEL_TIME_QUARTER、LEVEL_TIME_MONTH、LEVEL_TIME_DAY |
| timeHierId | String | 时间层次 Id (可不填,当行、列区有多个不同日期层次的时候才填) |
##### <strong>DataModelCustomVO 模型私有定义</strong><strong>VO</strong>
| <strong>属性</strong> | <strong>类型</strong> | <strong>说明</strong> |
| --------------------- | --------------------------- | --------------------- |
| items | List<DataModelCustomItemVO> | 模型私有定义列表 |
##### <strong>DataModelCustomItemVO 模型查询</strong><strong>VO</strong>
| <strong>属性</strong> | <strong>类型</strong> | <strong>说明</strong> |
| --------------------- | --------------------- | ------------------------------------------------------------------------- |
| name | 名称 | 模型私有定义列表 |
| expression | String | mdx 表达式 |
| type | FieldTreeNodeType | CALC_MEASURE、CALC_MEMBER、NAMEDSET,分别代表:计算度量、计算成员、命名集 |
| dataFormat | String | 数据格式 |
| valueType | ValueType | 数据类型 |
##### <strong>DataModelOrderByVO 排序设置 VO</strong>
| <strong>属性</strong> | <strong>类型</strong> | <strong>说明</strong> |
| --------------------- | --------------------- | -------------------------------------------------------------------------------- |
| fieldName | Stirng | 字段名称 |
| type | OrderByType | 排序类型:ASC、DESC、BASC、BDESC、NONE,分别代表:升序、降序、全局升序、全局降序 |
| orderPriority | int | 优先级 |
##### <strong>DataModelSubtotalVO 分类汇总 VO</strong>
| <strong>属性</strong> | <strong>类型</strong> | <strong>说明</strong> |
| --------------------- | --------------------- | --------------------------------------------- |
| name | Stirng | 字段名称 |
| subtotal | Subtotal | 字段是否汇总,SHOW、SHOW 分别代表:显示、隐藏 |
##### <strong>DataModelTooltipVO 提示设置 VO</strong>
| <strong>属性</strong> | <strong>类型</strong> | <strong>说明</strong> |
| --------------------- | --------------------- | --------------------- |
| name | Stirng | 字段名称 |
|
...