我在雪花上做POC,探索这个产品。
我有一个问题:在SQL Server中,我们有400-500个存储过程,这些存储过程是从SSRS报告调用的。这些存储过程本质上很简单,如下所示:
CREATE PROCEDURE [dbo].[SQL_Stored_Procedure]
(@StartDate DATETIME,
@EndDate DATETIME)
AS
BEGIN
SELECT *
FROM MYTable
WHERE Cloumn_Date BETWEEN @StartDate AND @EndDate;
END
EXEC [dbo].[SQL_Stored_Procedure] @StartDate = Getdate()-1, @EndDate=Getdate()
对于某些用例,UDTFs可能是更好的选择,但是您可以使用javascript存储过程来运行SQL语句。这并不是非常漂亮,我希望他们能尽快将SQL作为一种语言选项添加到存储过程中。下面是上面通用查询的一个示例。
CREATE OR REPLACE PROCEDURE STORED_PROCEDURE_NAME(STARTDATE VARCHAR, ENDDATE VARCHAR)
RETURNS VARIANT
LANGUAGE JAVASCRIPT
EXECUTE AS OWNER
AS
$$
query = `SELECT column1, column2
FROM MYTable
WHERE Cloumn_Date BETWEEN '` + STARTDATE + `' AND '` + ENDDATE + `';`
resultset = snowflake.createStatement({sqlText: query}).execute()
//extract the results of the query into a javascript object
output = []
while (resultset .next()) {
output.push(output.getColumnValue(1), output.getColumnValue(2));
}
//put the output of the query into a JSON object which Snowflake can translate
// into a "variant" and can be used downstream
json = { "result" : output };
return json;
$$;
//I've found it easiest to work with strings because the data type conversions
//between snowflake and javascript and back again can be tricky
CALL STORED_PROCEDURE_NAME(CURRENT_DATE::STRING, DATEADD( DAY, 1, CURRENT_DATE)::STRING);
SELECT * FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()));
我发现这对于执行转换和加载的过程非常有用,但到目前为止,我只手动迁移了一小部分查询,并且需要对其中一些查询进行一些javascript调整和定制。
这将是一个有点棘手的设置,以自动迁移数百个查询,但上面的javascript可以得到更多的改进和推广(我不是javascript专家)。例如,要动态处理任何列列表而无需手动编辑:https://docs.snowflake.net/manuals/sql-reference/stored-procedures-usage.html#return-a-result-set
下面是用于在下游使用结果的额外RESULT_SCAN步骤的文档:https://docs.snowflake.net/manuals/sql-reference/stored-procedures-usage.html#using-result-scan-to-retrieve-the-result-from-a-stored-procedure
问题内容: 我很了解Java。哪些警告和资源将帮助我尽可能轻松地跨过另一端(C#)。 问题答案: 最大提示:请使用go一词中的.NET命名约定。这样,您将不断被提示使用的是哪种语言。(听起来很愚蠢,但这确实有帮助。)尽可能多地接受该语言的习惯用法。 有许多专门针对您所处地区的人们的书籍-在亚马逊上搜索“ C#for Java”,您将获得很多成功。值得 仔细 阅读以确保您不认为C#和Java中的功能
Angular 是使用 TypeScript 构建的,并且支持向 Angular 提供元信息的装饰器。 TypeScript 的装饰器会让语法感觉更加“自然”,尽管有可能使用 Angular 没有的功能。
迁移cache分页 仓库地址: cache 安装 composer require illuminate/cache 暂时实现 redis方式 还需安装 composer require illuminate/redis composer require predis/predis //个人比较喜欢predis 启动predis function frameInitialized() {
您可能已经知道,JFrog宣布Bintray、JCenter、GoCenter和ChartCenter将于今年5月1日关闭。由于JCenter作为Android项目中的主要repo广泛用于各种依赖项,因此应该使用替代repo,我使用了mavenCentral因为它是最流行和被广泛接受的。 它按预期工作,但我只想从JCenter下载realm和其他缺少的东西,直到它完全迁移。然后看起来是这样的: 然
迁移包括以下部分: MIP 核心库迁移 将站点引用的 mip.js 和 mip.css 版本由 1.0 修改为 2.0。MIP 核心库 2.0 版本完全兼容 1.0 版本,开发者可放心升级。具体做法如下: mip.js 文件迁移 将站点中的所有如下引用: <script src="https://c.mipcdn.com/static/v1/mip.js"></script> 改为: <scrip
问题内容: 我们的Oracle数据库遇到了严重的性能问题,我们想尝试将其迁移到基于MySQL的数据库(直接使用MySQL,或者最好是Infobright)。 问题是,在我们实际上不知道新数据库的所有功能是否符合我们的需求之前,我们需要让旧系统和新系统至少重叠数周(如果不是几个月)。 因此,这是我们的情况: Oracle数据库由多个表组成,每百万行。白天,实际上有成千上万的语句,我们无法停止迁移。