背景:

  最近有个项目,有32家分公司,集团总部需要取这个32家分公司数据做分析,由于每个分公司的数据都比较庞大,所以最终方案是每个分公司一个DW,在cube搭建过程中将每个公司数据作为一个分区数据的来源,这样子即可分区又易于维护每个分公司的数据,而且还不会容易引发一个DW而数据爆炸、效率等问题。

问题:

  在创建cube时候,由于先前搭建先用一个分公司搭建了一个模型,所以后面想着将其它的分公司事实表添加到这个数据源视图里面即可,于是兴奋的创建了好多数据源,然后在原有的数据源视图里面添加了其它分公司的事实表,也添加修改了分区等内容,十分顺利,后面处理也是成功。

但是后面,因为店铺和经销商两个维度刚开始是分开2个单独维度,但后面需要分析各经销商经营情况,所以必须将经销商和店铺连接起来,于是就做了经销商和店铺之间的引用关系,cube于是就创建了销售度量值维度和经销商维度通过店铺的引用维度关系,但是再次处理,就处理失败,总是报错:数据源视图未包含“dbo_Dim_Store”表或视图的定义

测试:

测试一:

  猜想是否是数据源视图引发的,于是删除了刚才的引用关系,建立普通的关系,分区也没有改变任何设置,重新处理通过

测试二:

  看到错误提示,想来想去还是觉得是分区的问题,于是查看了错误时候报错的分区,查看其创建分区时候使用的查询SQL,发现一个重大问题:创建了引用维度的度量值组,查询的SQL回去关联相应的维度表查询,就如我们平时写JOIN查询一样,那在我们后面添加的的其它公司的数据源视图里面并没有这两个需要建立引用关系的维度表,只有事实表,所以在查询时候就导致了这个找不到xxx表的原因呢?于是将这两个引用的维度表也添加到了对应数据源视图中,再处理,就可以了。

总结:

  我们在创建引用维度的时候,其实cube底层也是通过SQL查询数据的,所以它依然会连接我们这些表进行查询,因此在我们的数据源视图中如果没有这些表,则查询就会失败,找不到表,因此我们在创建引用维度时候一定要注意:如果分区用到了不同数据源视图,则需要在相应视图中添加这个分区中使用的维度表方可。如果没有使用维度引用,则我们就不需要添加这些表,每个数据源视图就是一个单独的分公司即可。

最新文章

  1. redis参考文档
  2. js中apply,call的用法
  3. Validform 学习笔记---基础知识整理
  4. 【转】nginx服务器安装及配置文件详解
  5. 20145120 《Java程序设计》第9周学习总结
  6. sed命令使用记录
  7. dragsort拖动排序
  8. ECMAScript和JavaScript的联系
  9. 用Html5结合Qt制作一款本地化EXE游戏-太空大战(Space War)
  10. 获取输入设备的vid和pid
  11. 如何把mysql的ID归0?
  12. JDBC02 利用JDBC连接数据库【使用数据库连接池】
  13. 【干货分享】dos命令大全
  14. H5基础浏览器兼容性
  15. 用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 使用原型链和EventTrigger
  16. 在java程序中实现发送邮件的功能
  17. Linux基本命令总结(四)
  18. php exit die的区别
  19. json介绍和使用
  20. python进程编程

热门文章

  1. Android ANR详解
  2. 能加载文件或程序集 HRESULT:0x80070057 (E_INVALIDARG)的异常的解决方案
  3. python - web自动化测试 - 元素操作 - 鼠标键盘
  4. 1、python 循环控制
  5. [译]14-spring 集合元素的注入
  6. mysql数据库的日常使用
  7. Oracle 插入数据时获取系统时间
  8. hdu 2492 树状数组 Ping pong
  9. nyoj 题目737 合并石子(一)
  10. vb如何将数据库中某个字段显示在一个文本框