- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
希望有人能回答这个问题:所以我想启动一个将 .NET 解决方案连接到 SSAS(SQL Server Analysis Services)的项目。但是在 Internet 上只有很少的主题或指南。据我所知,我可以使用名为 ADOMD.NET 的 C# 库。但我不知道这对我来说是否足够。假设我将在数据库中拥有数以百万计的记录,要获取其中的一些分析记录,我需要拥有能够创建表格模型的 SSAS(据我所知,“数据库”记录存储在内存中)。所以问题是:我是否能够使用 ADOMD.NET 使用特定语言(如果存在)创建表格模型,并且是否有一些有工作经验的人提出了一些建议?因为我需要将内存中存储的数据返回给用户并显示它。
最佳答案
由于您使用的是 SSAS Tabular,我建议使用 Tabular Object Model (TOM) 库,它是 AMO 表格模型的扩展。请注意,这是针对兼容级别 1200 或更高级别。下面的示例创建了一个基本模型,其中包含单个维度和事实表、一个度量以及它们之间的关系以从维度中过滤事实表。在此之后,新模型被部署到 SSAS 服务器,然后进行处理以供使用。除了 Microsoft.AnalysisServices.Tabular,您还需要添加对 Microsoft.AnalysisServices.Core 和 Microsoft.AnalysisServices.AdomdClient 的引用。
using Microsoft.AnalysisServices;
using Microsoft.AnalysisServices.Tabular;
string connStr = @"Data Source=ServerName";
string dataSource = "Data Source Name";
string measureExpression = @"SUM('FactTable'[Amount])";
using (Server serv = new Server())
{
serv.Connect(connStr);
string dbName = serv.Databases.GetNewName("New Tabular Model Name");
Database db = new Database()
{
Name = dbName,
ID = dbName,
CompatibilityLevel = 1200,
StorageEngineUsed = StorageEngineUsed.TabularMetadata
};
db.Model = new Model()
{
Name = "Model",
Description = "Model Description"
};
//define data source
db.Model.DataSources.Add(new ProviderDataSource()
{
Name = dataSource,
Description = "Data Source Description",
//for SQL server
ConnectionString = @"Provider=SQLNCLI11;Data Source=ServerName;Initial Catalog=DatabaseName;Integrated Security=SSPI",
ImpersonationMode = Microsoft.AnalysisServices.Tabular.ImpersonationMode.ImpersonateAccount,
Account = @"AccountName",
Password = "Password",
});
//add tables
//dimension table
db.Model.Tables.Add(new Table()
{
Name = db.Model.Tables.GetNewName("DimTable"),
Description = "Dimension Table Description ",
Partitions = {
new Partition() {
Name = "Partition 1",
Source = new QueryPartitionSource() {
DataSource = db.Model.DataSources[dataSource],
Query = @"SELECT ID, NAME FROM DimensionTable",
}
}
},
Columns =
{
new DataColumn() {
Name = "ID",
DataType = DataType.Int64,
SourceColumn = "ID",
},
new DataColumn() {
Name = "Name",
DataType = DataType.String,
SourceColumn = "NAME",
},
}
});
//fact table
db.Model.Tables.Add(new Table()
{
Name = db.Model.Tables.GetNewName("FactTable"),
Description = "FactTable Description",
Partitions = {
new Partition() {
Name = "Partition 1",
Source = new QueryPartitionSource() {
DataSource = db.Model.DataSources[dataSource],
Query = @"SELECT ID, AMOUNT FROM FactTable",
}
}
},
Columns =
{
new DataColumn() {
Name = "ID",
DataType = DataType.Int64,
SourceColumn = "ID",
},
new DataColumn() {
Name = "Amount",
DataType = DataType.Int64,
SourceColumn = "AMOUNT",
},
}
});
//create column objects for relationship
Column fromColumn = db.Model.Tables["FactTable"].Columns["ID"];
Column toColumn = db.Model.Tables["DimTable"].Columns["ID"];
//create relationship to filter fact table
SingleColumnRelationship relationship = new SingleColumnRelationship()
{
Name = "FactTable_ID_DimTable_ID",
ToColumn = toColumn,
FromColumn = fromColumn,
ToCardinality = RelationshipEndCardinality.One,
FromCardinality = RelationshipEndCardinality.Many
};
db.Model.Relationships.Add(relationship);
//create measure
Measure measure = new Measure()
{ Name = "Total" };
db.Model.Tables["FactTable"].Measures.Add(measure);
measure.Expression = measureExpression;
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);
}
关于c# - .NET 连接到 SSAS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55359895/
我的多维数据集中有一个大维度,有 500 万行。当我在 excel 中拖动该维度列以查看指标值时,它会超时。有什么方法可以动态限制数据或在 excel 中提取大尺寸时仅选择前 10K 行?或任何其他最
我想知道向我的多维数据集添加大量计算成员是否对性能有任何影响。一方面,将事物定义一次、集中定位、测试并且可用于任何不支持 MDX 的客户端是很好的。另一方面,我添加的其中一些成员可能不会经常使用,因此
有没有一种方法可以使用 DMV 或 XMLA 动态发现我的多维数据集中是否已存在具有特定名称的分区? 谢谢 最佳答案 如果您想要一个可以通过 MDX 查询的 DMV,您可以使用 $System.DIS
我想使用 SSAS 分析每小时的数据。内置日期维度不会创建任何小时属性。 目前,我正在创建一个包含 HourOfDay 和 HourOfDayName 字段的新表,并将使用该表创建日期维度。 谁能告诉
如果我在开发服务器 SSMS 的分析服务中的整个数据库上创建更改脚本并在生产服务器 SSMS 上执行该脚本而不是通过 BIDS 部署,有什么问题吗? 最佳答案 不,您实际上永远不应该使用 BIDS 来
我们有一个立方体,我们在其中实现了基于 ROLE 的维度数据级安全性。在我们限制用户只能查看他的记录的情况下,此安全性工作正常。现在 Customer 维度有另一个 Employee 属性。基于该字段
我有 2 个表格项目,但模型的语言不同(我的第一个是英语(美国),我的第二个项目是法语)我很困惑,我不知道为什么我有两个不同语言的项目,我的系统、我的 Visual Studio 甚至我的 SQL S
我对 SQL Server Analysis Services 很陌生,现在尝试构建我的第一个多维数据集(除了 Adventure Works 教程之外的第一个多维数据集) 问题是如何在存在多个选项(
我有一个事实表,它引用我的日期维度作为表单日期和财务日期。因此,日期维度正在扮演两个不同的角色。这工作正常,除了我不能角色扮演 Year 或 Month 列的名称。我宁愿它分别是 Form Year
我使用 SSDT Tools 2017 创建了多维数据集,其中包含以下列 Sales Amount Stock Amount 2000 5000 我想将
这个问题在这里已经有了答案: SQL Server 2012: Login failed for user 'NT Service\MSSQLServerOLAPService'.; 28000 (
我有一位用户要求我列出 SSAS 多维数据集的维度和维度属性。 我怀疑我可以通过 AMO 生成此信息,但我想知道是否有 MDX 查询或 SSMS 选项来显示相同的信息。 有什么想法吗? 最佳答案
我有一个度量的累积总和,结构如下: Aggregate ( { NULL : [Date].[Year - Month - Date].CurrentMember } ,[Measur
我正在使用 SQL 分析服务在我的应用程序中提供临时报告。我创建了一个时间维度以在我的多维数据集中使用。它有一些预定义的属性。例如一年中的月份。它具有第 1 个月、第 2 个月等值,而我希望第 1 个
在 SSAS 中创建层次结构有什么好处?在浏览器上逐一拖放年月和单层级有什么区别? 最佳答案 主要是: 聚合:如果您想要每年的总和,并且您有每月聚合,SSAS 将对所有月度聚合求和而不是将特定年份的所
我们有一个需要尽可能实时的 Analysis Services 多维数据集。这是一个相对较小的立方体,目前需要几秒钟来处理。 是否有任何指导方针?我很好奇其他人在做什么。 此外,过于频繁地处理多维数据
我安装了 Microsoft SQL Analysis Service,因为我需要它使用数据挖掘插件从 Excel 运行预测分析。 当我打开 MS Management Studio 并连接到 SSA
早上好 目标:我正在尝试将新列添加到 SSAS 表格模型表中。长期目标是在需要时以编程方式进行大批量更改。 我找到的资源: https://learn.microsoft.com/en-us/sql/
我有一个要求,将结果叶节点的父级列到它们相应的列中,并列成一行。 下面的查询返回预期的结果 SELECT NON EMPTY { [Measures].[Value] } ON COLUMNS,
在 SSAS 多维模型中,(全部)级别是可选的层次结构级别,它是系统生成的级别。它只包含一个成员,其值是直接下级中所有成员值的聚合。可以通过为属性的“IsAggregatable”属性设置 TRUE/
我是一名优秀的程序员,十分优秀!