Exemplo n.º 1
0
        public void CompleteTest()
        {
            string compResult = "SELECT ";

            compResult += "NON EMPTY { CrossJoin ([COUNTRY].Members, [CITY].Members) } ON ROWS, ";
            compResult += "NON EMPTY { { [Measures].[ventas], [Measures].[stock] } } ON COLUMNS ";
            compResult += "FROM Ventas";

            //builder
            MDXBuilder Builder = new MDXBuilder();

            Builder.CubeName = "Ventas";

            //ROW Axis
            MDXAxis   RowAxis   = new MDXAxis(MDXAxis.ROW_AXIS);
            CrossJoin CrossJoin = new CrossJoin(new MemberAxisItem("[COUNTRY].Members"));

            CrossJoin.AddCrossJointTo(new MemberAxisItem("[CITY].Members"));
            RowAxis.AxisItem = new NonEmpty(CrossJoin);

            //Column Axis
            MDXAxis     ColumnAxis = new MDXAxis(MDXAxis.COLUMN_AXIS);
            SetAxisItem setList    = new SetAxisItem(new MemberAxisItem("[Measures].[ventas]"));

            setList.AddAxisItem(new MemberAxisItem("[Measures].[stock]"));
            ColumnAxis.AxisItem = new NonEmpty(setList);

            //Add Axis to Builder
            Builder.AddAxis(RowAxis);
            Builder.AddAxis(ColumnAxis);

            Assert.AreEqual(compResult, Builder.Build());
        }
Exemplo n.º 2
0
        public void InitializationWithCubeName()
        {
            MDXBuilder builder = new MDXBuilder();

            builder.CubeName = "[Accounts]";

            Assert.AreEqual(builder.Build(), "SELECT {MDX_AXIS} FROM [Accounts]");
        }
Exemplo n.º 3
0
        public void InitializationShouldEmpty()
        {
            string     Template = "SELECT {MDX_AXIS} FROM {CUBE_NAME}";
            MDXBuilder builder  = new MDXBuilder();

            Assert.AreEqual(builder.Build(), Template);
            Assert.AreEqual(builder.AxisCount, 0);
        }
Exemplo n.º 4
0
        private static IEnumerable <T> Query <T, CriteriaT>(DbConnection con, HttpRequestMessage request, UserInfoDTO user, string rowAxis)
            where CriteriaT : AbstractCriteria, new()
        {
#if DEBUG && TEST
            dynamic data = Common <CriteriaT> .CriteriaT;
#else
            //非管理员
            dynamic data = request.Deserialize <DistributorStockCriteria>();
            if (data == null)
            {
                data = new DistributorStockCriteria();
            }
#endif
            data.SetDimissionValuesToSubCube(user);
            data.SetDimissionValuesToWhere(user);

            //设置映射关系
            typeof(T).Map(propertyMap);

            string strDate = null;
            if (data != null && data.BillDates != null && data.BillDates.Length > 1)
            {
                strDate = data.BillDates[1].ToString();
            }

            if (string.IsNullOrEmpty(strDate))
            {
                throw new Exception("查询参数日期不能为空!");
            }


            string before90Date = DateTime.ParseExact(strDate, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture)
                                  .AddDays(-90).ToString("yyyyMMdd");


            //生成mdx前部分语句
            var mdx = BuildMdx(rowAxis);
            mdx = mdx.Replace("{0}", strDate)
                  .Replace("{1}", before90Date);

            string subCube = @" [KDS3_CY] ";
            subCube = subCube.Replace("{0}", strDate);

            //构造完整MDX
            var builder = new MDXBuilder();
            builder.Mdx(mdx)
            .Cube(data.ToSubCube(subCube))
            .Where(data.ToWhere());

            var sql = builder.Build();

#if DEBUG && TEST
            var table = con.GetSchemaTable(sql);
#else
#endif

            return(con.Query <T>(sql).ToList());
        }
Exemplo n.º 5
0
        public void InitializationWithOneAxis()
        {
            MDXBuilder builder = new MDXBuilder();
            var        mock    = new Mock <IMDXAxis>();

            builder.AddAxis(mock.Object);

            Assert.AreEqual(builder.AxisCount, 1);
        }
Exemplo n.º 6
0
        private static IEnumerable <T> Query <T, CriteriaT>(DbConnection con, HttpRequestMessage request, UserInfoDTO user, string mdx, Dictionary <string, string> maps) where CriteriaT : AbstractCriteria, new()
        {
#if DEBUG && TEST
            dynamic data = new CriteriaT();
            //  data.BillDates = new int?[] {  201801  };
            data.CompanyIDs = new int[] { 210002 };
#else
            //非管理员
            dynamic data = request.Deserialize <CriteriaT>();
            if (data == null)
            {
                data = new CriteriaT();
            }

            if (user.UserType != 12 && user.UserType != 161)
            {
                data.CompanyIDs = new int[] { user.CompanyID.Value };
            }
            data.BillStatusIDs      = new int[] { 7 };
            data.BussLineIDs        = new int[] { 2 };
            data.CustChannelTypeIDs = new int[] { 5, 6, 7, 8, 9, 10, 11, 12 };
#endif

            //设置映射关系
            typeof(T).Map(maps);


            //日期查询特殊处理
            if (data.BillDates != null)
            {
                if (data.BillDates.Length > 0)
                {
                    mdx = mdx.Replace("{0}", data.BillDates[0].ToString());
                }

                if (data.BillDates.Length > 1)
                {
                    mdx = mdx.Replace("{1}", data.BillDates[1].ToString());
                }
            }



            //构造完整MDX
            var builder = new MDXBuilder();
            builder.Mdx(mdx)
            .Cube(data.ToSubCube("[KDS3_CY]"))
            .Where(data.ToWhere());

            var sql = builder.Build();

            //var table = con.GetSchemaTable(sql);
            return(con.Query <T>(sql).ToList());
        }
Exemplo n.º 7
0
        public static IEnumerable <T> Query <T, CriteriaT>(DbConnection con, HttpRequestMessage request, UserInfoDTO user, string mdx, Dictionary <string, string> maps) where CriteriaT : AbstractCriteria, new()
        {
#if DEBUG && TEST
            dynamic data = Common <CriteriaT> .CriteriaT;
#else
            //非管理员
            dynamic data = request.Deserialize <CriteriaT>();
            if (data == null)
            {
                data = new CriteriaT();
            }
#endif

            data.SetDimissionValuesToSubCube(user);
            data.SetDimissionValuesToWhere(user);

            //设置映射关系
            typeof(T).Map(maps);


            //日期查询特殊处理
            if (data.BillDates != null)
            {
                if (data.BillDates.Length > 0)
                {
                    mdx = mdx.Replace("{0}", data.BillDates[0].ToString());
                }

                if (data.BillDates.Length > 1)
                {
                    mdx = mdx.Replace("{1}", data.BillDates[1].ToString());
                }
            }



            //构造完整MDX
            var builder = new MDXBuilder();
            builder.Mdx(mdx)
            .Cube(data.ToSubCube("[KDS3_CY]"))
            .Where(data.ToWhere());

            var sql = builder.Build();

#if DEBUG && TEST
            var table = con.GetSchemaTable(sql);
#else
#endif

            return(con.Query <T>(sql).ToList());
        }