OLAP分析アプリケーション(9) - 前年比

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/wh_xia_jun/article/details/91449260

キーワード:

フィルタ

前月

ボリューム上

ドリル

MDXクエリコンテキストと実行

フィルタ:返す指定されたセットはスクリーニング基準に従って設定してください。

これは、コンテキスト依存!

语法:フィルタ(SET_EXPRESSION、論理式)

        String mdxStr_140 ="select non empty{[Account].Children} on columns,{Filter({[Time].[2017].[4].[11],[Time].[2017].[4].[12]},[Measures].[金额]>10000)} on rows " +
                "from [Col_trade_detail]  ";
//错误?
        String mdxStr_142 ="select non empty{[Account].Children} on columns,{Filter([Time].[Year].Members,[Measures].[金额]>10000)} on rows " +
                "from [Col_trade_detail]  ";

結果:

msdStr_142文が間違っていないですが、いくつかの年の自由値:ことに注意してください!すべては、総括する後者の必要性をコンピューティングに関わるNULL値を除外していませんでした。

次のように関連する比較文は次のとおりです。

    String mdxStr_144="SELECT Filter({[Account].[Level1projectname].Members},[Measures].[金额]>10000000)on axis(0) FROM  [Col_trade_detail] where ([Time].[2017],[Measures].[金额])";
 //----去掉条件  啥也查不出来,原因是默认的维度成员有空值引起的?
        String mdxStr_145="SELECT Filter({[Account].[Level1projectname].Members},1)on axis(0) FROM  [Col_trade_detail] ";
        String mdxStr_146="SELECT Filter({[Account].[Level1projectname].Members},1)on axis(0) FROM  [Col_trade_detail] where ([Measures].[金额])";
        //下面的语句 如果把[Time].[2017] 换成[Time].[2005],则什么也没有
        String mdxStr_146_1="SELECT Filter({[Account].[Level1projectname].Members},[Measures].[金额]>10000000)on axis(0) FROM  [Col_trade_detail] where ([Time].[2017],[Measures].[金额])";
        String mdxStr_147="SELECT Filter([Account].[Level1projectname].Members,[Measures].[金额]>10000000)on axis(0) FROM  [Col_trade_detail] where ([Time].[2005])";

コンテンツの背後にあります:

前月:

        String mdxStr_151="with member [Measures].[环比] as "+
                "'[Measures].[金额]/([Measures].[金额],[Time].CurrentMember.PrevMember)-1', FORMAT_STRING=\"0%\""+
        " select {[Measures].[金额],[Measures].[环比]} on  axis(0),{[Time].[2017].Children} on rows  from [Col_trade_detail] "+
        " where [Account].[Account_L].[行政事业性收费收入].[公安行政事业性收费收入]";
        //这里我想求全部年度的的季度及月份的环比? 首先查2017年第4季度前面30个季度的同比情况
        String mdxStr_152="with member [Measures].[环比] as "+
                "'[Measures].[金额]/([Measures].[金额],[Time].CurrentMember.PrevMember)-1', FORMAT_STRING=\"0%\""+
                " select {[Measures].[金额],[Measures].[环比]} on  axis(0),{[Time].[2011].[4]:[Time].[2017].[4]} on rows  from [Col_trade_detail] "+
                " where [Account].[Account_L].[行政事业性收费收入].[公安行政事业性收费收入]";

        String mdxStr_153="with member [Measures].[环比] as "+
                "'[Measures].[金额]/([Measures].[金额],[Time].CurrentMember.PrevMember)-1', FORMAT_STRING=\"0%\""+
                " select {[Measures].[金额],[Measures].[环比]} on  axis(0),{[Time].[2017].[4].Lag(20):[Time].[2017].[4]} on rows  from [Col_trade_detail] "+
                " where [Account].[Account_L].[行政事业性收费收入].[公安行政事业性收费收入]";


       String mdxStr_151="with member [Measures].[环比] as "+
                "'[Measures].[金额]/([Measures].[金额],[Time].CurrentMember.PrevMember)-1', FORMAT_STRING=\"0%\""+
        " select {[Measures].[金额],[Measures].[环比]} on  axis(0),{[Time].[2017].Children} on rows  from [Col_trade_detail] "+
        " where [Account].[Account_L].[行政事业性收费收入].[公安行政事业性收费收入]";
        //这里我想求全部年度的的季度及月份的环比? 首先查2017年第4季度前面30个季度的同比情况
        String mdxStr_152="with member [Measures].[环比] as "+
                "'[Measures].[金额]/([Measures].[金额],[Time].CurrentMember.PrevMember)-1', FORMAT_STRING=\"0%\""+
                " select {[Measures].[金额],[Measures].[环比]} on  axis(0),{[Time].[2011].[4]:[Time].[2017].[4]} on rows  from [Col_trade_detail] "+
                " where [Account].[Account_L].[行政事业性收费收入].[公安行政事业性收费收入]";

        String mdxStr_153="with member [Measures].[环比] as "+
                "'[Measures].[金额]/([Measures].[金额],[Time].CurrentMember.PrevMember)-1', FORMAT_STRING=\"0%\""+
                " select {[Measures].[金额],[Measures].[环比]} on  axis(0),{[Time].[2017].[4].Lag(20):[Time].[2017].[4]} on rows  from [Col_trade_detail] "+
                " where [Account].[Account_L].[行政事业性收费收入].[公安行政事业性收费收入]";

