目标是创建一个视觉效果,显示一年中每个月的预算与保费; 类似的东西:
所以我有两个表 BudgetData 和 Premiums。 如何在两列上加入这两个表:
`BudgetData.InsurenceType = Premiums.Division
and
BudgetData .MonthYear = Premiums.MonthYear`
预算日期表:
InsurType Amount MonthYear
Commercial Auto 1000 Jan 2017
Commercial Auto 22000 Feb 2017
Commercial Auto 3000 Mar 2017
Specialty Casualty 4000 Jan 2017
Specialty Casualty 5000 Feb 2017
Specialty Casualty 35000 Mar 2017
保费表:
Division Premium MonthYear
Commercial Auto 2500 Jan 2017
Commercial Auto 1800 Feb 2017
Commercial Auto 3365 Mar 2017
Specialty Casualty 14528 Jan 2017
Specialty Casualty 3323 Feb 2017
Specialty Casualty 1825 Mar 2017
在 Power BI 中,我只能加入单一关系,这就是我不明白为什么会这样。
那么实现这一目标的最有效方法是什么?在性能方面。
更新:
乔,非常感谢。
我能够加入。
但是当我尝试做视觉时,它会给我预算金额 count
或 sum
我设置了 Don't summary
并确保数据类型与 Premium 值(十进制数)相同,但仍然存在此问题。
跟join有关系吗?
更新2:
.pibx 文件可通过 dropbox 获取: https://www.dropbox.com/s/mcj1gtonttjtz6y/PremiumByDivisions.pbix?dl=0
更新 3
Joe,如果我从现有表 Premiums
和 BudgetData
中创建单独的计算表,其中包含以下列:Premium
、BudgetAmount
、Division
和 MonthYear
。
类似的东西:
然后在我的图表中使用它。如果我点击圆环图,你认为它会按部门过滤吗?
问题是我知道如何在 SQL 中创建这样的表,但不知道如何在 DAX 中创建。 下面是t-sql代码:
;with cte_Premiums
as
(
select sum(Premium) as Premium,
Division,
LEFT(DATENAME(MONTH,[EffectiveDate]),3) +' '+ CONVERT(varchar(4),Year(EffectiveDate)) AS MonthYear,
MAX(DATEPART(MM, [EffectiveDate])) as DateOrder
from ##OlegTest
group by LEFT(DATENAME(MONTH,[EffectiveDate]),3) +' '+ CONVERT(varchar(4),Year(EffectiveDate)), Division
)
,cte_Budget
AS
(
select insurType,
Amount,
LEFT(DATENAME(MONTH,[PostDate]),3) +' '+CONVERT(varchar(4),Year([PostDate])) AS MonthYear
from BudgetData
)
select Premium,
Amount as BudgetAmount,
Division,
p.MonthYear
FROM cte_Premiums p INNER JOIN cte_Budget b ON p.Division = b.insurType and p.MonthYear = b.MonthYear
ORDER BY Division,DateOrder
最佳答案
简短的回答是 Power BI 不支持加入两列...但我认为这不是您需要在这里解决的问题。
在不了解您的完整数据模型的情况下,我会做出一些猜测,但我希望这能为您解决问题。
我从一个这样的 BudgetData 表开始:
还有这样的保费表:
我使用 Power BI 创建了一个包含以下 DAX 公式的日期表。
Dates = CALENDAR(DATE(2017, 1, 1), DATE(2017, 12, 31))
我还使用 Power BI 使用以下 DAX 公式为 InsurType/Division 创建了维度表。
InsurTypes = DISTINCT(
UNION(
SELECTCOLUMNS(BudgetData, "InsurType", BudgetData[InsurType]),
SELECTCOLUMNS(Premiums, "InsurType", Premiums[Division])
)
)
然后我创建了四个表之间的关系,如下所示。
由于您使用的是我没有的 MonthInCalendar
列,因此我使用以下公式来创建它和排序列。
MonthInCalendar = LEFT(Dates[Date].[Month], 3) & " " & Dates[Date].[Year]
MonthInCalendarSort = Dates[Date].[Year] & Dates[Date].[MonthNo]
然后我创建了一个配置如下所示的图表,它似乎显示了正确的信息。不需要 BudgetData 和 Premiums 表之间的关系。
关于excel-formula - 如何在 Power BI Desktop 中连接多个列上的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46852514/