PowerBI 直接查询连接到 PostgreSQL 错误。OLE 或 ODBC 错误:[Expression.Error] 我们无法将表达式折叠到数据源

Mar*_*tin 5 postgresql odbc powerbi

根据Microsoft DataConnectors的信息,我想使用直接查询通过此 ODBC 驱动程序创建从 PowerBi 到 PostgreSQL 的连接器。我重用了Microsoft 示例中的代码,只是调整了 ConnectionString,没有其他任何内容。构建导入到 PowerBI 的 .mez 文件后,我想连接到 PostgreSQL 服务器。 这就是连接对话框的样子。连接成功,我可以看到数据库中的表并使用它们。现在,问题就出在这里:当我选择某些列来显示表或图中的数据时,我收到OLE 或 ODBC 错误: [Expression.Error] 我们无法将表达式折叠到数据源。我还在诊断选项中启用了跟踪,因此日志内容如下:

DataMashup.Trace警告:24579:
    “开始”:“2018-05-18T10:51:56.6199845Z”,
    “操作”:“OdbcQuery/FoldingWarning”,
    “主机进程ID”:“25020”,
    “函数名称”:“组”,
    "产品版本": "2.58.5103.501 (PBIDesktop)",
    “活动Id”:“f06a4b5b-09ba-40ce-bd99-424710286b77”,
    “进程”:“Microsoft.Mashup.Container.NetFX40”,
    “PID”:11080,
    “蒂德”:1,
    “持续时间”:“00:00:00.0000051”
DataMashup.TraceInformation:24579:
    “开始”:“2018-05-18T10:51:56.6199552Z”,
    "Action": "BackgroundThread/RollingTraceWriter/Flush",
    "产品版本": "2.58.5103.501 (PBIDesktop)",
    "活动ID": "00000000-0000-0000-0000-000000000000",
    “进程”:“Microsoft.Mashup.Container.NetFX40”,
    “PID”:11080,
    “提德”:8,
    “持续时间”:“00:00:00.0000560”
DataMashup.Trace警告:24579:
    “开始”:“2018-05-18T10:51:56.6199999Z”,
    “操作”:“OdbcQuery/FoldingWarning”,
    “主机进程ID”:“25020”,
    "ErrorMessage": "此 ODBC 驱动程序未设置 GroupByCapability 功能。您可以使用 SqlCapability 覆盖它。",
    "产品版本": "2.58.5103.501 (PBIDesktop)",
    “活动Id”:“f06a4b5b-09ba-40ce-bd99-424710286b77”,
    “进程”:“Microsoft.Mashup.Container.NetFX40”,
    “PID”:11080,
    “蒂德”:1,
    “持续时间”:“00:00:00.0000159”
DataMashup.TraceInformation:24579:
    “开始”:“2018-05-18T10:51:56.6200385Z”,
    "Action": "BackgroundThread/RollingTraceWriter/Flush",
    "产品版本": "2.58.5103.501 (PBIDesktop)",
    "活动ID": "00000000-0000-0000-0000-000000000000",
    “进程”:“Microsoft.Mashup.Container.NetFX40”,
    “PID”:11080,
    “蒂德”:9,
    “持续时间”:“00:00:00.0000215”
DataMashup.Trace警告:24579:
    “开始”:“2018-05-18T10:51:56.6201305Z”,
    "操作": "OdbcQueryDomain/ReportFoldingFailure",
    “主机进程ID”:“25020”,
    "Exception": "Exception:\r\nExceptionType: Microsoft.Mashup.Engine1.Runtime.FoldingFailureException, Microsoft.MashupEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35\r\n消息: 折叠失败。请采取查看跟踪中的信息。\r\nStackTrace:\n 位于 Microsoft.Mashup.Engine1.Library.Odbc.OdbcQuery.Group(Grouping 分组)\r\n 位于 Microsoft.Mashup.Engine1.Runtime.OptimizingQueryVisitor.VisitQuery(Query查询,Func`2运算)\r\n\r\n\r\n",
    "产品版本": "2.58.5103.501 (PBIDesktop)",
    “活动Id”:“f06a4b5b-09ba-40ce-bd99-424710286b77”,
    “进程”:“Microsoft.Mashup.Container.NetFX40”,
    “PID”:11080,
    “蒂德”:1,
    “持续时间”:“00:00:00.0000504”
