Как импортировать CSV-файл с кодом в табличную модель - PullRequest
0 голосов
/ 13 мая 2019

Я настраиваю веб-сервис, где пользователь загружает CSV-файл, который затем добавляется в табличную модель SASS. Это возможно даже через код? Если так, как это могло быть сделано? Я знаю, что вы можете сделать это вручную через VS, но мне нужно это автоматически.

Можно обойти эту проблему, когда CSV-файл загружается в базу данных SQL и оттуда загружается в табличном режиме. Но так как размеры файлов довольно велики (~ 500 МБ), это может когда-нибудь сделать это.

Мой текущий код, подключитесь к серверу SASS и скопируйте данные из базы данных sql в SASS

 public void Add()
        {
            string connStr = @"Data Source=localhost:64731";
            string dataSource = "AdventureWorksDW2017";
            string measureExpression = @"SUM('DimEployee'[Freq])";

            using (Server serv = new Server())
            {
                serv.Connect(connStr);

                string dbName = serv.Databases.GetNewName("TestBase3000");

                Database db = new Database()
                {
                    Name = dbName,
                    ID = dbName,
                    CompatibilityLevel = 1200,
                    StorageEngineUsed = StorageEngineUsed.TabularMetadata
                };

                db.Model = new Model()
                {
                    Name = "Tabular model test",
                    Description = "Test"
                };

                //define data source
                db.Model.DataSources.Add(new ProviderDataSource()
                {
                    Name = dataSource,
                    Description = "Aventure works",
                    //for SQL server
                    ConnectionString =
                        @"Provider=SQLNCLI11;Data Source=DESKTOP-K9RTS02\SQLEXPRESS;Initial Catalog=AdventureWorksDW2017;Integrated Security=SSPI",
                    ImpersonationMode = Microsoft.AnalysisServices.Tabular.ImpersonationMode.ImpersonateServiceAccount,
                });

                // add tables
                // dimension table
                db.Model.Tables.Add(new Table()
                {
                    Name = db.Model.Tables.GetNewName("DimProductSubcategory"),
                    Description = "Testing",
                    Partitions =
                    {
                        new Partition()
                        {
                            Name = "Partition 1",
                            Source = new QueryPartitionSource()
                            {
                                DataSource = db.Model.DataSources[dataSource],
                                Query = @"SELECT ProductSubcategoryKey, ProductSubcategoryAlternateKey, EnglishProductSubcategoryName FROM DimProductSubcategory",
                            }
                        }
                    },
                    Columns =
                    {
                        new Microsoft.AnalysisServices.Tabular.DataColumn()
                        {
                            Name = "Id",
                            DataType = DataType.Int64,
                            SourceColumn = "ProductSubcategoryKey",
                        },
                        new Microsoft.AnalysisServices.Tabular.DataColumn()
                        {
                            Name = "AltId",
                            DataType = DataType.Int64,
                            SourceColumn = "ProductSubcategoryAlternateKey",
                        },
                        new Microsoft.AnalysisServices.Tabular.DataColumn()
                        {
                            Name = "EnglishSubCategory",
                            DataType = DataType.String,
                            SourceColumn = "EnglishProductSubcategoryName",
                        }
                    }
                });
                serv.Databases.Add(db);

                //deploy database to SSAS Server
                db.Update(UpdateOptions.ExpandFull);

                //process new model so it's available to query
                db.Model.RequestRefresh(Microsoft.AnalysisServices.Tabular.RefreshType.Full);
                db.Update(UpdateOptions.ExpandFull);
         }
...