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

时间:2017-10-20 15:34:05

标签: excel-formula powerbi dax

目标是创建一个视觉,显示一年中每个月的预算与保费; 这样的事情:

enter image description here

所以我有两张表BudgetData和Premiums。 如何将这两个表连接到两列:

    `BudgetData.InsurenceType = Premiums.Division 
and
 BudgetData .MonthYear = Premiums.MonthYear`

BudgetDate表:

   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 summarize并确保数据类型与Premium值(十进制数)相同但仍然存在此问题。

enter image description here

是否与加入有关?

UPDATE2:

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

更新3

Joe,如果我使用列PremiumsBudgetDataPremium和{{1}从现有表BudgetAmountDivision创建单独的计算表,该怎么办? }}。 有点像这样:

enter image description here

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

问题是我知道如何在SQL中创建这样的表,但不知道如何在DAX中这样做。 下面是t-sql代码:

MonthYear

3 个答案:

答案 0 :(得分:4)

简短的回答是,Power BI并不支持加入两个专栏......但我不认为这是你需要解决的问题。

在不知道您的完整数据模型的情况下,我会做出一些猜测,但我希望这能为您解决问题。

我从这样的BudgetData表开始:

BudgetData table

和这样的Premiums表:

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

答案 1 :(得分:1)

“创建关系”对话框不允许选择多个列 所以有2个解决方法 1.使用串联InsurType&amp ;;在两个表上创建一个新列。 MonthYear

  1. Power Query可以连接所需列数的表。首先从“主页”选项卡的“组合”部分打开“合并查询”,您可以按住CTRL键并逐个选择列(按正确的连接顺序)。

答案 2 :(得分:1)

您可以为合并选择多个列。

首先将两个表(BudgetDate和Premiums)加载到Power Query中。

然后点击首页 - >合并查询 - >将查询合并为新:

enter image description here

然后,在Merge窗口的顶部,选择'Premiums'(在下拉选择器中),然后单击'Division'列标题,然后按住Ctrl键和< / strong>点击'MonthYear'列标题。 (您会在每个列标题旁边看到“1”和“2”...确保它们以正确的顺序出现,即“Division 1”和“MonthYear 2”。)

然后,在Merge窗口的下一部分中,选择BudgetDate(在下拉选择器中),然后单击'InsurType'列标题,然后按按住Ctrl键点击'MonthYear'列标题。 (您会在每个列标题旁边看到“1”和“2”...确保它们以正确的顺序出现,即“InsurType 1”和“MonthYear 2”。)

您的合并窗口如下:

enter image description here

当你点击OK时,你会得到这个:

enter image description here

当你在'NewColumn'的标题中点击这个... enter image description here时......你会得到这个:

enter image description here

清除“使用原始列名称作为前缀”旁边的复选标记,然后单击“确定”以获取此信息:

enter image description here