DataMashup.TraceInformation:24579:
    “开始”:“2018-05-18T10:51:56.6202107Z”,
    "Action": "BackgroundThread/RollingTraceWriter/Flush",
    "产品版本": "2.58.5103.501 (PBIDesktop)",
    "活动ID": "00000000-0000-0000-0000-000000000000",
    “进程”:“Microsoft.Mashup.Container.NetFX40”,
    “PID”:11080,
    “提德”:8,
    “持续时间”:“00:00:00.0000154”
DataMashup.Trace警告:24579:
    “开始”:“2018-05-18T10:51:56.6199413Z”,
    “操作”:“RemotePageReader/RunStub”,
    “主机进程ID”:“25020”,
    "Exception": "Exception:\r\nExceptionType: Microsoft.Mashup.Engine1.Runtime.ValueException、Microsoft.MashupEngine、Version=1.0.0.0、Culture=neutral、PublicKeyToken=31bf3856ad364e35\r\nMessage: [Expression.Error] 我们无法将表达式折叠到数据源。请尝试更简单的表达式。\r\nStackTrace:\n 位于 Microsoft.Mashup.Engine1.Library.Odbc.OdbcQueryDomain.ReportFoldingFailure(NotSupportedException ex)\r\n 位于 Microsoft.Mashup .Engine1.Runtime.OptimizingQueryVisitor.VisitQuery(查询查询,Func`2 操作)\r\n 位于 Microsoft.Mashup.Engine1.Runtime.OptimizingQueryVisitor.VisitQuery(查询查询)\r\n 位于 Microsoft.Mashup.Engine1.Runtime。 OptimizingQueryVisitor.VisitQuery(查询查询,Func`2 操作)\r\n 在 Microsoft.Mashup.Engine1.Runtime.OptimizingQueryVisitor.VisitQuery(查询查询)\r\n 在 Microsoft.Mashup.Engine1.Runtime.OptimizingQueryVisitor.Optimize(查询查询)\r\n 在 Microsoft.Mashup.Engine1.Language.Query.QueryTableValue.get_OptimizedQuery()\r\n 在 Microsoft.Mashup.Engine1.Language.Query.QueryTableValue.GetReader()\r\n 在 Microsoft.Mashup .Engine.Interface.Tracing.TracingDataReaderSource.get_PageReader()\r\n 在 Microsoft.Mashup.Evaluator.RemoteDocumentEvaluator.Service.c__DisplayClass11.c__DisplayClass13.b__10()\r\n 在 Microsoft.Mashup.Evaluator.RemotePageReader.c__DisplayClass7.b__0 ()\r\n 在 Microsoft.Mashup.Evaluator.EvaluationHost.ReportExceptions(IHostTrace 跟踪、IEngineHost engineHost、IMessageChannel 通道、Action 操作)\r\n\r\n\r\n",
    "产品版本": "2.58.5103.501 (PBIDesktop)",
    “活动Id”:“f06a4b5b-09ba-40ce-bd99-424710286b77”,
    “进程”:“Microsoft.Mashup.Container.NetFX40”,
    “PID”:11080,
    “蒂德”:1,
    “持续时间”:“00:00:00.0005557”

有什么想法如何解决此错误?谢谢

小智 4

我今天刚刚第一次使用 Direct Query 存储模式连接到 PostgreSQL,也遇到了这个错误。和您一样,连接和其他一切似乎都工作正常,但在尝试使用在使用导入存储模式时工作正常的视觉效果时出现错误。

我的错误是:OLE DB or ODBC error: [Expression.Error] We couldn't fold the expression to the data source. Please try a simpler expression.我假设最后一句是在 Power BI 的更高版本中添加的。

Carl de Souza在这里解释了查询折叠,看起来直接查询试图将尽可能多的分析折叠到本机查询中。当我第一次提取数据时,我没有指定任何查询,但一旦我这样做了,错误就消失了。

对于任何不知道如何执行此操作的人,单击“获取数据”(或“新源”,如果已在查询编辑器中)并选择 PostreSQL 数据库后,请确保在“高级选项”部分中添加 SQL 语句。

对我来说,一个简单的 SELECT * FROM my_schema."my_table_name" 就足够了。

" PostgreSQL 数据库弹出窗口的填写示例