zoukankan      html  css  js  c++  java
  • MDX层次结构在crossjoin函数中调用多次

    问题来自SQL版提问,问题提出比较清晰
    http://topic.csdn.net/u/20081208/18/662ee8ba-500e-491c-83f7-06729d7fc4fe.html

    这里的多维数据集是foodmart的Warehouse and Sales。

    1、查询销售量最高的2个品牌及其下销量最低的商品
              这个问题我使用下面语句:
              select {[Unit Sales]} on COLUMNS,
              Generate(
                TOPCOUNT([Product].[Products].[Brand].members, 2, [Unit Sales]),
                {[Product].[Products].CurrentMember}*
                BottomCount([Product].[Products].[Product].members, 1, ([Unit Sales],[Product].[Products].CurrentMember))
                )on ROWS
              from [Warehouse and Sales]
              但是报错说Products层次结构在crossjoin函数中调用多次,我不明白为什么?如果不能这样做,而Product维度又只有一个层次结构,那么应该这样才能得到结果呢?
    ...

    我的第一个回答
    >>Products层次结构在crossjoin函数中调用多次
    错误说明已经很明白了,msdn的例子是两个不同纬度(层次结构上的),同一层次结构只要用CurrentMember.Children就可以了何必再交叉呢


    反馈

    mdx写成这样:
    select {[Unit Sales]} on COLUMNS,
    Generate(
    TOPCOUNT([Product].[Products].[Brand].members, 2, [Unit Sales]),
    BottomCount([Product].[Products].CurrentMember.Children, 1, ([Unit Sales],[Product].[Products].CurrentMember))
    )on ROWS
    from [Warehouse and Sales]
    每行前面就没有商品品牌了。


    我的第二个回答

    层次结构不能多次出现,但是维度可以多次出现,把你要的品牌在前面再交叉一次吧:p

    但是不能用层次结构,我不知道原始纬度是什么,比如是[Products].[Brand]

    rows这里改为

        {TOPCOUNT([Products].[Brand].children,2, [Unit Sales])}*{Generate(...)} on rows


    反馈

    我试了你说的,确实可以的


  • 相关阅读:
    djangorestframework的源码认证流程
    centos7 docker更换源地址(阿里云)
    vue 递归 无限极
    Linux文件属性及如何改变文件属性和权限
    centos7 安装docker
    centos7 mysql5.7 忘记密码
    git push 单个文件时超过100M报错,解决方案
    python中的依赖包--导出与安装
    18-----cmdb需求规划以及表结构设计
    17-----vue前端权限管理
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6204868.html
Copyright © 2011-2022 走看看