/// <summary>
        /// Dump internal model structure
        /// </summary>
        static void SimpleDump()
        {
            Dax.Model.Model m  = new Dax.Model.Model();
            Dax.Model.Table tA = new Dax.Model.Table(m)
            {
                TableName = new Dax.Model.DaxName("A")
            };
            Dax.Model.Table tB = new Dax.Model.Table(m)
            {
                TableName = new Dax.Model.DaxName("B")
            };
            Dax.Model.Column ca1 = new Dax.Model.Column(tA)
            {
                ColumnName = new Dax.Model.DaxName("A_1")
            };
            Dax.Model.Column ca2 = new Dax.Model.Column(tA)
            {
                ColumnName = new Dax.Model.DaxName("A_2")
            };
            tA.Columns.Add(ca1);
            tA.Columns.Add(ca2);
            m.Tables.Add(tA);

            // Test serialization on JSON file
            var json = JsonConvert.SerializeObject(m, Formatting.Indented, new JsonSerializerSettings {
                PreserveReferencesHandling = PreserveReferencesHandling.All
            });

            System.IO.File.WriteAllText(@"C:\temp\model.json", json);
        }
Exemple #2
0
        public static void UpdateStatisticsModel(Dax.Model.Model daxModel, OleDbConnection connection)
        {
            StatExtractor extractor = new StatExtractor(daxModel, connection);

            extractor.LoadTableStatistics();
            extractor.LoadColumnStatistics();
        }
 /// <summary>
 /// Dump internal structure for Relationships
 /// </summary>
 /// <param name="m"></param>
 private static void DumpRelationships(Dax.Model.Model m)
 {
     Console.WriteLine("------------------------");
     foreach (var t in m.Tables)
     {
         Console.WriteLine("---Table={0}", t.TableName);
         foreach (var r in t.GetRelationshipsTo())
         {
             Console.WriteLine(
                 "{0}[{1}] ==> {2}[{3}]",
                 r.FromColumn.Table.TableName,
                 r.FromColumn.ColumnName,
                 r.ToColumn.Table.TableName,
                 r.ToColumn.ColumnName
                 );
         }
         foreach (var r in t.GetRelationshipsFrom())
         {
             Console.WriteLine(
                 "{0}[{1}] ==> {2}[{3}]",
                 r.FromColumn.Table.TableName,
                 r.FromColumn.ColumnName,
                 r.ToColumn.Table.TableName,
                 r.ToColumn.ColumnName
                 );
         }
     }
 }
Exemple #4
0
 public static void PopulateFromDmv(Dax.Model.Model daxModel, OleDbConnection connection, string databaseName, string extractorApp, string extractorVersion)
 {
     Dax.Model.Extractor.DmvExtractor de = new Dax.Model.Extractor.DmvExtractor(daxModel, connection, databaseName, extractorApp, extractorVersion);
     de.PopulateTables();
     de.PopulateColumns();
     de.PopulateUserHierarchies();
     de.PopulateRelationships();
 }
 /*
  * /// <summary>
  * /// Export to VertiPaq Analyzer (VPAX) file
  * /// </summary>
  * /// <param name="databaseName"></param>
  * /// <param name="pathOutput"></param>
  * /// <param name="export"></param>
  * private static void ExportVPAX(string path, Dax.Model.Model model, Dax.ViewVpaExport.Model export)
  * {
  *  Uri uriModel = PackUriHelper.CreatePartUri(new Uri("DaxModel.json", UriKind.Relative));
  *  Uri uriModelVpa = PackUriHelper.CreatePartUri(new Uri("DaxModelVpa.json", UriKind.Relative));
  *  using (Package package = Package.Open(path, FileMode.Create))
  *  {
  *      using (TextWriter tw = new StreamWriter(package.CreatePart(uriModel, "application/json", CompressionOption.Maximum).GetStream(), Encoding.UTF8))
  *      {
  *          tw.Write(
  *              JsonConvert.SerializeObject(
  *                  model,
  *                  Formatting.Indented,
  *                  new JsonSerializerSettings
  *                  {
  *                      PreserveReferencesHandling = PreserveReferencesHandling.All,
  *                      ReferenceLoopHandling = ReferenceLoopHandling.Serialize
  *                  }
  *              )
  *          );
  *          tw.Close();
  *      }
  *      using (TextWriter tw = new StreamWriter(package.CreatePart(uriModelVpa, "application/json", CompressionOption.Maximum).GetStream(), Encoding.UTF8))
  *      {
  *          tw.Write(JsonConvert.SerializeObject(export, Formatting.Indented));
  *          tw.Close();
  *      }
  *      package.Close();
  *  }
  * }
  */
 /// <summary>
 /// Dump internal structure for permissions
 /// </summary>
 /// <param name="m"></param>
 private static void DumpPermissions(Dax.Model.Model m)
 {
     Console.WriteLine("------------------------");
     foreach (var t in m.Tables)
     {
         Console.WriteLine("---Table={0}", t.TableName);
         foreach (var tp in t.GetTablePermissions())
         {
             Console.WriteLine("Role {0} = {1} ", tp.Role.RoleName.Name, tp.FilterExpression.Expression);
         }
     }
 }
