【发布时间】:2017-10-20 15:34:05
【问题描述】:
目标是创建一个视觉效果,显示一年中每个月的预算与保费; 类似的东西:
所以我有两个表 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 summarize 并确保数据类型与高级值(十进制数)相同,但仍然存在此问题。
跟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
【问题讨论】:
标签: excel-formula powerbi dax