在SSAS中,经常会遇到“Attribute key not found(找不到属性键)”的错误,这种错误通常是由于某个维度属性(Dimension Attribute)的数据没能从Sql Server导入到Analysis Services中(处理这个维度属性的过程倒是不会出错),而维度关键属性(Dimension Key Attribute)处理时又需要这些数据,因而引发了这个“找不到属性键”的错误。这么讲可能有些抽象,你可以看我以前写的文章全半角空格导致的Analysis Services处理错误,里头有具体的案例。

解决这种问题就需要定位到出问题的数据。而生产环境中数据量一般会比较大,我们不大可能检查所有数据来发现可疑数据,这个时候,SSAS给出的错误提示就很有帮助了。

通常遇到处理异常,SSAS会有两种错误信息提示,一种是

Errors in the OLAP storage engine: The attribute key cannot be found: Table: TableName, Column: ColumnName1, Value: Value1. Table: TableName, Column: ColumnName2, Value: Value2.

这个错误提示会给出数据源中出错的数据,是在哪个表的哪个字段哪个值出的问题。

还有一个是

Errors in the OLAP storage engine: The record was skipped because the attribute key was not found. Attribute: generated attribute X of Dimension: DimensionName from Database: DatabaseName, Cube: CubeName, Measure Group: MeasureGroupName, Partition: PartitionName, Record: RecordNumber.

这个错误信息给出的是Analysis数据库中出错的位置,是哪个AS数据库的哪个数据立方体的哪个维度的哪个维度属性出的问题,以及出错条目编号是多少。

如果出错数据比较好辨认的话,那么我们可以直接在源数据库中使用like操作符查询相关的条目即可。例如下面这个例子:

我们可以很快将出错数据锁定在一个较小的范围。但是如果错误信息像下面这样:

你可能就没那么好定位了,这个时候我们就需要第二个错误提示的帮助了。

为了在处理失败时显示第二个错误提示,我们需要修改维度的ErrorConfiguration属性。打开维度的属性面板,展开ErrorConfiguration中的KeyNotFound,BIDS中如果你新建一个维度,那么默认配置会像下面这样:

如果处理失败,是不会显示第二个错误提示的。我们需要将KeyNotFound设置为ReportAndContinue,或者直接把整个ErrorConfiguration从(custom)改成(default)。

这样我们就能得到第二个错误提示了,第二个错误提示中有一个“记录(Record)”的编号,那么这个编号代表什么含义呢?

我一开始直觉的认为是EmployeeKey的主键键值,后来发现不对,于是猜测是处理时执行的Sql查询返回的结果集的行编号,后来发现又错了。

在经过一番测试后发现,错误提示中的“记录”编号,确实是和Sql查询返回的条目的行编号有关,但却有一定的偏移,一般情况下这个偏移值为1,也就是说,假设SSAS告诉你“记录”7出错了,那么就是第6行的数据出错了。

但有时候这个偏移不一定是1,有可能是2。至于规律和原因我暂时没找到。所以你只需要把出问题的维度属性相关的Sql查询放到Sql Server中运行一遍,然后根据错误提示中的“记录”号找到那附近的几行数据,一般就可以成功定位到错误数据了。

原文链接

最新文章

  1. Ubuntu 14.04上安装caffe
  2. zstu.2512. Moving Tables(贪心)
  3. LeetCode:Roman to Integer,Integer to Roman
  4. AutoIt实现selenium上传文件
  5. [Java][RCP] 记 ProgressView的使用
  6. java数据结构与算法值优先级队列
  7. hdu4597 Play Game DP
  8. word20170106在机场 At the airport有用的词和句子
  9. java 中的基本数据类型
  10. 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建二:配置MyBatis 并测试(1 构建目录环境和依赖)
  11. 学习笔记CB007:分词、命名实体识别、词性标注、句法分析树
  12. 使用Profile和Resources Filter隔离测试环境
  13. 大数据学习路线分享-Hbase shell的基本操作完整流程
  14. 各种遍历输出(经典版)----java基础总结
  15. C语言中的 (void*)0 与 (void)0
  16. STL——配接器(adapters)
  17. POST提交大量数据,导致后面数据丢失
  18. c++生成算式并计算(《构建之法》第一章课后第一题)
  19. Oracle EBS Color 色彩设置
  20. 半透明AlphaBlend

热门文章

  1. 【bzoj1098】办公楼
  2. C 风格字符串和strcpy方法的实现
  3. debian开机启动管理
  4. Octopus系列之模板快速开发手册
  5. NetworkComms V3 之同时监听多端口
  6. 无任何网络提供程序接受指定的网络路径(系统服务里没有workstation服务)
  7. Reflector反编译WinForm程序重建项目资源和本地资源
  8. NOIP2014感想
  9. CSS控制XML与通过js解析xml然后通过html显示xml中的数据
  10. Android Preference