我可以将SnowSight过滤器用作雪花存储过程的参数吗?

发布于 2025-02-12 15:56:23 字数 620 浏览 0 评论 0原文

还可以使用SnowSight过滤器做任何事情

:= :MyFilter

除了从字面上看,除了我发现这非常有限之外,

...例如,许多开发人员将需要使用存储的过程和用户​​定义的功能,而不是Adhoc SQL ... 在这种情况下,人们想这样做,

call MyDb.MySchema.MyProc(:MyFilter);

我发现我可以在工作表中使用它,

SET MyVar = :Filter
call MyDb.MySchema.MyProc($MyVar);

然后如果在仪表板中使用,我必须将其变成SQL脚本块...但是我不设法获得 错误

DECLARE 
    MyVar STRING;
BEGIN
    SET MyVar = :MyFilter;
    
    CALL MyDb.MySchema.MyProc(:MyVar);
END;

我有 错误:无效的标识符'myfilter'

我错过了一个技巧吗?

我的目标是从存储过程而不是ADHOC代码驾驶仪表板,因此我可以使用源控制...

Is it possible to do anything with Snowsight filters other than literally

:= :MyFilter

I find this EXTREMELY limited...

For instance, many developers will want to use stored procedures and user defined functions rather than adhoc SQL...
In which case, one would want to do this instead

call MyDb.MySchema.MyProc(:MyFilter);

I have found I can use this in a worksheet

SET MyVar = :Filter
call MyDb.MySchema.MyProc($MyVar);

and then I would have to turn this into a SQL Scripting block if using in a Dashboard... but I don't manage to get it working

DECLARE 
    MyVar STRING;
BEGIN
    SET MyVar = :MyFilter;
    
    CALL MyDb.MySchema.MyProc(:MyVar);
END;

I get an error
Error: invalid identifier 'MyFilter'

Am I missing a trick?

My goal is to drive Dashboards from Stored procedures rather than adhoc code, hence I can use Source Control...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

回忆躺在深渊里 2025-02-19 15:56:23

如果使用经典控制台,请使用以下代码,

EXECUTE IMMEDIATE $
DECLARE 
    MyVar INTEGER;
    RetResultSet resultset;
BEGIN
     MyVar := 10;
    
     RetResultSet:= (CALL MyDb.MySchema.MyProc(:MyVar));
     return  table(RetResultSet);
END;
$;

如果使用Snowsight

 DECLARE 
        MyVar INTEGER;
        RetResultSet resultset;
    BEGIN
         MyVar := 10;
        
         RetResultSet:= (CALL MyDb.MySchema.MyProc(:MyVar));
         return  table(RetResultSet);
    END;

If you using Classic Console then use following code

EXECUTE IMMEDIATE $
DECLARE 
    MyVar INTEGER;
    RetResultSet resultset;
BEGIN
     MyVar := 10;
    
     RetResultSet:= (CALL MyDb.MySchema.MyProc(:MyVar));
     return  table(RetResultSet);
END;
$;

If you using SnowSight

 DECLARE 
        MyVar INTEGER;
        RetResultSet resultset;
    BEGIN
         MyVar := 10;
        
         RetResultSet:= (CALL MyDb.MySchema.MyProc(:MyVar));
         return  table(RetResultSet);
    END;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文