语义模型前言业务人员在做数据分析的时候可能需要对数据库表中的数据进行查询、聚合等操作,但是对于业务人员而言,他们并不清楚他们所需要的业务数据存放在数据库中的哪张表中以及数据库中表间的拼接关系导致无法分析无法进行。为解决此问题,NC系统提供了语义模型功能,将生成sql的过程用图形化的界面代替,以用户更易于理解的方式获取到复杂分析数据。语义模型功能简介1.1节点信息介绍语义模型节点位于“动态建模平台报表平台”下,分为“语义模型—预置”、“语义模型-全局”、“语义模型-集团”、“语义模型-组织”四个节点,其中“语义模型-预置”节点中系统提供了一些预置的语义模型供系统使用。图1进入语义模型节点,左侧列示了该节点的语义模型分类情况,选中某一分类后右侧即显示出该分类下的所有语义模型。图21.2语义模型维护1.21语义模型—新增点击上方按钮区域的“新增”按钮后,即进入新增语义模型的信息维护界面:图3界面字段信息介绍:语义模型编码:语义模型的编码,必输项且编码必须以字母开头,且语义模型的编码不允许重复。语义模型名称:语义模型的名称。数据源:语义模型的取数执行数据源,该字段只能参照到在“动态建模平台系统平台分析报表引擎数据源”下被设置为“执行数据源”的数据源信息。分类:语义模型的分类。1.22语义模型—设计选中某个语义模型后点击“语义模型设计”按钮,即可进入该语义模型的“设计”界面。图4语义模型的格式设计界面展示如下:图5语义模型设计界面分为“选择表”、“连接条件”、“选择字段”、“描述器”、“选项”五个页签,即语义模型设计的五大步骤,下面就对各页签的功能逐一进行介绍.“选择表”页签:是对语义模型的数据来源的设置,语义模型的数据来源可以是“元数据”、“元定义”、“语义脚本”、“数据加工”、“业务数据”五种。元数据:元数据是指描述数据的数据,是为了外界使用数据而对数据本身含义的阐述。元数据针对结果数据的每一列都提供了下列信息:数据类型、字段显示名、字段名、备注、长度、精度等。元定义:是语义层的核心概念,是对二维业务数据的抽象描述。元定义通过驱动的方式来挂接不同类型的业务数据,针对NC系统,主要有以下三种:语义元数据、语义模型、数据字典。语义脚本:语义脚本中通过使用语义函数smart()来引用语义模型,支持sql语句进行语义模型设计。数据加工:是语义模型提供的一类取数方式,支持用户使用java代码来定义一段取数逻辑。数据加工是在从数据库中取出结果集后在内存中进行操作,一般用于处理SQL解决不了的数据处理要求。业务数据:通过业务代码扩展提供者提供总帐、HR、供应链、报表等业务数据扩展。“连接条件”页签:为“选择表”中选择的数据库表设置表间拼接条件,相当于sql语句的where条件.如上图中选择了采购订单和供应商基本信息两张表,每个采购订单上都有唯一的供应商,而在采购订单表中只是存储了供应商的pk值,想要通过供应商的pk值得到供应商的其他信息(如供应商编码、名称等)就需要通过设置连接条件来实现采购订单和供应商之间建立连接条件,从而得到供应商的其他信息。连接方式分为典型模式和高级模式两种,不管是典型模式还是高级模式都是由join和on两部分组织,典型模式与高级模式的区别在于具体的连接条件可以通过表达式来实现。图6在join部分设置时需要设置表间的连接方式,连接方式分为以下四种,与sql中的拼接条件类似,介绍如下:1、内连接:即innerjoin,只返回两个表中连接字段相等的行。Select*fromainnerjoinbona.id=b.id2、左连接:即leftjoin,返回包括左表中的所有记录和右表中连接字段相等的记录。3、右连接:即rightjoin,返回包括右表中的所有记录和左表中连接字段相等的记录。4、全连接:即fulljoin,返回左表和右表中的全部记录。在on部分进行表中字段的连接条件设置,如上图所示的连接条件的设置即表示:采购订单.供应商=供应商基本信息.供应商档案主键。此条件用高级模式也可以实现,语句为:(po_order.pk_supplier=bd_supplier.pk_supplier)设置如下图所示:图7“选择字段”页签:即选择语义模型最终需要展现的数据,相当于sql语句中select后面查询的字段值一样。图8在“选择字段”页签内点击“增加”按钮,即可进入增加字段的界面,可以直接选择表中的字段,也可以通过右侧的函数来获取其他数据信息。图9选择需要增加的字段确定后即可显示在选择字段页签空白处:图10此时保存数据,并完成退出语义模型设计界面,选中刚刚设计的语义模型并在“语义模型”按钮下点击“数据预览”:图11即可预览到该语义模型查询到的数据信息:图12从上图中的查询结果可以看到查询到的数据库中的全部采购订单的数据信息,查询到的数据结果都是无须排列的,语义模型对数据结果的进步处理是在语义模型设计器的“描述器”页签进行设置的。“描述器”页签:分为“筛选”、“排序”和“其他”三个分页签。在“筛选”页签对语义模型数据结果信息进行筛选功能设置,筛选设置也分为“典型模式”和“高级模式”两种,区别在于高级模式可以通过表达式实现结果集的数据筛选,而典型模式只能通过选择字段后对该字段设置对应的值来实现数据筛选功能。图13不论在典型模式还是在高级模式中新增筛选条件都是通过右侧的“新增”按钮实现的,典型模式界面内的各字段信息说明如下:“逻辑符”列中支持“并且”和“或者”两个逻辑条件,当有多个筛选条件时才可以进行逻辑符设置;“字段”列可以参照选择该语义模型相关联的全部元数据;“值类型”中支持“常量”、“字段”、“表达式”、“参数”和“宏变量”五种,对于常量、字段和表达式均比较好理解,此处重点说明下参数和宏变量。参数:参数是模型中代表动态信息的元素,用于响应用户的输入。在模型的执行过程中,可以根据参数值的不同来影响结果数据。参数常用于对筛选条件的设置上。图14参数的维护界面的字段信息介绍如下:编码:参数的编码,要求唯一;名称:参数的名称,要求唯一;类型:参数的值类型,对于枚举类型的数据枚举项为用@分割的枚举值或者是一个单字段的查询SQL;属性:当类型设置为参照型(包括主键参照、编码参照和名称参照)时,属性列可以维护参照那个具体的档案。默认值:在预览数据弹出的参数录入界面内的参数默认显示的值;必填:勾选了必填则数据预览时要求参数必须录入,否则给出提示并不允许录入;参数依赖:当有多个参数时,参数与参数之间可以建立依赖关系,比如第一个参数是部门,第二个参数是人员,要求录入第一个参数部门后,第二个参数人员只能参照到第一个参数所选择的部门下的人员。启用权限:对参数启用数据权限控制,只有当参数类型是主键参照时才生效,设置为其他类型时虽然不给出任何提示但是数据权限不生效。增加参数后当筛选条件的值类型设置为参数时,值列就可以参照到已经有的参数,如下图所示:图15再次点击“数据预览”时,就会弹出参数的选择界面:图16选择fh07后点击确定,则结果集会按照所选择的参数值进行过滤。图17宏变量:宏变量根据作用域分为全局宏变量和模型宏变量。顾名思义,全局宏变量用于全局共享,在任何语义模型中都可以直接引用。模型宏变量与具体的语义模型相关,其只在当前模型中其作用。全局宏变量中包含多个预置宏变量,如LoginDate、LoginUser等,方便共享。宏变量其定义与参数类似,不同之处在于其类型有两种选择“公式”和“SQL语句”。公式只是其表达式支持公式的编辑;SQL语句是指一般的SQL语句,但默认情况下取值只能取第一行第一列的值。宏变量示意图如下:图18上图中的宏变量分别用sql语句和nc公式实现的,在对数据过滤的功能效果上是一致的。由于宏变量都是固定的值,因此不需要与用户进行交互,进入数据预览界面,宏变量不会像参数一样弹出数据维护界面.排序:排序界面支持对一个或多个字段进行排序,当选择多个字段时,会按照字段从上到下的数序优先进行排序。图19如上图所示的排序顺序则进行数据预览时的数据如下图所示:图20在上图的数据当中,有一些数据是完全一致的,在“其他”页签内有“清除重复行”复选项,勾选此选项即可将这些完全一致的数据只保留一行。图21“选项”页签内可以设置各配置项信息:1、物化策略设置:2、启用sql优化:在sql执行时自动处理sql按照最优的sql执行配置进行sql命令执行。3、最大查询执行时间:语义模型允许的最大执行时间。4、最大行数:语义模型数据查询结果能够查到的最大数据行数。5、业务规则数据权限控制模式:勾选所需规则,支持多选。这些选中规则即可在脚本引擎解析时调用,来对语义脚本进行处理,如获取规则队列及规则执行的优先级,规则实现类操作内容脚本模型,快速处理from、where、groupby等6、数据权限控制模式:分为管理报表模式和单据业务两种模式。当选择管理报表模式时,此时的数据权限走的是选择字段处的设置的权限场景;当选择单据业务时,此时数据权限走的是元数据处的数据权限场景且此时单据字段处的相关权限设置均不可编辑。