sp_execute_external_script返回数据集输出的Python脚本

2024-03-29 08:25:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用SQL Server机器学习。我正在尝试从脚本中获取输出

DECLARE @answers NVARCHAR(MAX)
EXEC sp_execute_external_script @language=N'Python',
 @script = N'
import pandas as pd
ser = pd.Series([6, 7, 6 * 7])
df = pd.DataFrame(ser)
OutputDataSet = df',
 @output_data_1 = @answers,
 @params = N'@answers nvarchar(MAX)'
WITH RESULT SETS((Answer int))

我得到以下错误

Procedure expects parameter '@params' of type 'ntext/nchar/nvarchar'.

我想我已经看到了R脚本的输出,但我无法从Python获得它


Tags: 脚本机器dfsqlserverscriptparamsmax
3条回答

@output_data_1不是^{}的命名参数

语法:

sp_execute_external_script   
    @language = N'language',   
    @script = N'script'  
    [ , @input_data_1 = N'input_data_1' ]   
    [ , @input_data_1_name = N'input_data_1_name' ]  
    [ , @input_data_1_order_by_columns = N'input_data_1_order_by_columns' ]    
    [ , @input_data_1_partition_by_columns = N'input_data_1_partition_by_columns' ]  
    [ , @output_data_1_name = N'output_data_1_name' ]  
    [ , @parallel = 0 | 1 ]  
    [ , @params = N'@parameter_name data_type [ OUT | OUTPUT ] [ ,...n ]' ] 
    [ , @parameter1 = 'value1' [ OUT | OUTPUT ] [ ,...n ] ]
declare @num1 int = 10, @num2 int=5, @thesum int;

EXEC sp_execute_external_script @language=N'Python',
 @script = N'
import pandas as pd
ser = pd.Series([6, 7, 6 * 7])
df = pd.DataFrame(ser)
OutputDataSet = df

a=x123
b=y345
sumresult=a+b
',
@output_data_1_name = N'OutputDataSet',
@params = N'@x123 int, @y345 int, @sumresult int output',
@x123= @num1, @y345=@num2, @sumresult = @thesum output
WITH RESULT SETS((Answer int));

select @thesum;

他们都帮了忙!我必须转换成JSON。还可以查看orient参数的各种选项

DECLARE @answers NVARCHAR(MAX)
EXEC sp_execute_external_script @language=N'Python',
 @script = N'
import pandas as pd
ser = pd.Series([6, 7, 6 * 7])
df = pd.DataFrame(ser).to_json(orient=''values'')',
 @params = N'@df NVARCHAR(MAX) OUTPUT',
 @df = @answers OUTPUT
 
PRINT @answers

相关问题 更多 >