当前位置: 首页 > 知识库问答 >
问题:

雪花动态存储过程

庾奇思
2023-03-14
  • 1选定列的参数(选定的筛选器/下拉属性或从UI发送的列名)
  • 2 dynamic where子句的参数,用于为点1
  • 中选择的类似下拉列表值准备

从视图中获取数据,并以这种方式检索结果

CREATE OR REPLACE PROCEDURE database.schema.sp_sample(dynamic_columns VARCHAR, dynamic_where_clause VARCHAR)
RETURNS VARCHAR
LANGUAGE JAVASCRIPT
EXECUTE AS CALLER
AS 
$$
rs="Success";
try {
retrieve_queries_sql = `SELECT COL_1, COL_2, ${DYNAMIC_COLUMNS} FROM view ${DYNAMIC_WHERE_CLAUSE} GROUP BY COL_1, COL_2, ${DYNAMIC_COLUMNS}`;
var stmt = snowflake.createStatement( {sqlText: retrieve_queries_sql, binds:[DYNAMIC_COLUMNS, DYNAMIC_WHERE_CLAUSE, DYNAMIC_COLUMNS]} );
var rs = stmt.execute();
}
catch(err) {
rs= "Failed Message: "+err.message;
}
return rs;
$$;

CALL "database"."schema"."sp_sample"('COL_3','WHERE COL_3\=\'somevalue\'');
SELECT * FROM TABLE(RESULT_SCAN(LAST_QUERY_ID(-2)));

注意:在这一点上没有要求显示特定于某个用户的数据。同样忽略上面代码中的参数插值部分

是否存在任何数据完整性问题,不同的用户将看不到UI上更新的值(为了提供更多的上下文,从此过程中的视图中提取数据,并且该视图数据在应用程序活动/活动期间不会更改-所有批处理将在用户访问应用程序之前完成)。因此,当用户访问应用程序时,数据已经准备就绪,预计不会对数据进行任何更改

有人建议动态过程会引起数据完整性问题,用户将无法看到更新的数据,为了解决数据完整性问题,预聚合视图(意味着数据在某些级别上预聚合并保存在不同的视图中)将有所帮助,数据一致性将更好。

我想了解预聚合视图的建议如何帮助解决数据完整性问题(首先,为什么会有数据完整性问题),因为过程中所做的是从一个视图中获取数据(动态聚合的),即使在后一种方法中,我们仍然创建许多其他视图(预聚合的),最终在这两种情况下,我们都从视图中获取数据,后一种方法如何不能引起数据完整性问题?

请分享一些反馈,如果提供的观点有任何意义。想知道更好的意见

共有1个答案

江瀚昂
2023-03-14
  1. 没有,没有顾虑。LAST_QUERY_ID返回当前会话中指定查询的ID。

https://docs.snowflake.com/en/sql-reference/functions/last_query_id.html

https://docs.snowflake.com/en/sql-reference/transactions.html#隔离级别

 类似资料:
  • 创建过程GetLastUpdateDate()以$$的形式返回布尔语言javascript

  • 关于如何使用传递的参数的任何线索。

  • 我正在重新设计我们公司的API以使用来自SQL Server的Snowflake。我们的第一个直接障碍是现有的SQL Server存储过程返回表输出,而Snowflake不允许这种类型的输出。我不想完全重新设计一切,所以我在想: null 我知道对于编码来说,使用python这样的东西会容易得多,但是,我不想维护另一个python应用程序,只用于在Snowflake中检索数据。

  • 我是新来的雪花,所以请原谅我。我试图做一件非常简单的事情--通过文字指定列名,但却得到sql编译错误

  • Snowflake文档指出,VARCHAR列仅限于16 MB未压缩的https://docs.Snowflake.net/manuals/sql-reference/data-types-text.html#data-types-for-text-strings Snowflake文档指出,VARCHAR数据会自动转换为JavaScript字符串数据类型。 https://docs.Snowfla