我创建了一个看起来像这样的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 's Transpose Transform within the Query Editor, but after waiting 30 minutes with no results, I gave up on that effort. There are over 300,000 transactions in this SQL table, so I' m而不是使用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