我已经混淆了场景,但总体思路仍然适用,所以如果模式看起来迟钝,它可能是在这个例子中......
假设我有一个 Student 维度,其中有两个属性 - Major 和 Minor(主题)。
我希望能够在 SSAS 中创建一个命名集,让我以某种方式被记录为主要和次要主题相同的学生......
维度看起来有点像这样:
Student
- Major
- Minor
Run Code Online (Sandbox Code Playgroud)
底层表看起来像这样:
StudentID | MajorKey | MinorKey
1 50 51
2 45 101
3 58 56
4 45 45
Run Code Online (Sandbox Code Playgroud)
所以,实际上,我想要一个像这样的 MDX 表达式:
FILTER (
[Student].allmembers,
[Student].[Major] = [Student].[Minor]
)
Run Code Online (Sandbox Code Playgroud)
...但我不太清楚语法。有任何想法吗?
更新:
如果我使用这种语法...
FILTER (
[Student].allmembers,
[Student].[Major].Properties("Key") = [Student].[Minor].Properties("Key")
)
Run Code Online (Sandbox Code Playgroud)
然后它出于某种原因减慢了整个多维数据集的速度。每个度量(自然的或计算的)需要几分钟,而不是 1-2 秒的预缓存。
我正在尝试将计算成员添加到 MDX 查询,这将为我的数据库中的人创建一组“年龄带”。我有一个包含每个人年龄的度量。
我已经开始使用这个 MDX
SELECT
NON EMPTY {[Measures].[Count of People]} ON COLUMNS,
NON EMPTY {
(
[People].[Gender].[Gender],
[People].[Some].[Other Attributes]
)
} ON ROWS
FROM [MyCube]
WHERE ( ... slicer here .... )
Run Code Online (Sandbox Code Playgroud)
我还有另一个措施([Measures].[Age] ),我想将其捆绑起来并与行一起返回,例如 0-25、26-50 岁等的任何人
这是我试过的
WITH SET [Age Band]
AS IIF([Measures].[Age]<26,"0-26",IIF([Measures].[Age]<51,"26-51","Over 50"))
SELECT
NON EMPTY {[Measures].[Count of People]} ON COLUMNS,
NON EMPTY {
(
[People].[Gender].[Gender],
[People].[Some].[Other Attributes],
[Age Band]
)
} ON ROWS
FROM [MyCube]
WHERE ( ... slicer here .... )
Run Code Online (Sandbox Code Playgroud)
但是我得到的错误是
该函数需要参数的元组集表达式。使用了字符串或数字表达式。
我究竟做错了什么?有没有更简单/更好的方法来做到这一点而无需链接IIF …
我有一个 50GB 的 SQL 2008 数据库(其中只有 36 个是数据)和一个每晚重建的 24GB 分析服务器多维数据集。
多维数据集重建每晚都在使用 SQL 服务器上越来越多的 TempDB。昨晚 TempDB 数据文件在用完 TempDB 驱动器上的所有空间之前增长到大约 100GB。
我可以添加更多空间,但如果我更了解这里发生的事情,我会感觉更好:
编辑:我能想到的这个特定数据库的唯一显着区别是他们为他们的最终数据集使用了一些非常大、非常复杂的嵌套视图。如果这些复杂的视图是用于构建多维数据集的视图,这能解释 tempDB 的高使用吗?
一个明显的例子是一个时间维度,其中天按日>月>年汇总,但也汇总了天>周>年。BIDS 对此有所抱怨,但我认为没有其他方法可以模拟这种情况。
更新:当我试图提供一个简单的例子来重现这个问题时,我在我的数据库中发现了引入这个问题的调平器。因此,我对这个问题进行了更新,以反映这一新发现。您将在下面找到用于设置重现此问题的数据库的脚本。
我在服务器版本 2008 和 2012 中遇到了 Analysis Services 的奇怪行为。
在我的 AS 数据库中,我定义了一个带有基本度量的多维数据集,如下所示:
AggregateFunction: Min;
Name: Existing Data
Run Code Online (Sandbox Code Playgroud)
如您所见,聚合函数是Min。
包含相应existing_data列的事实表仅包含0或1值。目标是在数据选择包含链接到零值的类别时立即返回零。该矩阵表示存储在另一个事实表中的真实事实中已经/尚未为其收集数据的区域,因此我们可以区分结果是否为零,因为在所选区域中没有任何案例,或者因为在所选区域中尚未收集到任何病例的地区。
当我现在运行以下查询时,我为每个选定的类别获得 1:
WITH
SET [adhoc] AS 'UNION(
DESCENDANTS([Gebiete].[Hierarchie].[Bezirk].[010],[Gebiete].[Hierarchie].[Landkreis]),
DESCENDANTS([Gebiete].[Hierarchie].[Bundesland].[10],[Gebiete].[Hierarchie].[Landkreis])
)'
SELECT [adhoc] ON 0
FROM [Testdb]
WHERE ([Measures].[Existing Data])
Run Code Online (Sandbox Code Playgroud)
结果
01001 01002 10041 10042
1 1 1 1
Run Code Online (Sandbox Code Playgroud)
当我现在将此查询更改为以下内容时,我希望一个包含 1 的单元格作为结果,因为该Min()函数聚合的所有值都是 1(与之前的结果相比):
WITH
SET [adhoc] AS 'UNION(
DESCENDANTS([Gebiete].[Hierarchie].[Bezirk].[010],[Gebiete].[Hierarchie].[Landkreis]),
DESCENDANTS([Gebiete].[Hierarchie].[Bundesland].[10],[Gebiete].[Hierarchie].[Landkreis])
)'
MEMBER [Gebiete].[Hierarchie].[adhoc] AS 'Aggregate([adhoc])'
SELECT {[Gebiete].[Hierarchie].[adhoc]} ON 0
FROM [Testdb] …Run Code Online (Sandbox Code Playgroud) 我在服务器(X)上有一个 SQL Server 代理作业,它有一个步骤应该处理远程服务器(Y)上的数据立方体。
每当我运行该作业时,它都会失败并说 server(X) 无权处理 Cube 或它不存在。我相信我的作业设置正确,但是如何将服务器(Y)上的访问权限授予服务器(X)以处理多维数据集?下面是我正在使用的脚本。使用“SQL Server 分析服务命令”
<Batch xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:ddl200="http://schemas.microsoft.com/analysisservices/2010/engine/200" xmlns:ddl200_200="http://schemas.microsoft.com/analysisservices/2010/engine/200/200" xmlns:ddl300="http://schemas.microsoft.com/analysisservices/2011/engine/300" xmlns:ddl300_300="http://schemas.microsoft.com/analysisservices/2011/engine/300/300" xmlns:ddl400="http://schemas.microsoft.com/analysisservices/2012/engine/400" xmlns:ddl400_400="http://schemas.microsoft.com/analysisservices/2012/engine/400/400">
<Object>
<DatabaseID>Analysis Services Project1</DatabaseID>
<CubeID>S2E</CubeID>
</Object>
<Type>ProcessFull</Type>
<WriteBackTableCreation>UseExisting</WriteBackTableCreation>
</Process>
</Batch>
Run Code Online (Sandbox Code Playgroud)
当我通过对象资源管理器将服务器(x)添加到服务器(Y)上的管理员角色时,我无法通过检查名称按钮找到服务器。请帮忙。
我正在使用 SQL Server 2014
在数据库引擎上的 SQL Server 中,您可以运行这样的 SQL 查询来获取服务器的版本信息,例如版本和版本以及更新级别等。
SELECT @@VERSION
Run Code Online (Sandbox Code Playgroud)
查询 SSAS(表格或多维)实例的 MDX 等效项是什么?是否有 SSAS DMV 可以让我得到这个答案?
我浏览了SSAS DMV的联机丛书页面,但我没有注意到任何可以帮助我的 DMV。DISCOVER_INSTANCES 似乎没有信息。
假设 SQL Server 数据库引擎未与 SSAS 实例安装在同一台服务器上,因此我无法通过查询数据库引擎来检查这一点。
就我而言,这是针对 SQL 2012 表格实例,但也想知道如何查询多维实例。
我在SSAS中创建了一个多维数据集,如何从数据源提取实时数据到我的多维数据集?
我的意思是,如果发生任何数据修改(插入、更新、删除),SSAS 应该更新多维数据集。
我使用过 T-SQL(CTE、窗口函数、递归 CTE、大数据、表值函数、APPLY、PIVOT、存储过程等),但从未查询过 Microsoft SSAS 多维数据集。
对于以下 T-SQL 概念,MDX 中是否有类似的概念?
使用 MDX 的 T-SQL 用户是否有任何陷阱?
我希望 T-SQL 和 MDX 之间有一些共同的类比,这将有助于擅长 T-SQL 的人过渡到 MDX。
如果有一个关于从 T-SQL 进入 MDX 时所犯的常见错误的指南,那就太好了。
我有四个大维度,其中一个维度不会改变,特定维度也不需要处理。
那么,单独处理三个维度会更新多维数据集,还是我每次都需要处理整个多维数据集(正在处理所有维度)?
构建并部署了一个具有日期维度的简单多维数据集。该维度具有诸如月份中的某天之类的内容。我该如何排序?它总是在报告中显示为 1, 10, 11, 12, ... 19, 2, 20, 21
设计。
DimDate(3 列)
FactAppointment(一栏)
我将 dims 排序列设置为键或日期,但两者都不起作用。
当连接 excel 或任何其他双工具并且日期 dim 是一列时,一个简单的计数是日期未排序的值。
图片:列标题未正确排序。1, 10,11,12,...,19,2,20
多维数据集中的维度为我们提供了重复项,处理多维数据集时没有错误,但是在浏览多维数据集时我们可以看到重复项。
我们的维度中有一个层次结构,层次结构像Country -- State -- Area.
在 DB 中,维度数据如下所示。
+---------+------------+-----------+
| Country | State | Subarea |
+---------+------------+-----------+
| India | Karnataka | Bangalore |
| India | Telangana | Hyderabad |
+---------+------------+-----------+
Run Code Online (Sandbox Code Playgroud)
现在,当使用属性 Country 浏览多维数据集时,我们会看到 country 下的 2 个成员为“India”,当针对该属性选择度量时,销售额在这两个值之间破碎。
我们可以做任何工作来避免这个问题吗?
如何查找 Analysis Services 数据库的大小、名称和其他详细信息?
我有一台 Analysis Services 服务器,我可以在其中看到一个数据库。
我想知道这个数据库的大小和其他基本细节。