sql-server - 主键不是多维数据集中的度量?
问题描述
我是新手SSAS
,所以请多多包涵。
我有两张桌子:FactTest
和DimLocation
。我包括表模式,但本质上,andFactTest.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
未作为Measures
. 我还有其他维度表,并且没有一个主键列是度量的一部分。
Measures
创建时不应该使用主键cube
吗?如果不是,那么我应该如何将事实表链接到暗表?
解决方案
这是由于 DimLocation 中的 PK 定义不正确造成的。
所有维度 PK 都应该是整数,因此 LocationId 应该是您的 PK,您应该将其包含在事实表中,而不是 LocationName。位置名称应定义为维度属性。
在您的多维数据集中,唯一的度量是“[DOWNLOAD] [float]”。
度量的定义:它是代表与组织目标一致的度量的任何数字量/值。度量值存储在事实表中。
推荐阅读
- python - 在运行时创建类是什么意思?还有运行时在python中意味着什么?
- python - Pandas pivot_table 和额外的索引级别
- javascript - 布尔和条件语句如何在事件侦听器中执行?
- python - 无法理解 Python 负字符串切片
- tsql - oracle rownum 转移到 t-sql row_number() 错误
- python - 在 python 上获取 ConnectionError: ('Connection aborted.', BadStatusLine('No status line received - 服务器已关闭连接',))
- php - 如何使用 adldap php 从活动目录中获取所有用户显示名记录?
- sql - SQL 错误:ORA-02000:缺少 ALWAYS 关键字
- haskell - Persistent 中不区分大小写的唯一性约束?
- java - 打印多维数组元素时出错 (Java)