Excel formula 如何在Power BI Desktop中连接多列上的表
目标是创建一个显示一年中每个月的预算与溢价的视觉效果; 诸如此类: 所以我有两个表预算数据和保费。 如何在两列上连接这两个表:Excel formula 如何在Power BI Desktop中连接多列上的表,excel-formula,powerbi,dax,Excel Formula,Powerbi,Dax,目标是创建一个显示一年中每个月的预算与溢价的视觉效果; 诸如此类: 所以我有两个表预算数据和保费。 如何在两列上连接这两个表: `BudgetData.InsurenceType = Premiums.Division and BudgetData .MonthYear = Premiums.MonthYear` 预算日期表: InsurType Amount MonthYear Commercial Auto 1000 Jan
`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
我设置了“不汇总”,并确保数据类型与Premium value(十进制数)相同,但仍然存在此问题
这和join有关吗
更新2:
.pibx文件可通过dropbox获得:
更新3
Joe,如果我从现有表Premium
和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
“创建关系”对话框不允许选择多个列 因此,有两种变通方法 1.使用concatenation insuretype&MonthYear在两个表上创建一个新列
“创建关系”对话框不允许选择多个列 因此,有两种变通方法 1.使用concatenation insuretype&MonthYear在两个表上创建一个新列
简而言之,Power BI不支持在两个列上连接。。。但我认为这不是你需要解决的问题 在不了解完整数据模型的情况下,我将进行一些猜测,但我希望这能为您澄清一些问题 我从如下的BudgetData表开始: 还有这样一个保费表: 我使用Power BI创建了一个具有以下DAX公式的日期表
Dates = CALENDAR(DATE(2017, 1, 1), DATE(2017, 12, 31))
InsurTypes = DISTINCT(
UNION(
SELECTCOLUMNS(BudgetData, "InsurType", BudgetData[InsurType]),
SELECTCOLUMNS(Premiums, "InsurType", Premiums[Division])
)
)
我还使用Power BI使用以下DAX公式为InsuralType/Division创建维度表
Dates = CALENDAR(DATE(2017, 1, 1), DATE(2017, 12, 31))
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]
然后,我创建了一个如下所示配置的图形,它似乎显示了正确的信息。预算数据和保费表之间不需要任何关系
简而言之,Power BI不支持在两个列上连接。。。但我认为这不是你需要解决的问题 在不了解完整数据模型的情况下,我将进行一些猜测,但我希望这能为您澄清一些问题 我从如下的BudgetData表开始: 还有这样一个保费表: 我使用Power BI创建了一个具有以下DAX公式的日期表
Dates = CALENDAR(DATE(2017, 1, 1), DATE(2017, 12, 31))
InsurTypes = DISTINCT(
UNION(
SELECTCOLUMNS(BudgetData, "InsurType", BudgetData[InsurType]),
SELECTCOLUMNS(Premiums, "InsurType", Premiums[Division])
)
)
我还使用Power BI使用以下DAX公式为InsuralType/Division创建维度表
Dates = CALENDAR(DATE(2017, 1, 1), DATE(2017, 12, 31))
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]
然后,我创建了一个如下所示配置的图形,它似乎显示了正确的信息。预算数据和保费表之间不需要任何关系
您可以为合并选择多个列。 首先将两个表(BudgetDate和Premium)加载到Power Query中 然后单击主页->合并查询->将查询合并为新查询: 然后,在合并窗口的顶部,选择“Premium”(在下拉选择器中),然后单击“Division”列标题,然后按住Ctrl键,然后单击“MonthYear”列标题。(您将在每个列标题旁边看到一个“1”和一个“2”…确保它们以正确的顺序出现,即“第1部分”和“第2个月”) 然后,在合并窗口的下一部分中,选择BudgetDate(在下拉选择器中),然后单击“InsureType”列标题,然后按住Ctrl键,然后单击“MonthYear”列标题。(您将在每个列标题旁边看到一个“1”和一个“2”…确保它们以正确的顺序出现,即“InsuralType 1”和“MonthYear 2”) 您的合并窗口如下所示: 单击“确定”后,您将看到: 当你点击这个。。。在“NewColumn”的标题中。。。您将得到以下结果: 清除“使用原始列名作为前缀”旁边的复选标记,然后单击“确定”以获取以下内容:
您可以为合并选择多个列。 首先将两个表(BudgetDate和Premium)加载到Power Query中 然后单击主页->合并查询->将查询合并为新查询: 然后,在合并窗口的顶部,选择“Premium”(在下拉选择器中),然后单击“Division”列标题,然后按住Ctrl键,然后单击“MonthYear”列标题。(哟)