我创建了一个看起来像这样的SQL表,其中有月份的列,多个帐户详细信息,以及每月的每一天的一列。我为每月的每一天创建一个单独的列而不是包含所有Day值的一个Day of the Month列的原因是我希望每个事务有一行。 (我有另一个版本的数据集,其中包含一个Day of the Month列,但我无法将其显示为Power BI表中的单独行而不重复事务。)
此外,Month和Day列不是DateTime数据类型,因此我无法使用Power BI的日历或时间函数。
现在我想在Power BI中转换整个SQL表,以便所有列成为Table Visual中的行。最终结果是总共应该有29行,每个月的每一天都有一行。我希望其他列成为这种视觉效果的过滤器。这意味着此表格中只有一列可视化,包含当天的总销售额,但会根据所选的切片器值进行过滤。此表视觉表示我的详细信息表。在我获得此详细信息表后,下一步是弄清楚如何从DOS_YrMonth级别向下钻取到此日级别,并过滤他们选择的切片器值。 (如果您对此有任何想法也会有所帮助)。
我尝试在查询编辑器中使用Power BI的Transpose Transform,但是等了30分钟没有结果,我放弃了这个努力。此SQL表中有超过300,000个事务,因此我不喜欢使用Power BI的Transform函数。每次我使用查询编辑器时,它似乎都非常慢。我最喜欢的解决方案是使用DAX根据我的表创建一个新表。一个很好的例子就是这个线程由Phil发布的解决方案: enter link description here
下面的示例表是简化版。此处未包含真实SQL表中的更多帐户详细信息(附加列)。
create table #MonthDayExample
(
DOS_YrMonth int
,account_detail1 varchar(5)
,account_detail2 varchar(5)
,[01] decimal(13,2)
,[02] decimal(13,2)
,[03] decimal(13,2)
,[04] decimal(13,2)
,[05] decimal(13,2)
,[06] decimal(13,2)
,[07] decimal(13,2)
,[08] decimal(13,2)
,[09] decimal(13,2)
,[10] decimal(13,2)
,[11] decimal(13,2)
,[12] decimal(13,2)
,[13] decimal(13,2)
,[14] decimal(13,2)
,[15] decimal(13,2)
,[16] decimal(13,2)
,[17] decimal(13,2)
,[18] decimal(13,2)
,[19] decimal(13,2)
,[20] decimal(13,2)
,[21] decimal(13,2)
,[22] decimal(13,2)
,[23] decimal(13,2)
,[24] decimal(13,2)
,[25] decimal(13,2)
,[26] decimal(13,2)
,[27] decimal(13,2)
,[28] decimal(13,2)
,[29] decimal(13,2)
)
insert #MonthDayExample values(201705,'A','B',100,0,0,300,500,0,0,0,0,0,0,20,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
insert #MonthDayExample values(201705,'A','C',0,0,0,280,500,0,0,0,0,0,0,75,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
insert #MonthDayExample values(201705,'A','D',70,0,0,66,65,0,0,0,0,0,0,20,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
insert #MonthDayExample values(201705,'F','G',90,0,0,25,500,0,0,0,0,0,0,20,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
insert #MonthDayExample values(201705,'F','H',13,0,0,25,500,0,0,0,0,0,0,20,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
select * from #MonthDayExample