【问题标题】:Query works in Power Query Editor but not in Power BI查询在 Power Query 编辑器中有效,但在 Power BI 中无效
【发布时间】:2021-05-27 13:35:38
【问题描述】:

我刚开始使用 Power BI,希望能够比较直接查询和导入模式之间的报表性能。通过在导入模式下执行数据操作,我将要描述的内容可能是可能的。这不是这个问题的目的。

针对 SQL Server 2016 使用 Power BI。

不幸的是,我正在处理预先透视的数据。为了取消它,我正在做这样的事情:

;
with a as (
       SELECT pd.[ProjectDollarsId]
       , pd.[VersionId]
       , pd.[ProjectId]
       , pd.[FundTypeId]
       , pd.[ApprovalId]
       , pd.[PriorDollar]
       , pd.[LastYearDollar]
       , pd.[ThisYearDollar]
       , pd.[NextYearDollar]
       , pd.[FutureDollar]
       , pd.[TotalDollar]
       , v.[Year] as VersionYear

       FROM [ProjectDollars] pd
         inner join [Version] v on v.VersionId = pd.VersionId

       where v.[Year] > 2016
), 
b as (
       select ProjectDollarsId
       , VersionId
       , ProjectId
       , ProjectPhaseId
       , FundTypeId
       , ApprovalId
       , VersionYear
       , DollarsYear
       , Dollars

       from a pvt
       unpivot (
              Dollars for DollarsYear in (
                     PriorDollar, 
                     LastYearDollar, 
                     ThisYearDollar, 
                     NextYearDollar, 
                     FutureDollar)
              ) as unpvt
)

select ProjectDollarsId
, VersionId
, ProjectId
, FundTypeId
, ApprovalId
, case DollarsYear
       when 'PriorDollar'    then VersionYear - 2
       when 'LastYearDollar' then VersionYear - 1
       when 'ThisYearDollar' then VersionYear
       when 'NextYearDollar' then VersionYear + 1
       when 'FutureDollar'   then VersionYear + 2
    else 0
  end as [Year]
, Dollars
from b

这在 Power Query 编辑器中运行良好。我得到一个包含正确列名和数据的结果表以供预览。

单击“关闭并应用”后,Power BI 显示:

Microsoft SQL:“;”附近的语法不正确。 ')' 附近的语法不正确。

我需要做些什么来解决这个问题?

【问题讨论】:

  • 也许它不喜欢你愚蠢的“初学者”使用分号?该字符是语句终止符,在单个语句(或批处理)的开头没有任何用途。

标签: sql-server powerbi


【解决方案1】:

Power BI 将像这样编写查询:

select * from (<your query>) SourceQuery

select * from (; with a as (SELECT pd.[ProjectDollarsId] ... ) SourceQuery

这样做是因为它需要在运行时添加连接和条件。显然上述查询无效。您需要在 Power BI 中使用 M 和 DAX 实现查询逻辑,或者将其包装在数据库中的视图中。

【讨论】:

  • 似乎大多数 DAX 在此处无法工作,因为它使用的是 Direct Query。如果您推荐了 M 代码,那就太好了。或者我使用嵌套查询而不是公用表表达式来使用老派。愉快。如果可行,我会尝试并标记为正确答案。
猜你喜欢
  • 1970-01-01
  • 2021-02-12
  • 1970-01-01
  • 1970-01-01
  • 2020-10-20
  • 2016-02-14
  • 1970-01-01
  • 2019-01-27
  • 1970-01-01
相关资源
最近更新 更多