Page tree
Skip to end of metadata
Go to start of metadata



案例说明

多维分析的简单告警功能,可以满足大部分用户的数据告警需求,但有一些比较复杂的告警,则需要通过多维分析的高级告警功能来实现。例如,当对销售量进行告警的时候,要结合销售利润的值来进行判断,这时简单告警是无法实现的。

多维分析的高级告警功能,是通过编写JavaScript脚本的方式实现。在本例中,将通过编写脚本实现:

  • 当销售量大于2000而且利润小于1000000的数据用黄色背景突出显示
  • 当销售量小于3000而且利润大于1000000的数据用绿色的旗帜突出显示

 

实现步骤

要实现上面的效果,请执行以下操作。

(1) 准备好多维数据源。在本例中,使用系统示例多维数据库” Mondrian”。

数据源路径:数据源 > Mondrian

多维数据源的创建参考多维数据源章节

(2) 准备好多维数据集。在本例中,使用多维数据库” Mondrian”的”Sales”

多维数据集路径:数据源 > Mondrian > Sales

多维数据集的创建参考多维数据集章节

(3) 准备好告警格式。在本例中,使用的是系统内置的告警格式。

告警格式路径:公共设置 > 告警格式 目录下

(4) 新建多维分析

在本例中,挑选”Sales”这个多维数据集。从左侧资源树上拖动相关到成员到查询面板:

行区:放产品维和时间维。产品维包括3个成员:小家电、白色家电、黑色家电;时间维包括4个成员:2016年1季度、2016年2季度、2016年3季度、2016年4季度

列区:放销售量和利润两个度量区的成员。

 

(5) 创建告警

在右侧资源树的”告警”节点上,更多操作菜单上选择  新建,将”告警格式”选项设置为”高级设置”:

在下方出现的JavaScript脚本编辑框中输入以下脚本。

//main函数是固定的处理入口

function main(reportResult) {

    var cells = reportResult.getCells();//所有单元格

    var rowSize = reportResult.getRowSize();//总行数

    var columnSize = reportResult.getColumnSize();//每行的列数

    for (var j = 0; j < rowSize; j++) {

        var saleCountCell = cells[j * columnSize];//销售量单元格

        var saleAmountCell = cells[j * columnSize + 1];//利润单元格

        var styleNo = getStyleNo(saleCountCell, saleAmountCell);

        saleCountCell.setStyleNo(styleNo);//设置单元格的告警格式

    }

}

//获取单元格对应告警格式的编号。编号可以通过”查看样式”按钮查看

function getStyleNo(saleCountCell, saleAmountCell) {

    if (saleCountCell.getValue() == null) {

        return 0;

    }

    if (saleAmountCell.getValue() == null) {

        return 0;

}

//销售量大于2000而且利润小于1000000

    if (saleCountCell.getValue() > 2000.0 && saleAmountCell.getValue() < 1000000.0) {

        return 5;

}

//销售量小于3000而且利润大于1000000

    if (saleCountCell.getValue() < 3000.0 && saleAmountCell.getValue() > 1000000.0) {

        return 1;

    }

    return 0;//默认情况返回0,也就是没有告警样式

}


关于代码中使用告警样式的编号,可以通过”查看样式”节点查看。

点击 确定 按钮保存告警,并在多维分析工具栏中点击 刷新 按钮查看告警效果:

(6) 点击 保存 按钮,保存当前多维分析。

  • No labels