我是的新手SSAS
,所以请多多包涵。
我有两个表:FactTest
和DimLocation
。我包括表模式,但在本质上,并FactTest.LocationName
为外键DimLocation.LocationName
和DimLocation.LocationName
是primary key
:
CREATE TABLE [dbo].[FactTest](
[test_date] [date] NULL,
[DOWNLOAD] [float] NULL,
[LocationName] [varchar](50) NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FactTest] WITH CHECK ADD CONSTRAINT [FK_FactTest_DimLocation] FOREIGN KEY([LocationName])
REFERENCES [dbo].[DimLocation] ([LocationName])
GO
ALTER TABLE [dbo].[FactTest] CHECK CONSTRAINT [FK_FactTest_DimLocation]
GO
CREATE TABLE [dbo].[DimLocation](
[LocationId] [int] IDENTITY(1,1) NOT NULL,
[LocationName] [varchar](50) NOT NULL,
CONSTRAINT [PK_DimLocation] PRIMARY KEY CLUSTERED
(
[LocationName] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
DimLocation
看起来像这样:
LocationId LocationName
1 Houston
2 San Antonio
3 Dallas
4 Austin
和FactTest
看起来像这样:
test_date Download LocationName
1/4/2020 8.56 Houston
1/4/2020 9.43 Dallas
1/5/2020 3.20 Houston
创建cube
in时VS 2013
,我注意到该列LocationName
未作为in 之一包含在内Measures
。我还具有其他Dimension表,并且主键列都不是“度量”的一部分。
Measures
创建键时不应该使用主键cube
吗?如果不是,那我应该如何将事实表链接到暗表?
这是由于DimLocation中的PK定义不正确引起的。
所有维PK均应为整数,因此LocationId应为您的PK,并且应将其包括在事实表中而不是LocationName中。位置名称应定义为维度属性。
在多维数据集中,唯一的度量是“ [DOWNLOAD] [float]”。
度量的定义:它是任何数字量/值,代表与组织目标保持一致的度量。度量存储在事实表中。
那么
DimLocation.LocationName
,FactSpeed.LocationName
如果我删除PK,我将如何链接DimLocation.LocationName
?事实表中不应有任何varchar列。您的ETL / ELT流程应为每一行计算LocationId。
换句话说,事实表将不可读,除非使用暗表进行联接?
是的,这有点是尺寸建模以最大程度地减少存储量。您可以研究诸如columnore或表格立方体的较新技术,它们以不同的方式解决了此问题。
我进行了更改,但仍然看不到该措施。我再次发布了问题。