Python 如何使用azureml dataprep运行带有with子句的SQL查询?

Python 如何使用azureml dataprep运行带有with子句的SQL查询?,python,sql-server,azure,azure-machine-learning-service,Python,Sql Server,Azure,Azure Machine Learning Service,我从一位同事那里继承了一些SQL查询,这些查询对MS SQL数据库大量使用了SQL WITH子句,但我似乎无法运行它们并使用azureml dataprep以数据帧的形式获得结果 作为一个简单的例子,考虑代码 将azureml.dataprep作为dprep导入 导入时间 secret=dprep.register\u secretvalue=flowerpower,id=id db=dprep.MSSQLDataSourceserver_name=myserver.net,12345, 数据库

我从一位同事那里继承了一些SQL查询,这些查询对MS SQL数据库大量使用了SQL WITH子句,但我似乎无法运行它们并使用azureml dataprep以数据帧的形式获得结果

作为一个简单的例子,考虑代码

将azureml.dataprep作为dprep导入 导入时间 secret=dprep.register\u secretvalue=flowerpower,id=id db=dprep.MSSQLDataSourceserver_name=myserver.net,12345, 数据库_name=Flowers, user_name=davide, 密码=秘密 然后我定义了两个查询,它们应该是完全等效的:

flower_query='选择前100名[萼片长度],[萼片宽度] 来自[花][鸢尾] 不必要的复杂但仍然完全合法的语法: 带查询的花='带I选择前100名[萼片长度],[萼片宽度] 来自[花][鸢尾] 从I's中选择* 以下非WITH查询运行正常:

flower\u dataflow=dprep.read\u sqldb,flower\u查询 flower\u df=flower\u数据流到\u熊猫\u数据帧 具有变体的

flower\u dataflow=dprep.read\u sqldb,flower\u with\u查询使用with查询 flower\u df=flower\u数据流到\u熊猫\u数据帧 失败于

ExecutionError:错误代码:ScriptExecution.DatabaseQuery失败 步骤:b1da84ed-e429-4752-ac98-4cb74b9ca114错误消息: ScriptExecutionException由DatabaseQueryException引起。 “MSSQL”在执行时遇到异常,错误代码为“156” 查询“从中选择*,以I作为选择前100名[萼片长度], [萼片宽度] 从[Flowers].[Iris]选择*FROM I as 子查询'。SqlException类:15。HResult:x80131904。 关键字“WITH”附近的语法不正确。关键字“with”附近的语法不正确。如果此语句是公共表表达式,则 xmlnamespaces子句或更改跟踪上下文子句 语句必须以分号结尾。附近语法不正确

从错误中可以看出,库似乎在为我的原始查询预加SELECT*From,这就产生了问题。 在分号前面加上前缀;对于我的花,查询不够好,无法解决,当我这样做时,我得到

“MSSQL”在执行查询“SELECT*FROM”时遇到异常,错误代码为“102”;我选择了前100名

对可以通过azureml dataprep运行的查询集是否有限制?如果是这样的话,是否有一种变通方法允许在不进行任何SQL重构的情况下成功运行查询?我知道ODBC驱动程序,但我宁愿使用需要最少配置的解决方案,我认为azureml dataprep在这方面做得最好


我使用的是azureml-dataprep-2.0.7和azureml-core-1.13.0。

dataprep已被弃用。我们建议切换到azureml数据集,以便从sqldb读取数据。
dataprep已被弃用。我们建议切换到azureml数据集,以便从sqldb读取数据。

您是否使用pyodbc直接针对db测试了查询?我同事的查询使用pyodbc运行良好,明天我将再次检查我的玩具示例。我相信这两种变体都能很好地执行。我同意这很奇怪!什么版本的MS SQL?我确认当使用pyodbc和{ODBC Driver 17 for SQL Server}从Win 10启动查询时,这两个查询都运行良好。我的db myserver.net的MS SQL版本是15.0.4043.16。您是否使用pyodbc直接针对db测试了查询?我同事的查询使用pyodbc运行良好,明天我将再次检查我的玩具示例。我相信这两种变体都能很好地执行。我同意这很奇怪!什么版本的MS SQL?我确认当使用pyodbc和{ODBC Driver 17 for SQL Server}从Win 10启动查询时,这两个查询都运行良好。我的db myserver.net的MS SQL版本是15.0.4043.16。虽然我知道Dataset,但我不知道有人反对。只是为了我的理智,有没有在任何地方刊登过反对的广告?我假设我们代表MSFT:谢谢!!虽然我知道数据集,但我不知道有人反对。只是为了我的理智,有没有在任何地方刊登过反对的广告?我假设我们代表MSFT:谢谢!!