public HttpResponseMessage Combos(Filtro objFiltro) { string nombreDimension = @""; switch (objFiltro.Dimension) { case "1": // Clientes nombreDimension = @"{ [Dim Cliente].[Dim Cliente Nombre].CHILDREN } "; break; case "2": // Productos nombreDimension = @"{ [Dim Producto].[Dim Producto Nombre].CHILDREN } "; break; case "3": // Categorías nombreDimension = @"{ [Dim Producto].[Dim Producto Categoria].CHILDREN } "; break; case "4": // Empleados nombreDimension = @"{ [Dim Empleado].[Dim Empleado Nombre].CHILDREN } "; break; } string COLUMNS = @"NON EMPTY { [Measures].[Fact Ventas Netas] } ON COLUMNS,"; string ROWS = @"NON EMPTY { STRTOSET(@Dimension) } ON ROWS"; string CUBO_NAME = @"[DWH Northwind]"; string MDXQuery = @"SELECT " + COLUMNS + ROWS + " FROM " + CUBO_NAME; Dictionary <int, string> structure = new Dictionary <int, string>(); List <int> consecutivo = new List <int>(); List <string> valor = new List <string>(); var contador = 1; dynamic data; using (AdomdConnection cnn = new AdomdConnection(ConfigurationManager.ConnectionStrings["CuboNorthwind"].ConnectionString)) { cnn.Open(); using (AdomdCommand cmd = new AdomdCommand(MDXQuery, cnn)) { cmd.Parameters.Add(new AdomdParameter("Dimension", nombreDimension)); using (AdomdDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { while (dr.Read()) { structure.Add(contador, dr.GetString(0)); consecutivo.Add(contador); valor.Add(dr.GetString(0)); contador += 1; } dr.Close(); } } //data = new { id = consecutivo, itemName = valor }; } //return Request.CreateResponse(HttpStatusCode.OK, (object)data); return(Request.CreateResponse(HttpStatusCode.OK, structure)); }
public HttpResponseMessage TablaComparativa(Filtro objFiltro) { string nombreDimension = @""; switch (objFiltro.Dimension) { case "1": // Clientes nombreDimension = @"{ [Dim Cliente].[Dim Cliente Nombre].&[" + objFiltro.Item + "] } "; break; case "2": // Productos nombreDimension = @"{ [Dim Producto].[Dim Producto Nombre].&[" + objFiltro.Item + "] } "; break; case "3": // Categorías nombreDimension = @"{ [Dim Producto].[Dim Producto Categoria].&[" + objFiltro.Item + "] } "; break; case "4": // Empleados nombreDimension = @"{ [Dim Empleado].[Dim Empleado Nombre].&[" + objFiltro.Item + "] } "; break; } string WITH = @"WITH SET [TopVentas] AS NONEMPTY( ORDER( STRTOSET(@Dimension), [Measures].[Fact Ventas Netas], BDESC ) )" ; string COLUMNS = @"NON EMPTY { [Measures].[Fact Ventas Netas] } ON COLUMNS,"; string ROWS = @"NON EMPTY { ( [Dim Tiempo].[Dim Tiempo Mes Siglas].CHILDREN, [Dim Tiempo].[Dim Tiempo Año].CHILDREN ) } * { HEAD([TopVentas],1000) } ON ROWS"; string CUBO_NAME = @"[DWH Northwind]"; string MDXQuery = WITH + @"SELECT " + COLUMNS + ROWS + " FROM " + CUBO_NAME; List <string> fecha = new List <string>(); List <decimal> valor = new List <decimal>(); dynamic data; using (AdomdConnection cnn = new AdomdConnection(ConfigurationManager.ConnectionStrings["CuboNorthwind"].ConnectionString)) { cnn.Open(); using (AdomdCommand cmd = new AdomdCommand(MDXQuery, cnn)) { cmd.Parameters.Add(new AdomdParameter("Dimension", nombreDimension)); using (AdomdDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { while (dr.Read()) { fecha.Add(dr.GetString(0) + "-" + dr.GetString(1)); valor.Add(Math.Round(dr.GetDecimal(3))); } dr.Close(); } } data = new { fecha = fecha, valor = valor }; } return(Request.CreateResponse(HttpStatusCode.OK, (object)data)); }
public HttpResponseMessage SerieHistoricaPost(Filtro objFiltro) { //Debug.Write(objFiltro); //return Request.CreateResponse(HttpStatusCode.OK, objFiltro); //Se puso en filtro 0 para no tomarlo en cuenta y traer todas las de la categoría, sin embargo en el MDX no funciona, se trae todas las ventas string nombreDimension = @""; if (objFiltro.Item == "0") { switch (objFiltro.Dimension) { case "1": // Clientes nombreDimension = @"{ [Dim Cliente].[Dim Cliente Nombre].&[QUICK-Stop], [Dim Cliente].[Dim Cliente Nombre].&[Ernst Handel], [Dim Cliente].[Dim Cliente Nombre].&[Save-a-lot Markets], [Dim Cliente].[Dim Cliente Nombre].&[Rattlesnake Canyon Grocery], [Dim Cliente].[Dim Cliente Nombre].&[Hungry Owl All-Night Grocers] } "; break; case "2": // Productos nombreDimension = @"{ [Dim Producto].[Dim Producto Nombre].&[Côte de Blaye], [Dim Producto].[Dim Producto Nombre].&[Thüringer Rostbratwurst], [Dim Producto].[Dim Producto Nombre].&[Raclette Courdavault], [Dim Producto].[Dim Producto Nombre].&[Tarte au sucre], [Dim Producto].[Dim Producto Nombre].&[Camembert Pierrot] } "; break; case "3": // Categorías nombreDimension = @"{ [Dim Producto].[Dim Producto Categoria].&[Beverages], [Dim Producto].[Dim Producto Categoria].&[Dairy Products], [Dim Producto].[Dim Producto Categoria].&[Confections], [Dim Producto].[Dim Producto Categoria].&[Meat/Poultry], [Dim Producto].[Dim Producto Categoria].&[Seafood] } "; break; case "4": // Empleados nombreDimension = @"{ [Dim Empleado].[Dim Empleado Nombre].&[Margaret Peacock], [Dim Empleado].[Dim Empleado Nombre].&[Janet Leverling], [Dim Empleado].[Dim Empleado Nombre].&[Nancy Davolio], [Dim Empleado].[Dim Empleado Nombre].&[Andrew Fuller], [Dim Empleado].[Dim Empleado Nombre].&[Laura Callahan] } "; break; default: //Dimension por Default nombreDimension = @"{ [Dim Cliente].[Dim Cliente Nombre].&[QUICK-Stop], [Dim Cliente].[Dim Cliente Nombre].&[Ernst Handel], [Dim Cliente].[Dim Cliente Nombre].&[Save-a-lot Markets], [Dim Cliente].[Dim Cliente Nombre].&[Rattlesnake Canyon Grocery], [Dim Cliente].[Dim Cliente Nombre].&[Hungry Owl All-Night Grocers] } "; break; } } else { if (objFiltro.Item == "Meat") { objFiltro.Item = "Meat/Poultry"; } switch (objFiltro.Dimension) { case "1": // Clientes nombreDimension = @"{ [Dim Cliente].[Dim Cliente Nombre].&[" + objFiltro.Item + "] } "; break; case "2": // Productos nombreDimension = @"{ [Dim Producto].[Dim Producto Nombre].&[" + objFiltro.Item + "] } "; break; case "3": // Categorías nombreDimension = @"{ [Dim Producto].[Dim Producto Categoria].&[" + objFiltro.Item + "] } "; break; case "4": // Empleados nombreDimension = @"{ [Dim Empleado].[Dim Empleado Nombre].&[" + objFiltro.Item + "] } "; break; default: //Dimension por Default nombreDimension = @"{ [Dim Cliente].[Dim Cliente Nombre].&[" + objFiltro.Item + "] } "; break; } } string COLUMNS = @"NON EMPTY { [Measures].[Fact Ventas Netas] } ON COLUMNS,"; string ROWS = @"NON EMPTY { [Dim Tiempo].[Dim Tiempo Año].CHILDREN } * { [Dim Tiempo].[Dim Tiempo Mes Siglas].CHILDREN } * { STRTOSET(@Dimension) } ON ROWS"; string CUBO_NAME = @"[DWH Northwind]"; string MDXQuery = @"SELECT " + COLUMNS + ROWS + " FROM " + CUBO_NAME; Dictionary <string, decimal> structure = new Dictionary <string, decimal>(); List <string> year = new List <string>(); List <string> month = new List <string>(); List <decimal> value = new List <decimal>(); List <string> filter = new List <string>(); dynamic data; using (AdomdConnection cnn = new AdomdConnection(ConfigurationManager.ConnectionStrings["CuboNorthwind"].ConnectionString)) { cnn.Open(); using (AdomdCommand cmd = new AdomdCommand(MDXQuery, cnn)) { cmd.Parameters.Add(new AdomdParameter("Dimension", nombreDimension)); using (AdomdDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { while (dr.Read()) { year.Add(dr.GetString(0)); month.Add(dr.GetString(1)); filter.Add(dr.GetString(2)); value.Add(Math.Round(dr.GetDecimal(3))); } dr.Close(); } } data = new { years = year, months = month, filters = filter, values = value }; } return(Request.CreateResponse(HttpStatusCode.OK, (object)data)); }