gpt4 book ai didi

SSAS MDX 计算 - 基于组值的总和

转载 作者:行者123 更新时间:2023-12-04 15:35:22 26 4
gpt4 key购买 nike

我在一家酒店公司工作,我建立了一个事实表,其粒度为每位客人的住宿晚数,例如如果客人入住 3 晚,则每晚住宿都会有一行。

我想做的是为入住率创建一个衡量标准(预订房间除以可用房间)。

我在事实表中有一列说明酒店有多少间客房,但只是对该值求和是行不通的,因为那样它只是将客房数乘以客人数。所以我需要总结客人总数,然后除以该特定酒店的房间数量。这有意义吗?

[措施].[在书上]/[措施].[可用房间]

这个的 SQL 是这样的:

SELECT  stay.PropertyKey, prop.RoomsAvailable, stay.StayDateKey, COUNT(stay.Confirmation) AS Confirmation,
CAST(COUNT(stay.Confirmation) AS DECIMAL(13,9)) / CAST(prop.RoomsAvailable AS DECIMAL(13,9)) AS OccupancyPercentage
FROM dbo.FactStayNight stay
INNER JOIN
(
SELECT DISTINCT PropertyKey, RoomsAvailable
FROM dbo.FactStayNight
) prop
ON stay.PropertyKey = prop.PropertyKey
GROUP BY stay.PropertyKey, stay.StayDateKey, prop.RoomsAvailable

最佳答案

您的事实表很好,除了房间总数列。事实行在粒度级别“房间”,但房间总数在粒度级别“整个酒店”。(你可以想象一个“房地产 Assets ”层次维度,假设你没有:

酒店 地面 房间)

可能的解决方案:

  1. 在“日期”维度中添加一个可用的“房间数”,在天级别(严格来说是“夜间”级别)。这将与 COUNT(当天入住的客人)相称。您甚至可以调整此数字以反射(reflect)例如特定时期正在维修的房间。
  2. 您可以实现一个房间维度,将每位客人的 Fact_NightStayed 分配给一个房间。然后创建技术上称为“人数”表的内容,就像您的 Fact_NightStayed 一样。但是这个表将是一个“roomcount”表:一行表示一个房间在特定的一天存在(或者,如果你决定,一个房间存在并且可用,即没有损坏/正在修理) .在此表中预填充每个房间每个日期一行,直到您决定的 future 日期(这将是一个年度刷新过程)。然后,将 Fact_NightStayed 加入 Fact_RoomCount,您的度量将为 COUNT(NightStayed)/COUNT(RoomCount)。

注意随着时间的推移聚合此度量(无论您如何实现它):聚合函数本身从 Day 叶级别到 Date 层次结构应该是 AVG 而不是 SUM。

关于SSAS MDX 计算 - 基于组值的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59953112/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com