用友BQ商业智能查询.ppt
,1004、查询,BQ基础教材,1、认识BQ查询2、BQ查询构造方法3、查询制作技巧4、查询前端应用技巧5、查询函数使用技巧6、查询钻取技巧7、查询工具栏定制8、查询对象发布,目 录,查询是指根据实际业务需要从数据库、数据仓库中检索出需要的数据的过程。,BQ查询特点,1、查询是BQ的唯一的取数接口;2、能将各种数据来源(如数据库,文本,Excel,SOA总线数据)的数据转换成BQ可以使用的格式;3、允许用户通过鼠标拖放生成SQL语句(必须基于数据源或信息域);4、可对取回的原始数据进行二次加工处理(如:代码转换、聚合运算、Top N、排序、汇总);5、针对复杂的数据处理需求,留有相应的二次开发接口。,一、认识BQ查询,二、BQ查询构造方法,BQ智能查询提供以下几种构建查询的方式,数据来源决定查询构造方式。,基于智能查询构造器:BQ中最常用到的查询构造方式;基于查询语言(SQL):输入SQL语句进行查询,其中的表和字段可从系统共享区的数据源拖放到语句中;从文本文件导入数据查询:通过导入文本数据(*.txt)建立查询的方式;从EXCEL文件导入查询:通过导入EXCEL数据(*.xls 或*.csv等)建立查询的方式;基于数据库存储过程的查询:通过直接调用数据库中已存在的有返回结果集的存储过程建立查询的方式;基于查询的查询:基于共享区已经存在的查询建立查询的方式;基于Web服务:通过SOA总线服务建立查询的方式。,第一步:新建查询,选择构造方式:在规划的路径下,选择相应目录节点,点击右键选择新建智能查询,选择基于智能查询构造器。,2.1 基于智能查询构造器的查询,数据源字段,信息域对象,第二步、确定查询内容:,具体查询内容应该依据数据需求而定;查询内容可以直接来源于数据源下的字段,也可来源于信息域的数据对象;拖放字段的时候,系统会自动将表结构添加到表关系区;系统自动建立的表关系大多数情况是不多对,需要修订,第三步、确定表关系:,当查询中存在一个或多个数据表时,我们需要注意表与表之间的连接关系,否则会导致取数据错误;,提示:点击表与表之间的链接线,可以激活选中状态;按键盘Del键可以删除已经存在的表关系;选中一个表中的字段,拖放到另一个表的对应字段即可建立表连接关系;双击链接线可以弹出表关系编辑界面;在弹出界面中可以修改表的链接属性。,技巧:在拖线的时候,先选哪一个表是有讲究的,会影响是由链接还是右连接;,第四步、设置取数查询条件:,取数条件是用户确定的数据筛选条件,是优化查询速度的一个重要元素。,提示:用户可以从查询对象或表关系区的表中拖放字段到箭头所示位置;“=”是通过键盘直接输入的;多个条件之间可以用 and、or 等SQL语句支持的操作符;and、or等操作符可以手工收入或者右键菜操作符单选择;,第五步、刷新查询,获取结果:让查询从数据库取数的过程;,提示:刷新分两种模式:1、直接刷新2、返回指定行数刷新,提示:得到结果后,如果还想继续修改查询条件按,请点击,表和字段可以从数据源节点拖放到主设计区。,右侧工作区:参数拖放到主设计区。,提示:新建查询,选择基于查询语言(SQL);基于SQL的查询,主要是留作智能查询的一个补充,只有当智能查询不能实现的时候才考虑用SQL语言查询;SQL语言查询所用的语法是BQ扩展过的,“DatasouceName”;刷新,往后的操作与智能查询相同。,2.2、基于SQL语句的查询,提示:(1)在查询结果页面,通过 进行排序。(2)可以通过制作基于现有查询的查询,对数据进行处理。,2.3、从文本文件导入数据的查询,1、选择从文本文件导入数据2、选择要的引入的文本文件,设置选项。3、保持刷新后得到查询结果。,1、选择从EXCEL文件导入数据2、选择EXCEL文件,设定数据范围,如指定起始单元格,则默认为数据范围可自动扩展。3、保存刷新后得到查询结果,提示:(1)在查询结果页面,通过 进行排序。(2)可以通过制作基于现有查询的查询,对数据进行处理。,2.4、从EXCEL文件导入数据,2.5、基于存储过程的查询,基于现有查询:以存在的查询作为源,进行二次查询设计。,提示:基于查询的查询,查询对象必须从表关系区的字段拖放到查询对象栏中;基于查询的查询有一个刷新选项:自动刷新父级查询,勾选,表示刷新本查询前,先刷新源查询,否则直接基于缓存数据刷新数据;,2.6、基于现有查询的查询,2.7、基于WebService的查询,基于WebService的查询主要是指基于SOA模式的数据查询,即数据来源是有其他应用所提供数据服务。BQ支持的WebService必须有WSDL;BQ只支持和列出WSDL中返回String 类型的接口;返回值String必须符合以下格式:A1B1A2B2,参数:介于系统和用户之间的,在运行时由用户选择、输入和决定的内容。,3.1、参数使用技巧,三、查询制作技巧,图示:为一个“雇员ID”参数,参数特点:1、BQ参数使用灵活,可以新建在查询、报表、系统共享区等多处;2、BQ参数引用分两种形式:物理参数和引用参数,区分两者的标志是参数图标下是否有小箭头;3、参数“=”的重载,能灵活、有效的简化报表的设计;4、可以用参数接收父级查询或对象传递过来的环境变量,这一点在做钻取查询时尤为重要;5、参数与参数环境变量结合可以简化EIS制作的工作量。,提示:参数名称,很重要,需要规范,尤其是在多个报表联动,钻取时;数据类型:只有三种数值类型,日期,数字和字符,具体的类型应该与数据库字段类型相容;显示名称:是用户看到的提示,如果没有显示名称,系统就显示名称;参数类型:一般都是值参数;参数值来源:在此设置,是否提供下拉框选择,备选数值的来源;数据转换:用户输入名称时将名称转化为代码,传到SQL语句中执行,需要其他对象(如查询,值列等的)支持,具体参考,带数据转换的例子;缺省值:就是当用户没有输入值的时候,给参数赋的默认值;选项:参数的行为控制,如:参数必须输入时,勾选”不允许为空”即可;扩展参数输入方式:是参数选择多样化的一个配置选项,7.1.30以后的版本可用。,参数选项介绍:,在查询或查询报表中,查询条件中的“=“是经过BQ重载的,它的一些特性能帮助简化报表的制作。,系统自动将“=“翻译成“LIKE”,系统自动将“=“翻译成 IN,系统自动将“=“翻译成 BETWEEN AND,智能操作符“=”介绍,日期类型:,字符类型:,2011/01/012011/01/31:系统翻译成:BETWEEN 2011/01/01 AND 2011/01/312011/01/01,2011/01/31:系统翻译成:IN(2011/01/01,2011/01/31)201101:系统翻译成:=2011/01/01 AND=2011/01/01 AND 2012/01/01,开区间构造:,2011/01/012011/01/31&:系统翻译成:=2011/01/01 AND 2011/01/01 AND=2011/01/31,树状参数介绍,(1)参数来源选择指定为可以树形扩展的对象。,(2)扩展参数输入方式选择树形下控框。,基于Northwind数据源Orders和OrderDetails查询销售订单指定客户、指定日期范围的销售订单。,练习:查询指定日期的销售订单,BQ允许查询对象中通过“附属条件”来描述指标的语义,这样就能将不能语义的指标在同一个表格或界面上显示。,3.2、带附属条件的查询,注意:1、“附属条件”主要用于描述“查询对象”所独有的,如图中:货主地区=西南,意思就是所该查询对象只表示西南地区的销售金额;2、BQ确定一个查询对象的语义会结合“查询条件”和“附属条件”两个部分,如查询有日期参数=1997,意思就是说:西南地区1997年的销售金额,而日期参数则定义在查询对象外的”查询条件”中;3、如果使用了附属条件,那么一个带“附属条件”的对象就代表一条SQL语句;4、不能在同一个查询中,对两个带附属条件的对象做四则运算、排序等,如果我们确实需要对其进行处理,可以基于该查询再新建一个”基于查询的查询“来处理;,案例:基于Northwind数据源的Orders、OrderDetails制作一个各地区年度收入对比查询栏位要求:地区|今年收入|去年收入参数要求:“年度”可以选择,提示:双击右图所示的查询对象列,聚合运算:通常有SUM、AVG、COUNT、MAX、MIN等等。,3.3、带聚合运算的查询,提示:选中一列查询对象,点击鼠标右键;汇总方式有求和、求最大值等,注意字符型字段只能求数目;对已设置聚合运算的要取消,请点右键,取消聚合;聚合后的字段会以蓝色字段的方式加以提示和区别。,技巧:当对查询对象中某一个设置了聚合运算,那么其他没有设置的都将作为分组依据。,数据排序:能让返回的结果按照大小顺序排列。,提示:数据排序对象,必须从查询对象中拖放过来;可以同时拖放多个查询对象列到数据排序;双击数据排序中的对象,可以改变排序的顺序;,3.4、带排序的查询,数据叠加:将原本存储在两个不同业务中,但内容又有一定联系的数据放在一个查询中。,提示:先新建一个普通的查询;在查询条件中点击鼠标右键子查询新建子查询;新建第二个查询,注意第一个与第二个的位置;第一个和第二个的查询列数必须相等,类型也必须要相容;,提示:选中右图红色所示位置,点击右键菜单叠加,3.5、Union取数查询,提示:新建查询;新建对象参数,对象参数的数据来源可以数,数据源字段或者是信息域字段;将对象参数拖放到查询对象栏位;,动态统计口径查询:允许用户在运行时确定统计的依据;,3.6、动态统计口径查询,3.7、查询列数据转换,四、前端应用技巧,4.1、查询格式设置,【格式设置】用于调整显示结果的颜色、字体、数字格式等。例如:对百分数的设置、金额字段设置为千分位显示,对内容较长字段进行自动换行设置等。.基本思路同EXCEL数据格式调整,【显示格式设置】用于调整查询表格DataGrid的外观等等。,提示:新建查询,刷新;设置前N名,查询工具栏刷新按钮 Top N/Bottom N;正数代表Top N,负数代表Bottom N;如果显示其它,则除Top N/Bottom N外的数据以其它的口径汇总在下方。再次刷新。,1,2,3,4,4.2、实现TopN,4.3、带示警器的查询,4.4、带图片的查询,图片,能让人有直观的视觉效果,能快速的区别一种事物,BQ查询支持内嵌图片。,提示:1、在BQ共享区新建图像;2、选中查询列,格式设置自定义格式;”表示通配符;3、将整列显示为图像;,4.5、基于查询的查询汇总,基于查询查询汇总注意事项:1、如果查询中非聚合字段不包含公式,则可以直接在设计界面中,点击邮件,选择聚合运算(如:求和、求行数等)即可;2、如果查询中非聚合字段中包含公式,则需要通过设置前端聚合运算。,前端聚合运算:1、选中需要求和的列,点击鼠标右键;2、选择相应的 聚合运算方式,并重新刷新查询即可。,注:每次修改查询设计之后,需要重新设置前端聚合运算。,五、函数使用技巧,【前台函数】:1、前台函数的重要标志以“”打头;2、前台函数在客户端解析,执行;3、除CrossColumn、ParentChild两个函数外,其他前台函数不能与数据库字段混合运算;,【查询列函数】:1、查询列函数主要运用于基于现有查询的查询;,【数据库函数】:1、数据库函数与我们常用的SQL语言中的函数相同,应该说SQL语言函数库的一个子集;2、不同的数据库产品有各自不同的函数库,因此我们在选用函数库需要依据具体的数据库类型而定,如:Oracle的时间函数一般用to_char,而MS SQL则可以用Year、Month。3、如果常用的SQL函数不在数据库函数列表中,我们可以手工添加。,5.1、函数定义,5.2、CrossColumn函数,CrossColumn主要用于将行存储的辅助核算数据、公共代码表,转换成列。,5.3、ParentChild函数,ParentChild主要用于将具有自反结构的表(即:父子维度表),转换成查询列模式。,六、查询钻取技巧,6.1、查询钻取设置,查询钻取:是指看到汇总的数据后追踪明细的行为。做钻取的时候我们需要注意:1、钻取行为;2、钻取参数的传递。,钻取行为:Refresh:替换式Popup:弹出式,参数传递:从查询发起的钻取,会传递两部分数据到下一级,1、查询列的值,以命名环境变量传递,环境变量名称就是列名称;2、查询参数的值,以命名环境变量传递,环境变量名称是参数名称;3、下级对象要接收上级对象传递过来的数据,需要在下级对象中新建与环境变量同名的参数。,七、查询工具栏定制,报表工具栏分设计者工作栏和浏览者工具栏,在菜单栏空白处按右键,选择要自定义的对象。点击自定义,弹出自定义工具栏的设置界面。将可用的和当前的工具栏按钮通过左右箭头进行调整。支持新建按钮和图标的调整。调整完后按确定,如需恢复,回到菜单界面执行恢复原始工具栏操作。,八、查询发布,查询是BQ取数的唯一接口,同时他也可以当作一个简单的报表来使用,可以直接发布到Web目录,供最终用户浏览、打印和导出。,MajpjMVcyzj21HLfrvy96dv02lPPfYgxUS7IYmZkyEmZ0kGeYZS3bpLCkYH1lt4EK7CxmUX3ijoYSOer7ZuaVWYgz4EpZrUirVpMzzvNtf1XZw5oswSXOtFaejnOcmfE1lZgnN1RSXg8wLCG8CVQ3XPJMvodPFWcpiYJgZazNSEPNIaklYSu7qSd1UpaxmZDlpN9zW7kljfsLCLi26Yv109ffbnDH8LbUN1G6ACURQ39eG12KHL9tXsZ1jzgoCK8g1kuNOh5eFvcmVT5ZYVQt9zk3rp3qLnf02FovEXxVRxjCcFRNppiJljNiOuk6fONnyX7fyGg7sXZ49BmCN5oy9VesHpKzdjTKwjrkCEQCFDehVmGax3lrOEbw63VscA3YSijtUKoCyiLzAlVRp7l4QgPNHxvJFFDyjUVN3oHlMah0XBd4uTbkfPIhHtw0evPmYOrdhEDoPwvYhzlGplU1AU9mpyiCXH8gpPCBRYjq77VcnbXumNE1yGfyTsbSj89J63kRTKDkKUg3mdS5sJ4X5cQ8dK7oW9IkScssECQdz2O9UTlpRjAFPChjhLdzopQzwxQf8ozdzOhogwAooXpUF83BX4C3jRgjDJiiXEUDMaNz4vQ4n164vspddHvOIVuBBdMA4xp1YhiHk0vOJ8TL1BxogzVlMpmod6ianYGmksQq6NWCEd56hZF4wfaNyZcrGfNxnPiG6ZAxSkfmhJAKtNmCqbRmppeXp8inz4eq3HkWCMSORyMMX522xpHG6basNr6KQfbZsFbHjzyNlJrruLolKFcC84dqfijBO5Dy2NaBcNEBPgQrT12PgpcKx2or2YChN5DPjs80zzdtdAdTKuW4uVv9bbZu3K2SZ2aEhTlIC1UqrIWibkzwHh6p8gLv26zr01mJybfOzFc4T7kQH1IpPwOzMDnAKPLsLrznXGjFNIA9bSWWms6ibKZwQIKrMzalwbFrQJvOP1rPH8rx2KkyYqrtQk5VRwM1HSX,