//修正  应对前一期可能为0的情况  iif 有问题?
        String mdxStr_154="with member [Measures].[环比] as "+
                "'IIF(([Measures].[金额]=0),null," +
                "[Measures].[金额]/([Measures].[金额],[Time].CurrentMember.PrevMember)-1)', FORMAT_STRING=\"0%\""+
                " select {[Measures].[金额],[Measures].[环比]} on  axis(0),{[Time].[2017].[4].Lag(20):[Time].[2017].[4]} on rows  from [Col_trade_detail] "+
                " where [Account].[Account_L].[行政事业性收费收入].[公安行政事业性收费收入]";

 チェーンの結果:

警察の業界管理料、各年の第一四半期の興味深い特徴を持っている急激な管理費チェーンを行っている、なぜ、私は、結合、業界の特性を知ることが怖いです。

IIF:

ブール条件が真か偽であるによると、表現の異なるブランチを計算します。

语法:式IIf(論理式、Expression1の[HINT <ヒント>] 1、式[HINT <ヒント>])

年:

いとこは:指定されたサブサブメンバーのメンバーの親メンバー以下同じ相対的な位置を持っているを返します。

いとこ(Member_Expression、Ancestor_Member_Expression)

例:

 String mdxStr_160="SELECT Cousin([Time].[2017].[4],[Time].[2016]) ON 0  FROM [Col_trade_detail]";

結果:

 

年:

 

        String mdxStr_160="SELECT Cousin([Time].[2017].[4],[Time].[2016]) ON 0  FROM [Col_trade_detail]";
        String mdxStr_161="WITH MEMBER Measures.[同比] AS"+
                "'[Measures].[金额]/([Measures].[金额], Cousin([Time].CurrentMember, [Time].CurrentMember.Parent.PrevMember))- 1', FORMAT_STRING = \"0%\""+
        " SELECT {[Measures].[金额], Measures.[同比]} ON 0,"+
                "{[Time].[2011].[1]:[Time].[2017].[4]} ON 1"+
        "   FROM [Col_trade_detail] where [Account].[Account_L].[行政事业性收费收入].[公安行政事业性收费收入]";
        String mdxStr_162="WITH MEMBER Measures.[同比] AS"+
                "'[Measures].[金额]/([Measures].[金额], Cousin([Time].CurrentMember, [Time].CurrentMember.Parent.PrevMember))- 1', FORMAT_STRING = \"0%\""+
                " SELECT {[Measures].[金额], Measures.[同比]} ON 0,"+
                "{[Time].[2008].[1]:[Time].[2017].[4]} ON 1"+
                "   FROM [Col_trade_detail] where [Account].[Account_L].[行政事业性收费收入].[公安行政事业性收费收入].[公民出入境证件费]";

結果:

容易にPARALLELPERIODによって形成することが、例を指示:

        String mdxStr_167="WITH MEMBER Measures.[同比] AS"+
                "'([Measures].[金额]-([Measures].[金额],ParallelPeriod([Time].[Year],1,[Time].[Quarter].currentMember)))/" +
                "([Measures].[金额],ParallelPeriod([Time].[Year],1,[Time].[Quarter].currentMember))', FORMAT_STRING = \"0%\""+
                " SELECT {[Measures].[金额], Measures.[同比]} ON 0,"+
                "{[Time].[2011].[1]:[Time].[2017].[4]} ON 1"+
                "   FROM [Col_trade_detail] where [Account].[Account_L].[行政事业性收费收入].[公安行政事业性收费收入]";

結果:

それは見ることができます。mdxStr_167とmdxStr_161文は同じです。

ボリューム:

 

ドリル:

私の理解では、ということであるドリルアプリケーションDrilldownLevel機能、

DrilldownLevel:Drills down the members of a set to one level below the lowest level represented in the set.

DrilldownLevel(Set_Expression [,[Level_Expression] ,[Index]] [,INCLUDE_CALC_MEMBERS])

例1:

        String mdxStr_171="SELECT  non empty DrilldownLevel({[Account].[Account_L].[行政事业性收费收入]})  ON COLUMNS  from [Col_trade_detail] " +
                " where [Time].[2017]";

 结果:

ps:如果不限定[Time].[2017],前面的年份是年份,什么都查不出来!空值的处理,后面需要专题学习、测试。

本节未完,待续.....

上一章节:Common Calculations and Selections in MDX

下一章节:动态sql

おすすめ

転載: blog.csdn.net/wh_xia_jun/article/details/91449260