Exemple #6
0
        private TomExtractor(Tom.Model model, string extractorApp, string extractorVersion)
        {
            tomModel = model;
            AssemblyName tomExtractorAssemblyName = this.GetType().Assembly.GetName();
            Version      version = tomExtractorAssemblyName.Version;

            DaxModel = new Dax.Model.Model(tomExtractorAssemblyName.Name, tomExtractorAssemblyName.Version.ToString(), extractorApp, extractorVersion);
            if (tomModel != null)
            {
                PopulateModel();
            }
        }
        /// <summary>
        /// Export the Dax.Model in JSON format
        /// </summary>
        /// <param name="pathOutput"></param>
        /// <param name="m"></param>
        private static void ExportModelJSON(string pathOutput, Dax.Model.Model m)
        {
            var json = JsonConvert.SerializeObject(
                m,
                Formatting.Indented,
                new JsonSerializerSettings
            {
                PreserveReferencesHandling = PreserveReferencesHandling.All,
                ReferenceLoopHandling      = ReferenceLoopHandling.Serialize
            });

            System.IO.File.WriteAllText(pathOutput + "model.json", json);
            // Console.WriteLine(json);
        }
Exemple #8
0
 /// <summary>
 /// Export to VertiPaq Analyzer (VPAX) file
 /// </summary>
 /// <param name="databaseName"></param>
 /// <param name="pathOutput"></param>
 /// <param name="viewVpa"></param>
 /// <param name="database"></param>
 public static void ExportVpax(string path, Dax.Model.Model model, Dax.ViewVpaExport.Model viewVpa = null, Microsoft.AnalysisServices.Database database = null)
 {
     using (ExportVpax exportVpax = new ExportVpax(path))
     {
         if (model != null)
         {
             exportVpax.ExportModel(model);
         }
         if (viewVpa != null)
         {
             exportVpax.ExportViewVpa(viewVpa);
         }
         if (database != null)
         {
             exportVpax.ExportDatabase(database);
         }
         exportVpax.Close();
     }
 }
Exemple #9
0
        public DmvExtractor(Dax.Model.Model daxModel, OleDbConnection connection, string databaseName, string extractorApp, string extractorVersion)
        {
            Connection = connection;
            Connection.Open();

            // Validate databaseName
            if (!CheckDatabaseNameCompatibilityLevel(ref databaseName, out int compatibilityLevel))
            {
                throw new ExtractorException(connection, databaseName);
            }

            AssemblyName tomExtractorAssemblyName = this.GetType().Assembly.GetName();
            Version      version = tomExtractorAssemblyName.Version;

            // Create a DAX model if it is not provided in the constructor arguments
            // This should be outsider the constructor, but we want to make sure the database name is
            // validated before using other DMVs
            DaxModel                    = daxModel ?? new Dax.Model.Model(tomExtractorAssemblyName.Name, tomExtractorAssemblyName.Version.ToString(), extractorApp, extractorVersion);
            DaxModel.ModelName          = databaseName;
            DaxModel.CompatibilityLevel = compatibilityLevel;
        }
Exemple #10
0
        public static void ExportVPAX(string serverName, string databaseName, string path, bool includeTomModel, string applicationName, string applicationVersion)
        {
            //
            // Get Dax.Model object from the SSAS engine
            //
            Dax.Model.Model model = Dax.Model.Extractor.TomExtractor.GetDaxModel(serverName, databaseName, applicationName, applicationVersion);

            //
            // Get TOM model from the SSAS engine
            //
            Microsoft.AnalysisServices.Database database = includeTomModel ? Dax.Model.Extractor.TomExtractor.GetDatabase(serverName, databaseName): null;

            //
            // Create VertiPaq Analyzer views
            //
            Dax.ViewVpaExport.Model viewVpa = new Dax.ViewVpaExport.Model(model);

            //
            // Save VPAX file
            //
            // TODO: export of database should be optional
            Dax.Vpax.Tools.VpaxTools.ExportVpax(path, model, viewVpa, database);
        }
Exemple #11
0
 public StatExtractor(Dax.Model.Model daxModel, OleDbConnection connection)
 {
     this.DaxModel   = daxModel;
     this.Connection = connection;
 }
 /*
  * public List<VpaRole> Roles { get; }
  */
 public VpaModel(Dax.Model.Model model)
 {
     this.Model = model;
 }
Exemple #13
0
 public Model(Dax.Model.Model model)
 {
     this._Model = model;
 }