Polybase 无法在 XLSX 目标上放置 WHERE 条件

Polybase unable to place a WHERE condition on XLSX destination

我的 T-SQL 查询中的 WHERE 条件没有 returning 任何行,从 SQL 2019 polybase 到 .XLSX 文件

这是我创建 Polybase 的代码:

create master key encryption by password = 'Polybase2CSV';
    create external data source myODBCxlsx with
    (
        LOCATION = 'odbc://localhost',
        CONNECTION_OPTIONS = 'Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}; DBQ=F:\PolybaseSourceData\CustomerData.xlsx'
    );


create external table CustomerData(
CUSTOMERID FLOAT(53),
CUSTOMERNAME Nvarchar(255),
DEPARTMENT Nvarchar(255)
) with (
LOCATION='[sheet1$]',
DATA_SOURCE=myODBCxlsx
);

此查询有效:

select * from customerData

然而这不是:

select * from customerData where customername = 'Steve'

查询没有 return 任何行,尽管有一个叫史蒂夫的客户。

如果您在创建外部数据源时未指定设置,默认情况下会自动启用 PUSHDOWN。不幸的是,那个特定的驱动程序不能在启用 PUSHDOWN 的情况下工作,所以你会在简单的查询中遇到错误。关闭 PUSHDOWN 将解决这个问题。

外部数据源定义应如下所示:

create external data source myODBCxlsx with
(
    LOCATION = 'odbc://localhost',
    CONNECTION_OPTIONS = 'Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}; DBQ=F:\Files\CustomerData.xlsx',
    PUSHDOWN=OFF
);