我创建了一个看起来像这样的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