- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题没有令人满意的答案。请感到鼓舞回答或评论。
让我们考虑以下数据模型。我们的模型具有三个维度。如果需要命名,请选择(A)产品,(B)品牌,(C)地区。 B是A的容器,因此它是一个层次结构。一个品牌中的许多产品。表示为A,B,C,AB,ABC的表是仅包含唯一值的桥接表。
现在的问题:
在以下模型中,AB桥接表是否必要?我们不能
将A和B表直接连接到ABC。
为所有尺寸创建笛卡尔积是一个好主意
在模型中作为中央桥台?
我们是否应该将预算表与AB尺寸一起插入以桥接AB或
桥接ABC?取决于第一个问题的答案。
我们应该如何将广告表插入模型?要桥接ABC还是特别创建的桥接表BC,并且那个连接到ABC?
现在的架构:
+-------+
| |
| A +-----+
| | |
+-------+ |
|
v
+-------+ +--+----+ +--------+ +------------+
| | | | | | | Sales |
| B +--> AB +----->| ABC +----->| ABC |
| | | | | | | |
+-------+ +--+----+ +---+----+ +------------+
^
|
+-------+ | +------------+
| | | | Budget |
| C +---------------------+ | AB |
| | | |
+-------+ +------------+
+------------+
| Advertizing|
| BC |
| |
+------------+
#A =
DISTINCT (
UNION (
TOPN ( 0, ROW ( "A", "Apple" ) ),
DISTINCT ( Sales[A] ),
DISTINCT ( Budget[A] ),
DISTINCT ( Advertizing[A] )
)
)
AB =
CROSSJOIN (
DISTINCT ( '#A'[A] ),
DISTINCT ( '#B'[B] ),
"A@B", COMBINEVALUES("@",'#A'[A], '#B'[B])
)
最佳答案
根据OP的评论于2019年11月6日更新
在以下模型中,AB桥接表是否必要?我们不能将A和B表直接连接到ABC。
不需要。没有像AB
和ABC
这样的桥接表。对于具有多个事实表的此类模型,建议使用多个star schema构建模型。只需在维度表和事实表之间建立直接的一对多关系,例如A -> Sales
,B -> Sales
,A -> Budget
和B -> Budget
。请注意,当您查看每个单个事实表时,事实表和所有相关的维表都形成一个星型模式。
为模型中的所有尺寸创建笛卡尔乘积作为中央桥表是一个好主意吗?
否。将笛卡尔积将所有尺寸表合并为一个大尺寸表(我们称为“关节尺寸表”)只是多余的。
当尺寸之间存在多对多关系时,通常需要在两个尺寸之间建立过渡表。例如,当Customer
可能属于多个Category
时,将需要一个桥接表Customer Category
。 OP提出的方案不是桥接表的用例。
关节尺寸表的缺点是
它需要额外的数据存储。如果A
,B
,C
分别具有100、100、1000行,则关节尺寸表将具有1000万行。假设如果您之后又添加了一个具有100行的新维度,那么维度行的数量将为10亿!这不经济。
它需要额外的计算。当我们要用Sales
过滤A
时,引擎首先需要扫描联合尺寸表以提取与A
过滤后的值匹配的行,该值可能是大量的行,然后引擎扫描< cc>事实表,其中包含提取的联合尺寸表行中包含的关系关键字。仅当维度的大小很小并且事实表很大时,这才可能起作用。但是在许多情况下,性能将是绝望的。
它与业务数据无关。我认为这是最大的缺点。在您的模型中,仅在尺寸Sales
和Budget
的粒度中定义A
。认为属于B
实例的Budget
是胡说八道。但是,为了在联合尺寸表和C
之间建立关系,我们需要调整Budget
使其与Budget
的特定实例相关。
我们应该将预算表与AB尺寸一起插入以桥接AB或桥接ABC吗?取决于第一个问题的答案。
C
应直接与Budget
和A
相关。因为B
的粒度是模型中的每个Budget
和A
。
我们应该如何将广告表插入模型?要桥接ABC还是特别创建的桥接表BC,并且那个连接到ABC?
建立关系B
和B -> Advertising
。
顺便说一句,您的模型中实际上没有多对多关系。可能有多个与C -> Advertising
相关的Sales
记录,但是每个Product
记录只有一个Sales
,因此Product
和Product
之间的关系是一对多的。同样适用于模型中的其他关系。
最好将其描述为“具有不同粒度的多个事实表”。
根据OP的评论于2019年11月6日添加
似乎OP对如何处理具有不同粒度的多个事实表感到困惑。我建议OP将受益于Marco Russo的this article,但我尝试在这里总结其要点。
基本上,OP提出的模型可以简化为星型模式模型,其中事实表Sales
,Sales
和Budget
将放置在不同星型的中心。
问题在于某些维表由不同的事实表共享,而某些维则不共享。例如,尺寸Advertising
和A
由B
和Sales
共享,而Budget
仅与C
相关。假设我们正在比较Sales
和Sales
。当我们按Budget
细分报表时,C
中应显示什么值?答案可能因业务而异,但是在这里让我们认为Budget
是空白的,因为在每个Budget
的级别上都没有定义Budget
。
对于这种情况,公认的方法是检查度量中的过滤器上下文,并仅在按相关维度过滤后返回值。例如,仅当当前上下文在C
上没有过滤器时,才计算总计Budget
。
[Total Budget] :=
IF (
NOT ( ISFILTERED ( 'C' ) ),
SUM ( 'Budget'[Amount] )
)
关于powerbi - Power BI应该在星型模式模型中有粗支还是细支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58644354/
所以我问了一个类似的问题,但我想我应该更普遍地提出这个问题,以获得尽可能多的想法。 我有 Power BI Pro。我的任务是为数百个收件人创建报告,每个报告都针对该特定用户进行个性化设置。 尽管每个
有没有什么方法可以将 Power BI 报表部署到 Power BI 报表服务器,而无需手动复制这些文件,将它们上传到服务器,最后逐个报表更改每个报表的数据源连接信息,这在每个报表中都不实用客户网站。
我不认为这个问题是针对这些 Java 8 类的 Bi 版本的,因此问题标题中有括号。 我编写了一个函数来创建具有以下要求的 Apache Commons Lang3 Pair 对象: 如果 Left
我正在寻找有关 Microsoft BI 架构的一些意见和建议。需要设计一个支持以下功能的 BI 架构: 自助式 BI - Power BI 思考 企业级建模,具有适当的源代码控制、数据安全性和多语言
我正在寻找有关 Microsoft BI 架构的一些意见和建议。需要设计一个支持以下功能的 BI 架构: 自助式 BI - Power BI 思考 企业级建模,具有适当的源代码控制、数据安全性和多语言
我想从此页面(和类似页面)抓取数据:https://cereals.ahdb.org.uk/market-data-centre/historical-data/feed-ingredients.as
我成功地将 Java 应用程序连接到 Power BI REST API,并成功创建了数据集并添加了一些数据。 我可以从 Power BI Web 界面查看这些数据、制作报告、图表等。 是否可以将 P
谁能帮我解释一下 power BI premium 和 power BI Embedded 之间的区别? 最佳答案 Power BI Embedded 容量(也称为 SKU)是 billed hour
Power BI 新手。尝试获取有权访问每个仪表板的用户的报告。任何指示都会有帮助。 提前致谢! 最佳答案 下面是我创建的脚本。首先更改 PowerBI 凭据的用户名和密码。该脚本收集结果,然后打开两
我在“针对 Power BI 报表服务器优化的 Power BI Desktop(2017 年 10 月)”应用程序中创建了一个报表,并希望将其直接部署到本地 Power BI 报表服务器实例,但不能
我以编程方式启动/停止 PowerBI Embedded 的 Azure PowerBI 容量。 单击按钮后,恢复/暂停 Azure 中的 powerbi 嵌入服务。我按照下面的链接执行此操作。 ht
根据 Microsoft Power BI 开发人员文档 https://msdn.microsoft.com/en-US/library/dn877542.aspx 。我首先需要在 Azure Ac
我有一个带有 SQL Server 专用池的 Azure Synapse 工作区 并已禁用公共(public)网络访问 和加载的数据 我可以获取数据 我已将数据加载到 Power BI 桌面应用程序中
我有一个带有 SQL Server 专用池的 Azure Synapse 工作区 并已禁用公共(public)网络访问 和加载的数据 我可以获取数据 我已将数据加载到 Power BI 桌面应用程序中
本文永久地址:https://wanger-sjtu.github.io/encoder-cross-bi/ Bi-encoder和Cross-encoder是在自然语言理解任务模型的两种不同方法,
我正在尝试使用 CDE 对我的仪表板进行一些更改。但是当我以管理员身份访问 Pentaho plateform 5.0 时,我无法在所有菜单中找到 Marketplace谢谢你帮助我! 最佳答案 Ma
我正在 power BI 中创建角色并按原则代码过滤表 - 比如role1——只能看到CKBD、CKRANP、DA原理的数据,因为我用的是dax函数—— OR([principlecode] = "C
我创建了一个简单的仪表板,这是我在 Power bi 中的第一个项目。我创建了一个新列并使用了这个公式 Total Records = CALCULATE(COUNTROWS('Table A'),
我有一个包含多个参数的 Power BI 报表,我需要将报表嵌入网页,并希望通过嵌入 URL 或 Power BI JavaScript 库设置这些参数。这可能吗?从根本上说,我想将一些数据从托管报告
我有一个工具提示,它引用了一个条形图可视化,其中的行数多于一次无法显示的行数。当我将此工具提示应用于报表视觉对象并将鼠标悬停在其上时,我无法在不关闭工具提示本身的情况下单击并拖动滚动条,也无法使用鼠标
我是一名优秀的程序员,十分优秀!