Community Conundrum 10: The Titanic is now live Learn more

Query failed: Connection name not specified

Level 3
Query failed: Connection name not specified
Job failed: Error in Python process: At line 144: <type 'exceptions.Exception'>: Query failed: Connection name not specified 

line 144: SQLExecutor2.exec_recipe_fragment(output_dataset, final_query)

My code was working just fine and then I changed the output dataset and I'm getting this error. (I don't have any inputs) Do I need to write something in the pre-script for the SQLExecutor2 to tell it to look for a specific connection?

5 Replies
Dataiker
Dataiker

Hi,

In your python code, did you make sure to first set up your SQL executor accordingly? Something like:

executor = SQLExecutor2(connection="db-connection") # or dataset="dataset_name"
executor.exec_recipe_fragment(output_dataset, final_query)

 You can also find more information about SQLExecutor2 in our python API documentation here:

https://doc.dataiku.com/dss/latest/python-api/sql.html#retrieving-results

I hope that this helps!

Best,

Andrew

Level 3
Author
executor = SQLExecutor2(connection="cde_adhoc")
output_dataset = executor.exec_recipe_fragment(output_dataset, final_query)

Hi Andrew, 

I've added the code just like in the documentation and am still getting the same error "Connection name not specified".  The output connection name matches the SQLexecutor connection name.  It's weird this was working before without specifying connection.  Also, when I try to declare dataset I get the same error. 

[2020/04/07-00:31:31.769] [qtp839552703-48] [INFO] [dku.jobs]  - Executing a partial SQL query recipe for compute_test_plugin_output2_NP (write to PROJECT_NAME.testout)
[2020/04/07-00:31:31.769] [qtp839552703-48] [INFO] [dku.jobs]  - Starting runner
[2020/04/07-00:31:31.775] [qtp839552703-48] [ERROR] [dku.jobs]  - Call failed
java.lang.IllegalArgumentException: Connection name not specified

=/

0 Kudos
Dataiker
Dataiker

Hi,

What was the output before you changed it and what is it after you changed it ?

0 Kudos
Level 3
Author

So it seems to have to do with my not supplying an input role. When I deleted it, it still worked, but it must have been cached or something.  Eventually, it stopped working without an input dataset and could not find the connection, even when specified in the code itself.  

I don't want an input dataset in the plugin if I can avoid it. Is there a way I can supply the connection to the configuration elsewhere? It doesn't seem to be working in the python recipe.py. 

0 Kudos
Dataiker
Dataiker

Ah, right. Just like "normal" SQL recipes, "delegated" SQL recipes via "exec_recipe_fragment" only compute the connection name from the input, so you'll need to add an input dataset indeed.

It does not need to represent actual "input" data of your plugin, it just needs to be a SQL table dataset pointing to any table of the output connection, so that DSS can fetch the connection name from there.

We'll add your interest in having input-less SQL recipes (and hence, input-less "delegated" SQL recipes)