想实现这种样子的报表。。就是某一列的值在多个区间范围内的。。可以怎么建维度表。?

0

3.png

 
已邀请:
1

BAO胖子 - 15年BI经验,涉足电力,快消品,医药,信息服务等行业的BI老兵。 2015-10-20 回答

建议建维度表,这种东西是典型的派生维度,类似的应用还有“在线时长”,“入网时间”,“消费层次”等等。
一般建两个字段,第一字段存基础信息,从0-150,假设人能活到150的话,第二个字段存如上的信息,因为这个年龄划分是有可能变化的,比如你的例子就没分出来童年、少年、青年和老年。
 
然后在出FACT Table的时候存入第一字段的信息作为一个维度成员。大概是这个样子。
0

BIWORK - 热衷于微软BI技术,技术架构和解决方案! 2015-10-20 回答

可以不需要单独建立一个维度,年龄本身就直接可以作为一个数值保存就可以了,在前端页面上根据年龄转换判断比如:
SELECT CASE WHEN Age BETWEEN 10 AND 50 THEN N'10-50岁'  END AS AGE_LEVEL。 等等。

如果这样觉得麻烦,把这个转换的逻辑后移放入维度表中作为一个属性即可。比如 属性中本来就有这样的一个字段 年龄:10,那么在插入到这个维度表的时候多增加一个字段 年龄段,保存这个值就可以了。

因为基本上像这种年龄段不会经常变,字符类型的,所以非常适合放在维度表中作为一个属性字段。
 
0

老头子 - 专注是唯一的捷径 2015-10-21 回答

大概写下你参考参考(这里基于左闭右开,且年龄为整数):
报表展示范围字段,传值传年龄字段,带入SQL即可。
 
年龄   |   范围
-----------------------
0      |   1岁以下
1      |   1-3岁 
2      |   1-3岁
3      |   3-10岁
4      |   3-10岁
5      |   3-10岁
6      |   3-10岁
7      |   3-10岁
8      |   3-10岁
9      |   3-10岁
...
101    |    100岁以上
 
 

要回复问题请先登录注册