public void TestConstructor() { string instance = @"JUAMPA-DEVPC\Cubes"; string database = "AdventureWorksDW2014Multidimensional-EE"; string query = @"select NON EMPTY { [Measures].[Order Quantity], [Measures].[Sales Amount] } * { DESCENDANTS([Date].[Calendar].[Calendar Year].&[2013], 2, self), [Date].[Calendar].&[2013] } ON 0, NON EMPTY CROSSJOIN( { DESCENDANTS ([Promotion].[Promotions].[Category],,SELF) }, { DESCENDANTS ([Product].[Product Categories].[Subcategory].[Gloves], ,SELF_AND_AFTER), DESCENDANTS ([Product].[Product Categories].[Subcategory].[Jerseys], ,SELF_AND_AFTER) }) on 1 from [Adventure Works] where ([Sales Territory].[Sales Territory].[Group].&[North America])"; string expected = @"Axis1 Order Quantity | Q1 CY 2013 Order Quantity | Q2 CY 2013 Order Quantity | Q3 CY 2013 Order Quantity | Q4 CY 2013 Order Quantity | CY 2013 Sales Amount | Q1 CY 2013 Sales Amount | Q2 CY 2013 Sales Amount | Q3 CY 2013 Sales Amount | Q4 CY 2013 Sales Amount | CY 2013 No Discount | Gloves 833 647 464 538 2482 13376.438 11182.134 8571.5 10089.88 43219.9519999999 No Discount | Half-Finger Gloves, L 167 103 79 128 477 2757.574 1875.934 1640.83 2478.388 8752.72599999999 No Discount | Half-Finger Gloves, M 376 308 203 254 1141 5936.37599999999 5231.06399999999 3649.01 4515.95599999999 19332.406 No Discount | Half-Finger Gloves, S 290 236 182 156 864 4682.48799999999 4075.13599999999 3281.66 3095.53599999999 15134.82 No Discount | Jerseys 2093 1950 1625 1549 7217 70495.658 68552.4439999999 59000.262 58338.7979999999 256387.162 No Discount | Long-Sleeve Logo Jersey, L 396 434 306 271 1407 12617.476 14237.152 10557.888 9548.08999999999 46960.606 No Discount | Long-Sleeve Logo Jersey, M 313 247 221 234 1015 10107.978 8308.33799999999 7668.466 8638.27199999998 34723.054 No Discount | Long-Sleeve Logo Jersey, S 28 56 74 78 236 1399.72 2799.44 3699.26 3899.22 11797.64 No Discount | Long-Sleeve Logo Jersey, XL 265 155 164 119 703 8588.28199999999 5608.87799999999 5738.852 4669.06599999999 24605.078 No Discount | Short-Sleeve Classic Jersey, L 374 359 291 264 1288 12806.428 12234.134 10398.474 9588.62399999999 45027.66 No Discount | Short-Sleeve Classic Jersey, M 28 40 40 40 148 1511.72 2159.6 2159.6 2159.6 7990.52 No Discount | Short-Sleeve Classic Jersey, S 298 275 202 205 980 10258.1 10052.938 7407.428 7677.37799999999 35395.844 No Discount | Short-Sleeve Classic Jersey, XL 391 384 327 338 1440 13205.954 13151.964 11370.294 12158.548 49886.76 Reseller | Gloves 252 55 40 41 388 3557.3635 896.7234 747.0626 760.9827 5962.1322 Reseller | Half-Finger Gloves, L 21 14 18 18 71 398.0213 342.86 440.82 440.82 1622.5213 Reseller | Half-Finger Gloves, M 168 41 11 23 243 2282.3749 553.8634 153.1213 320.1627 3309.5223 Reseller | Half-Finger Gloves, S 63 11 74 876.9673 153.1213 1030.0886 Reseller | Jerseys 1135 359 255 302 2051 32778.9676 10493.7515 7851.9241 9034.9179 60159.5611 Reseller | Long-Sleeve Logo Jersey, L 268 81 79 88 516 7169.8958 2264.8469 2208.0183 2461.4527 14104.2137 Reseller | Long-Sleeve Logo Jersey, M 119 23 142 3305.5838 653.5293 3959.1131 Reseller | Long-Sleeve Logo Jersey, XL 46 9 19 7 81 1565.9668 449.91 949.81 349.93 3315.6168 Reseller | Short-Sleeve Classic Jersey, L 200 61 36 91 388 5892.2472 1755.4902 1104.765 2792.6003 11545.1027 Reseller | Short-Sleeve Classic Jersey, S 103 11 114 3160.8553 337.5671 3498.4224 Reseller | Short-Sleeve Classic Jersey, XL 399 174 121 116 810 11684.4187 5032.408 3589.3308 3430.9349 23737.0924 "; MdxQuery q1 = new MdxQuery(instance, database, query); string actual = q1["default"]; Assert.AreEqual(expected, actual, "Returned table different than 'expected'"); }
static void Main(string[] args) { if (args.Length < 3) { Console.WriteLine(usage()); return; } string server = args[0]; string db = args[1]; List <Tuple <string, string> > input = new List <Tuple <string, string> >(); for (int i = 2; i < args.Length; i++) { string filename = args[i]; if (!File.Exists(filename) || string.Compare(Path.GetExtension(filename), ".mdx", StringComparison.OrdinalIgnoreCase) != 0) { Console.WriteLine(">> WARNING: File doesn't exist or not an MDX type file: {0}", filename); continue; } input.Add(new Tuple <string, string>(Path.GetFileNameWithoutExtension(filename), File.ReadAllText(filename))); } foreach (Tuple <string, string> tpl in input) { string mdx = tpl.Item2; string queryname = tpl.Item1; try { MdxQuery query = new MdxQuery(server, db, mdx, queryname); File.WriteAllText(queryname + ".txt", query[queryname]); } catch (Exception ex) { Console.Error.WriteLine("Error processing: '{0}.mdx'", queryname); Console.Error.WriteLine("\t{0}", ex.Message); Console.Error.WriteLine("\t{0}", ex.Source); Console.Error.WriteLine("\t{0}", ex.StackTrace); if (ex.InnerException != null) { Console.Error.WriteLine("\t{0}", ex.InnerException.Message); Console.Error.WriteLine("\t{0}", ex.InnerException.Source); Console.Error.WriteLine("\t{0}", ex.InnerException.StackTrace); } } } }