Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Netezza-在多个查询中以干燥的方式重用公共sql代码?_Sql_Netezza - Fatal编程技术网

Netezza-在多个查询中以干燥的方式重用公共sql代码?

Netezza-在多个查询中以干燥的方式重用公共sql代码?,sql,netezza,Sql,Netezza,Netezza查询是否可能包含sql文件(其中包含特定的sql代码),或者这不是正确的使用方式 这里有一个例子 我有一些常见的sql代码(比如说common.sql),它创建了一些临时表,需要在多个其他查询中使用(比如说analysis1.sql,analysis2.sql等)。从代码管理的角度来看,如果在许多其他查询中重复使用common.sql中的代码,那么维护起来会非常困难。是否有一种DRY方法可以做到这一点-从其他查询中调用重用的代码common.sql?包括sql文件不是正确的方法。如

Netezza查询是否可能包含sql文件(其中包含特定的sql代码),或者这不是正确的使用方式

这里有一个例子


我有一些常见的sql代码(比如说
common.sql
),它创建了一些临时表,需要在多个其他查询中使用(比如说
analysis1.sql
analysis2.sql
等)。从代码管理的角度来看,如果在许多其他查询中重复使用
common.sql
中的代码,那么维护起来会非常困难。是否有一种
DRY
方法可以做到这一点-从其他查询中调用重用的代码
common.sql

包括sql文件不是正确的方法。如果您希望继续这样做,您可以使用预处理器(如cpp或甚至php)来为您组装文件,并有一个生成过程来生成完成的文件

但是,从可维护性的角度来看,最好为可重用内容创建视图和函数。请注意,这可能会造成优化障碍,因此大型查询通常是解决方法。

我同意,视图、函数(表值,如果需要)或更可能是:存储过程是解决方法。 我们很幸运地让存储过程根据正在处理的表上的输入参数和元数据动态生成复杂但可重复的代码模式

举个例子:所有表都有一个固定名称为UBK_U2;[tablename]的“唯一约束”(它不是真正唯一的,但这并不重要,因为它在Netezza中没有强制执行) UBK用作存储过程的“信号”,用于标识经典“kimball样式”类型2维表的BusinessKey列。 然后,SP只需提供目标表的名称和包含所有相同列名和数据类型的“阶段”表,即可将“传入”行应用于目标表

其他示例可能是一个SP,它接受一个表名和三个参数,每个参数都有一个“string,of,columns”,并对第一个参数中的列使用group by进行“excel样式透视”,并将第二个参数用作“select distinct”,为透视列生成新列名,在第三个参数中的列上做一个“sum”输入到您指定名称的某个目标表中

你能跟着我吗

我认为nzsql命令行工具可能能够实现“包含”,但强大的“构建块存储过程”与perl/python和/或ETL工具的组合很可能会提供更好的选择