Designer_lesson7_解决SQL陷阱.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Designer_lesson7_解决SQL陷阱

* 东方地球物理公司信息技术中心 北京中油瑞飞信息技术有限责任公司 汇报人:祝军 Lesson 7 解决SQL陷阱 理解SQL陷阱和Universe 解决扇形陷阱 解决断层陷阱 课程目的 1、理解SQL陷阱和Universe 扇形陷阱和断层陷阱都是SQL语句运行次序引起的潜在的问题。 一般情况一个SQL语句会正确运行,但有聚集应用时,在特殊的情况下会返回错误的结果,因为这种情况只会影响到结果,不会产生错误信息,所以非常令人担心。 和环路返回较少的结果集不同,扇形陷阱,断层陷阱会返回过多的结果集 2、发现和解决断层陷阱 2.1、断层陷阱 断层陷阱是当两个“多对一”联接会聚在一个表上时三个表之间的一种联接路径,并且没有适当地分隔会聚联接路径的上下文。 只有当所有以下条件存在时,才会获得不正确的结果: Universe 结构中的三个表之间存在“多 对 一 对 多” 关系。 查询包括基于位于“多”端的两个表的对象。 基于“一”端表的单一维返回了多个行。 2、发现和解决断层陷阱 2.2、断层陷阱场景 2、发现和解决断层陷阱 2.2、断层陷阱场景 2、发现和解决断层陷阱 2.2、断层陷阱场景 2、发现和解决断层陷阱 2.3、发现断层陷阱 在结构图中检查一个“一对多”(1:N)的连接路径,看是否存在断层陷阱。 选择“工具-〉自动检测-〉检测上下文”或选择“检测上下文”工具条按钮来在机构图中查询候选上下文。 在报表中添加附加的维或明细对象,如果有断层陷阱,那么聚集的结果就会翻倍,这样可以确定断层陷阱的存在。 2、发现和解决断层陷阱 2.4.1、解决断层陷阱 对每个度量执行单独的查询来解决断层陷阱 2、发现和解决断层陷阱 2.4.1、使用“对度量使用多重SQL语句”设置的缺陷 1、结果会混乱 当查询只有纬度对象时,这个选项将不起作用,即不能生成单独的SQL语句,如下图。结果形成了一个笛卡尔集。这个结果可能没有错误的日期,但多行结果会使用户混乱。 2、查询性能不高 这个设置会对每个度量生成单独的查询,即使可能有些是不需要的。所以它比较低效。 2、发现和解决断层陷阱 2.4.2、使用上下文解决断层陷阱 在模型中找到潜在的断层陷阱,即“多 – 一 – 多”关系。 选择工具-〉自动检测-〉检测上下文,出现候选上下文窗口。 在候选上下文窗口选择一个上下文,点添加加入已接受上下文中。 重复添加操作,新加的上下文可以在列表模式窗口中看到。 选择文件-〉参数,打开Universe参数窗口 选择SQL tab页 选择“对上下文使用多重SQL语句”选项。 确定。 3、发现和解决扇形陷阱 3.1、扇形陷阱 扇形陷阱发生在两个串联的“一对多”连接的三张表中 当查询包含来自中间位置表(B表)的度量和末端表(C表)的任何对象。对于Y对象有多个Z和它对象,所以会产生类似断层陷阱那些的笛卡尔集。 如果从两个表查询度量对象,并且 这两个表连接是“多对一”关系。 那么这就有可能是一个扇形陷阱。 3、发现和解决扇形陷阱 3.2、扇形陷阱场景 3、发现和解决扇形陷阱 3.2、扇形陷阱场景 3、发现和解决扇形陷阱 3.3、解决扇形陷阱 1、修改Universe参数 不推荐用这个方法,和断层陷阱类似,使用这种方法只能针对度量对象起作用,而且效率不高。 3、发现和解决扇形陷阱 3.3、解决扇形陷阱 2、使用别名和上下文混合方法 如果有… 则… 在“一对多”关系中有三张表 一个纬度对象来自“一”表,其他两个度量来自后续的两个表 给中间一个多端表创建一个别名,并连接到一端,用检测上下文检测并创建一端到别名表和到原始三张表的上下文。 这是最有效到解决扇形陷阱的方法。 在“一对多”关系中有两张表 一个纬度和一个度量对象来自“一”表,另一度量来自“多”表。 给一端表创建一个别名,用检测上下文检测并创建一端到别名表和到原始三张表的上下文。 注意:虽然这种方法能解决这种扇形陷阱,但两张表场景中最有效的方法是使用@aggregate_aware函数 3、发现和解决扇形陷阱 3.3、解决扇形陷阱 2、使用别名和上下文混合方法 3、发现和解决扇形陷阱 3.3、解决扇形陷阱 2、使用别名和上下文混合方法(两个表的扇形陷阱场景) 为A表建立一个别名表 创建一个别名表到A表的连接并设置基数 设置B到A的上下文 编辑度量Y,使Y来自A的别名表而不是A表 3、发现和解决扇形陷阱 3.3、解决扇形陷阱 3、避免扇形陷阱场景 可以在定义模式时把相关的所以度量对象放在同一张表中,避免把一个度量放在除了末端表中的其他表中。 谢谢! *

文档评论(0)

dajuhyy + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档