Databricksランタイム14.3でサポートされました。
動的SQLを記述できます。
-- リテラル文字列による自己完結実行
EXECUTE IMMEDIATE 'SELECT SUM(col1) FROM VALUES(?), (?)' USING 5, 6;
-- SQL変数で構成されたSQL文字列
DECLARE sqlStr = 'SELECT SUM(col1) FROM VALUES(?), (?)';
DECLARE arg1 = 5;
DECLARE arg2 = 6;
EXECUTE IMMEDIATE sqlStr USING arg1, arg2;
-- INTO句を使用
DECLARE sum INT;
EXECUTE IMMEDIATE sqlStr INTO sum USING arg1, arg2;
SELECT sum;
-- 名前付きパラメータマーカーを使用
SET VAR sqlStr = 'SELECT SUM(col1) FROM VALUES(:first), (:second)';
EXECUTE IMMEDIATE sqlStr INTO sum
USING (5 AS first, arg2 AS second);
SELECT sum;
私はこれまでは動的に生成していたSQL文字列をspark.sql
に渡していましたが、SQL側で結構動的に処理できるようになりますね。