命名计算是表示为计算列的 SQL 表达式。 此表达式在表中显示为列,并表现为列的行为。 命名计算允许扩展数据源视图中现有表或视图的关系架构,而无需修改基础数据源中的表或视图。 请考虑以下示例:
创建一个命名计算,该计算派生自事实数据表中的多个列(例如,通过将税率乘以销售价格来创建税额)。
为维度成员创建易于使用的名称。
作为查询性能增强功能,请在 DSV 中创建命名计算,而不是在多维数据集中创建计算成员。 命名计算是在处理期间计算的,而计算成员是在查询时计算的。
创建命名计算
注释
不能将命名计算添加到命名查询,也不能将命名查询基于包含命名计算的表。
创建命名计算时,可以指定名称、SQL 表达式以及(可选)计算的说明。 SQL 表达式可以引用数据源视图中的其他表。 定义命名计算后,命名计算中的表达式将发送到数据源的提供程序,并作为以下 SQL 语句进行验证,其中包含 <Expression>
定义命名计算的表达式。
SELECT
<Table Name in Data Source>.*,
<Expression> AS <Column Name>
FROM
<Table Name in Data Source> AS <Table Name in Data Source View>
列的数据类型由表达式返回的标量值的数据类型确定。 如果提供程序在表达式中找不到任何错误,则会将列添加到表中。
表达式中引用的列不应限定,但可以仅由表名限定。 例如,若要引用表中的 SaleAmount 列,SaleAmount
或Sales.SaleAmount
是有效的,但dbo.Sales.SaleAmount
会生成错误。
表达式不会自动括在括号之间。 因此,如果表达式(如 SELECT 语句)需要括号,则必须在 “表达式 ”框中键入括号。 例如,仅当键入括号时,以下表达式才有效。
(SELECT Description FROM Categories WHERE Categories.CategoryID = CategoryID)
添加或编辑命名计算
在 SQL Server Data Tools (SSDT)中,打开项目或连接到包含要在其中定义命名计算的数据源视图的数据库。
在解决方案资源管理器中,展开 “数据源视图 ”文件夹,然后双击数据源视图。
在表或关系图窗格中,右键单击要定义命名计算的表,然后单击新建命名计算。 请务必右键单击表名称,而不是单击属性。 菜单应如下所示:
注释
若要查找表或视图,可以通过单击“数据源视图”菜单或右键单击表或图表窗格的打开区域来使用“查找表”选项。
在“ 创建命名计算 ”对话框中,执行以下作:
在 “列名称 ”文本框中,键入新列的名称。
在 “说明 ”文本框中,键入新列的说明。
在 “表达式 ”文本框中,键入生成适合数据提供程序的 SQL 方言中新列内容的表达式。
单击 “确定” 。
命名的计算列显示为数据源视图表中的最后一列。 计算器符号表示该列包含已命名的计算。
删除命名计算
尝试删除命名计算时,系统会提示你在项目或数据库中定义的对象列表,这些对象将由删除失效。 在删除计算之前,请仔细查看列表。