static void ExecuteDaxQuery()
    {
        // DAX query to be submitted totabuar database engine
        String query = @"
            EVALUATE
                SUMMARIZECOLUMNS(
                    //GROUP BY 
                    Customers[State],
                
                    //FILTER BY
                    TREATAS( {""Western Region""} , 'Customers'[Sales Region] ) ,
                     
                    // MEASURES
                    ""Sales Revenue"" , SUM(Sales[SalesAmount]) ,
                    ""Units Sold"" , SUM(Sales[Quantity])
                )
            ";

        AdomdConnection adomdConnection = new AdomdConnection(connectString);

        adomdConnection.Open();

        AdomdCommand    adomdCommand = new AdomdCommand(query, adomdConnection);
        AdomdDataReader reader       = adomdCommand.ExecuteReader();

        ConvertReaderToCsv(reader);

        reader.Dispose();
        adomdConnection.Close();
    }
    static void AddSalesRegionMeasures()
    {
        // DAX query to be submitted totabuar database engine
        String query = "EVALUATE( VALUES(Customers[Sales Region]) )";

        AdomdConnection adomdConnection = new AdomdConnection(connectString);

        adomdConnection.Open();

        AdomdCommand    adomdCommand = new AdomdCommand(query, adomdConnection);
        AdomdDataReader reader       = adomdCommand.ExecuteReader();

        // open connection use TOM to create new measures
        TOM.Server server = new TOM.Server();
        server.Connect(connectString);
        TOM.Model model      = server.Databases[0].Model;
        TOM.Table salesTable = model.Tables["Sales"];

        String measureDescription = "Auto Measures";

        // delete any previously created "Auto" measures
        foreach (TOM.Measure m in salesTable.Measures)
        {
            if (m.Description == measureDescription)
            {
                salesTable.Measures.Remove(m);
                model.SaveChanges();
            }
        }

        // Create the new measures
        while (reader.Read())
        {
            String SalesRegion = reader.GetValue(0).ToString();
            String measureName = $"{SalesRegion} Sales";

            TOM.Measure measure = new TOM.Measure()
            {
                Name          = measureName,
                Description   = measureDescription,
                DisplayFolder = "Auto Measures",
                FormatString  = "$#,##0",
                Expression    = $@"CALCULATE( SUM(Sales[SalesAmount]), Customers[Sales Region] = ""{SalesRegion}"" )"
            };

            salesTable.Measures.Add(measure);
        }

        model.SaveChanges();
        reader.Dispose();
        adomdConnection.Close();
    }
예제 #3
0
        public static void ConvertDaxQueryToCsv(string DaxQuery, string FileName)
        {
            string          connectString   = GetConnectStringForUser();
            AdomdConnection adomdConnection = new AdomdConnection(connectString);

            adomdConnection.Open();

            AdomdCommand    adomdCommand = new AdomdCommand(DaxQuery, adomdConnection);
            AdomdDataReader reader       = adomdCommand.ExecuteReader();

            ConvertReaderToCsv(FileName, reader);

            reader.Dispose();
            adomdConnection.Close();
        }