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/5/date/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 具有日期范围记录的SSAS多维数据集_Sql Server_Date_Ssas - Fatal编程技术网

Sql server 具有日期范围记录的SSAS多维数据集

Sql server 具有日期范围记录的SSAS多维数据集,sql-server,date,ssas,Sql Server,Date,Ssas,我必须根据日期范围记录构建一个多维数据集,但不确定最好的方法 想象一下,比如说一个立方体的汽车和保修期。每辆车都有开始日期和保修期结束日期。然后可能会延长保修期。。想象一下 CAR REG TYPE WARRANTY START WARRANTY END CAR A PURCHASE 01/01/2016 31/01/2016 CAR A EXTENDED 01/01/2017 30/06/2017 CAR A

我必须根据日期范围记录构建一个多维数据集,但不确定最好的方法

想象一下,比如说一个立方体的汽车和保修期。每辆车都有开始日期和保修期结束日期。然后可能会延长保修期。。想象一下

CAR REG    TYPE      WARRANTY START    WARRANTY END
CAR A      PURCHASE    01/01/2016        31/01/2016
CAR A      EXTENDED    01/01/2017        30/06/2017
CAR A      EXTENDED    01/08/2017        30/01/2018  -- note, gap here
CAR B      PURCHASE    01/01/2016        31/01/2016
CAR B      EXTENDED    01/01/2017        30/06/2017
CAR B      EXTENDED    01/08/2017        30/01/2018  -- note, gap here
所以有多个项目,有多个日期范围。有一个主表(汽车),其中有汽车详细信息(颜色、型号等)

现在我想构建一个多维数据集,它可以在月份级别报告,保修/保修类型下的汽车,等等

所以计划1是构建一个视图,通过连接到一个日期表来分解上述内容,按月报告,并将其馈送到一个多维数据集中。但是,汽车的数量乘以所覆盖的月份会导致数亿行,这意味着有时服务器会耗尽TempDB空间,而当它运行时,多维数据集的构建需要数小时

是否有更好的方法—例如查看汽车详细信息,然后在保修表上查看另一个视图(如何让SSA处理日期范围内的月份)—SSA中的联接是否比SQL中的视图中的联接更有效


谢谢大家。

您可以将开始列和结束列连接到时间维度。在报告上,您可以使用“:”运算符生成日期tange报告。
您可以在此处找到更多详细信息:

您可以将开始列和结束列连接到时间维度。在报告上,您可以使用“:”运算符生成日期tange报告。
您将在此处找到更多详细信息:

一种可以与Excel或Power BI等拖放式客户端工具配合使用的方法是多对多日期维度。由于A车和B车匹配,让我们假设有一辆C车的保修期为2015-07-30至2015-12-31

创建一个DIMQuartureDaterRangeKey,它表示保修有效期间的唯一日期组合。代理项密钥是担保的aterangekey。当然,构建此表的ETL有点昂贵,但考虑到数据的大小,我认为这是一项值得的投资,它将产生比m2m桥接表每辆车每活动一天一行更好的查询性能

应为每辆车分配一把保修钥匙。向事实表中添加“担保数据范围”列

CAR REG   WarrantyDateRangeKey
A         1
B         1
C         2
m2mWarrantyDateRange

WarrantyDateRangeKey   DateKey
1                      20160101
1                      20160102
1                      ...
1                      20170629
1                      20170630
1                      20170801
1                      20170802
1                      ...
1                      20180129
1                      20180130
2                      20150701
2                      20150702
2                      ...
2                      20151230
2                      20151231
这些表格的联系如下

FactTable->dimQuartureDaterRange DimDate

然后,在多维数据集中,DimWarrantyDaterRange应该是一个维度,m2mWarrantyDateRange应该是一个带有计数度量值的度量值组。DimDate应该是一个维度。然后,您应该使用m2mWarrantyDateRange作为中间度量值组,将DimDate与FactTable关联为多对多(m2m)维度


现在,在Excel或Power BI中,您应该能够过滤到特定日期,它将过滤到当天具有有效保修的车辆。

一种使用拖放客户端工具(如Excel或Power BI)的方法是多对多日期维度。由于A车和B车匹配,让我们假设有一辆C车的保修期为2015-07-30至2015-12-31

创建一个DIMQuartureDaterRangeKey,它表示保修有效期间的唯一日期组合。代理项密钥是担保的aterangekey。当然,构建此表的ETL有点昂贵,但考虑到数据的大小,我认为这是一项值得的投资,它将产生比m2m桥接表每辆车每活动一天一行更好的查询性能

应为每辆车分配一把保修钥匙。向事实表中添加“担保数据范围”列

CAR REG   WarrantyDateRangeKey
A         1
B         1
C         2
m2mWarrantyDateRange

WarrantyDateRangeKey   DateKey
1                      20160101
1                      20160102
1                      ...
1                      20170629
1                      20170630
1                      20170801
1                      20170802
1                      ...
1                      20180129
1                      20180130
2                      20150701
2                      20150702
2                      ...
2                      20151230
2                      20151231
这些表格的联系如下

FactTable->dimQuartureDaterRange DimDate

然后,在多维数据集中,DimWarrantyDaterRange应该是一个维度,m2mWarrantyDateRange应该是一个带有计数度量值的度量值组。DimDate应该是一个维度。然后,您应该使用m2mWarrantyDateRange作为中间度量值组,将DimDate与FactTable关联为多对多(m2m)维度


现在,在Excel或Power BI中,您应该能够过滤到特定日期,它将过滤到当天有有效保修的车辆。

您打算使用自定义MDX查询或Excel等拖放工具来使用此多维数据集吗?通过Excel、Power BI等,而不是MDX,数据有多大?大约有多少辆车?这可能会影响我的答案。就数据而言,它的规模很大——汽车大约75万辆,大约6年,12个月——因此75万行x 6y x 12m=5.4亿种可能的组合。这是由750k的汽车数据驱动的,有一个约190万行的保修表来计算保修期您打算使用自定义MDX查询或Excel之类的拖放工具来使用此多维数据集吗?通过Excel、Power BI等,而不是MDX数据有多大?大约有多少辆车?这可能会影响我的答案。就数据而言,它的规模很大——汽车大约75万辆,大约6年,12个月——因此75万行x 6y x 12m=5.4亿种可能的组合。这是从750K的汽车数据,保修表约190万行,以制定保修期,如果你必须考虑默认值(DimWarrantyDateRange是0,‘1753-01-01’,‘99 99—12’31’),这个设置仍然有意义吗?在这种情况下,限制因素是DimDate的最小值和最大值,但它仍然是大量记录。对于这种情况,你还会使用这种解决方案吗?@spikej我假设你的日期维度中没有8000年。你们公司成立多久了?我会在你的约会维度的开始和结束处设置m2m的上限。幸运的是,“所有的时间”只是所有汽车可以使用的一组行。如果你必须考虑默认值(DimWarrantyDateRange为0,1753-01-01’,‘99 99—12’31’),这个设置是否仍然有意义?在这种情况下,限制因素是th