Perl言語シミュレート行関数

この例では、次のファイル名を使用する: 'TimeSplit.pm

コード

package TimeSplit;
use nzae::Ae;
use strict;
use autodie;
our @ISA = qw(nzae::Ae);
my $ae = TimeSplit->new();
$ae->run();
sub _getFunctionResult(@)
{
my $self = shift;
my @currentTime = @_;
my @time = split(/:/, $currentTime[0]);
return (@time);
}
1;

デプロイメント

スクリプトをデプロイする:
$NZ_EXPORT_DIR/ae/utilities/bin/compile_ae --language perl --version 3 \
--template deploy TimeSplit.pm

登録

NetezzaSQLには行関数の概念が組み込まれていないので(Perlのアダプタインターフェイスにはありますが)、この関数は入力行ごとに1行しか出力しないにもかかわらず、テーブル関数として登録されます:
$NZ_EXPORT_DIR/ae/utilities/bin/register_ae --language perl --version 3 \
--template udtf --exe TimeSplit.pm --sig "time_split(varchar(20))" \
--return "table(hour varchar(2), minute varchar(2), second varchar(2))"

実行中

nzsqlでクエリを実行する:
SELECT * FROM TABLE WITH FINAL(time_split('13:22:47'));
HOUR | MINUTE | SECOND
-----------+--------------+--------
13 | 22 | 47