excel-formula - 如何在 Power BI Desktop 中连接多个列上的表

标签 excel-formula powerbi dax

目标是创建一个视觉效果,显示一年中每个月的预算与保费; 类似的东西:

enter image description here

所以我有两个表 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 中,我只能加入单一关系,这就是我不明白为什么会这样。

那么实现这一目标的最有效方法是什么?在性能方面。

更新:

乔,非常感谢。 我能够加入。 但是当我尝试做视觉时,它会给我预算金额 countsum

我设置了 Don't summary 并确保数据类型与 Premium 值(十进制数)相同,但仍然存在此问题。

enter image description here

跟join有关系吗?

更新2:

.pibx 文件可通过 dropbox 获取: https://www.dropbox.com/s/mcj1gtonttjtz6y/PremiumByDivisions.pbix?dl=0

更新 3

Joe,如果我从现有表 PremiumsBudgetData 中创建单独的计算表,其中包含以下列:PremiumBudgetAmountDivisionMonthYear。 类似的东西:

enter image description here

然后在我的图表中使用它。如果我点击圆环图,你认为它会按部门过滤吗?

问题是我知道如何在 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 表开始:

BudgetData table

还有这样的保费表:

Premiums table

我使用 Power BI 创建了一个包含以下 DAX 公式的日期表。

Dates = CALENDAR(DATE(2017, 1, 1), DATE(2017, 12, 31))

Date table

我还使用 Power BI 使用以下 DAX 公式为 InsurType/Division 创建了维度表。

InsurTypes = DISTINCT(
    UNION(
        SELECTCOLUMNS(BudgetData, "InsurType", BudgetData[InsurType]),
        SELECTCOLUMNS(Premiums, "InsurType", Premiums[Division])
    )
)

InsurTypes table

然后我创建了四个表之间的关系,如下所示。

Relationships

由于您使用的是我没有的 MonthInCalendar 列,因此我使用以下公式来创建它和排序列。

MonthInCalendar = LEFT(Dates[Date].[Month], 3) & " " & Dates[Date].[Year]

MonthInCalendarSort = Dates[Date].[Year] & Dates[Date].[MonthNo]

然后我创建了一个配置如下所示的图表,它似乎显示了正确的信息。不需要 BudgetData 和 Premiums 表之间的关系。

Graph

关于excel-formula - 如何在 Power BI Desktop 中连接多个列上的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46852514/

相关文章:

dax - 如何计算 DAX 中总值(value)的百分比(Power BI Desktop)

excel - 将日期更改为会计年度

excel - 在 Ms-Excel 2010 中帮助

powerbi - Power BI 报表服务器中的自定义标题和 Logo

sql-server - 如何更改Power BI Desktop中不同列的数据标签显示值

excel - DATEADD 和缺少的日期

regex - 从单元格中删除除数字之外的所有内容

VBA - 在长公式上使用 Application.Evaluate 时出错

azure - 如何在Azure中将pdf转换为base64

azure - PowerBI 访问 Azure SQL 数据库(PaaS)