Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用动态度量和维度定义OLAP多维数据集_Sql Server_Ssas_Mdx_Olap - Fatal编程技术网

Sql server 使用动态度量和维度定义OLAP多维数据集

Sql server 使用动态度量和维度定义OLAP多维数据集,sql-server,ssas,mdx,olap,Sql Server,Ssas,Mdx,Olap,我正在使用SSAS 2012定义OLAP多维数据集。在大多数情况下,这一切进展顺利。然而,有一个领域让我感到困惑:元数据 什么 我们有一个多租户系统,允许租户使用任意元数据扩充其事实数据。租户可以预定义许多元数据字段(例如作者和颜色)。然后,每个事实都可以有一个与这些字段中的零个或多个相关联的值(例如,事实47有AuthorBob和ColorYellow)。这些数据以常规的关系方式存储在数据库中的两个独立的元数据字段和元数据值表中 我希望能够将这些字段既用作维度(例如基于颜色的聚合),也用作度量

我正在使用SSAS 2012定义OLAP多维数据集。在大多数情况下,这一切进展顺利。然而,有一个领域让我感到困惑:元数据

什么 我们有一个多租户系统,允许租户使用任意元数据扩充其事实数据。租户可以预定义许多元数据字段(例如
作者
颜色
)。然后,每个事实都可以有一个与这些字段中的零个或多个相关联的值(例如,事实47有Author
Bob
和Color
Yellow
)。这些数据以常规的关系方式存储在数据库中的两个独立的
元数据字段
元数据值
表中

我希望能够将这些字段既用作维度(例如基于
颜色的聚合),也用作度量(例如每个
作者的
#颜色

怎样 作为MDX新手,我可以想到两种方法:

  • 动态添加这些维度和度量,但由于我们的多租户方法,我可能不得不这样做
  • 具有某种形式的动态维度和动态度量
  • 有没有更好的办法?如果没有,第二个方案将如何实施


    另一个注意事项:租户不直接访问多维数据集,我们在两者之间有一个API。因此,这不需要在PowerPivot或任何东西中工作。

    由于您有自己的API,您也可以在
    WITH
    子句中添加用户在查询中动态添加的内容。另一种可能是给用户(和)对多维数据集的写访问权。最后,您可以让维度写入关系表,并让度量更改多维数据集定义。哪种可能性最好取决于多维数据集结构的复杂性、用户可编辑计算的要求等。您是否考虑过创建一种垃圾维度,它只是一种描述和值。所以description='Color',value='Yellow';Description='Author',Value='Bob'。这将满足您作为维度和事实使用的需求。它可能会导致与它相关的其他表之间存在M:M关系。@mmarie:定义此垃圾维度时:我如何基于不同的“颜色”值的不同计数来定义度量值?@RoyJacobs您使用同一个表来创建度量值组。创建一个仅为计数的度量,以计算行数。还要创建一个独特的计数度量。然后,当您按描述和值进行切片时,您可以看到所有颜色和黄色的行。如果你只对颜色的描述进行切片,你可以通过第二个度量看到不同值的计数。非常好,谢谢。我显然还没有赶上MDX的速度,但这是一个很好的起点:)