SnowConvert: Teradataの関数参照

QUARTERNUMBER_OF_YEAR_UDF

定義

Teradataの QUARTERNUMBER_OF_YEAR_UDF(date, 'ISO') 関数と同様に、 ISO 暦年に従って、指定された日付の四半期数を計算する UDF (ユーザー定義関数)。

PUBLIC.QUARTERNUMBER_OF_YEAR_UDF(INPUT TIMESTAMP_TZ)
Copy

パラメーター

INPUT 時間STAMP_TZ

四半期の数を抽出する方法。

戻り値

日付がその年のどの四半期にあたるかを示す整数(1~4)。

使用例

入力:

SELECT PUBLIC.QUARTERNUMBER_OF_YEAR_UDF(DATE '2022-01-01'),
PUBLIC.QUARTERNUMBER_OF_YEAR_UDF(DATE '2025-12-31');
Copy

出力:

4, 1
Copy

DAYNUMBER_OF_YEAR_UDF

定義

指定されたタイムスタンプの年内の日数を返します。日数は1から365(うるう年は366)までです。この関数は、 DAYNUMBER_OF_YEAR(DATE, 'ISO') と同じ動作をします。

PUBLIC.DAYNUMBER_OF_YEAR_UDF(INPUT TIMESTAMP_TZ)
Copy

パラメーター

INPUT TIMESTAMP_TZ

日付からその年の日数を取得します。

戻り値

1から371までの整数。

入力:

SELECT DAYNUMBER_OF_YEAR(CURRENT_DATE,'ISO');
Copy

出力:

SELECT
PUBLIC.DAYNUMBER_OF_YEAR_UDF(CURRENT_DATE());
Copy

SUBSTR_UDF (STRING, FLOAT)

警告

このユーザー定義関数(UDF)は2つのパラメーターを受け付けます(オーバーロード関数)。

定義

開始位置と長さを指定して、指定した文字列からテキストの一部を取り出します。

PUBLIC.SUBSTR_UDF(BASE_EXPRESSION STRING, START_POSITION FLOAT)
Copy

パラメーター

BASE_EXPRESSION は文字列パラメーターで、操作の基本式を定義します。

部分を抽出するためのソーステキスト。

START_POSITION - 入力文字列の開始位置を指定する浮動小数点数。

文字列から文字の抽出を開始する位置。

戻り値

含める必要のある部分文字列。

移行例

入力:

SELECT SUBSTRING('Hello World!' FROM -2);
Copy

出力:

SELECT
PUBLIC.SUBSTR_UDF('Hello World!', -2);
Copy

CHKNUM_UDF

定義

文字列が有効な数値を含んでいるかどうかを検証します。

PUBLIC.CHKNUM_UDF(NUM STRING);
Copy

パラメーター

NUM 数値を表す文字列

検証が必要な文字列。

戻り値

入力パラメーターが有効な数値の場合は、1を返します。入力が有効な数値でない場合(テキストや特殊文字など)は、0を返します。

SELECT CHKNUM('1032');
Copy

出力:

SELECT
PUBLIC.CHKNUM_UDF('1032');
Copy

TD_YEAR_END_UDF

定義

指定した日付の最終日を返す、Teradataの TD_YEAR_END(DATE) または TD_YEAR_END(DATE, 'COMPATIBLE') 関数を再現する UDF (ユーザー定義関数)。

PUBLIC.TD_YEAR_END_UDF(INPUT date)
Copy

パラメーター

INPUT DATE

現在の年の最終日を取得します。

戻り値

12月の最終日(12月31日)。

使用例

入力:

SELECT  PUBLIC.TD_YEAR_END_UDF(DATE '2022-01-01'),
PUBLIC.TD_YEAR_END_UDF(DATE '2022-04-12');
Copy

出力:

2022-12-31, 2022-12-31
Copy

PERIOD_OVERLAPS_UDF

定義

OVERLAPS OPERATOR の機能を実装するユーザー定義関数(UDF)。この関数は2つ以上の期間を比較し、重複する期間があるかどうかを判定します。

PERIOD_OVERLAPS_UDF(PERIODS ARRAY)
Copy

パラメーター

PERIODS は期間を含む配列です。

比較されるすべての期間式。

戻り値

セット内のすべての期間に少なくとも1つの共通点がある場合は(重複していれば) TRUE、それ以外の場合は FALSE。

移行例

SELECT
	PERIOD(DATE '2009-01-01', DATE '2010-09-24')
	OVERLAPS
	PERIOD(DATE '2009-02-01', DATE '2009-06-24');
Copy

出力:

SELECT
	PUBLIC.PERIOD_OVERLAPS_UDF(ARRAY_CONSTRUCT(PUBLIC.PERIOD_UDF(DATE '2009-01-01', DATE '2010-09-24') !!!RESOLVE EWI!!! /*** SSC-EWI-TD0053 - SNOWFLAKE DOES NOT SUPPORT THE PERIOD DATATYPE, ALL PERIODS ARE HANDLED AS VARCHAR INSTEAD ***/!!!, PUBLIC.PERIOD_UDF(DATE '2009-02-01', DATE '2009-06-24') !!!RESOLVE EWI!!! /*** SSC-EWI-TD0053 - SNOWFLAKE DOES NOT SUPPORT THE PERIOD DATATYPE, ALL PERIODS ARE HANDLED AS VARCHAR INSTEAD ***/!!!)) !!!RESOLVE EWI!!! /*** SSC-EWI-TD0053 - SNOWFLAKE DOES NOT SUPPORT THE PERIOD DATATYPE, ALL PERIODS ARE HANDLED AS VARCHAR INSTEAD ***/!!!;
Copy

WEEK_NUMBER_OF_QUARTER_COMPATIBLE_UDF

定義

指定した日付が現在の四半期のどの週番号に該当するかを計算します。

PUBLIC.WEEK_NUMBER_OF_QUARTER_COMPATIBLE_UDF(INPUT TIMESTAMP_TZ)
Copy

パラメーター

INPUT TIMESTAMP_TZ

四半期のどの週に該当するかを計算するために使用される日付。

戻り値

日付が四半期のどの週にあたるかを示す整数(1~13)。

使用例

入力:

SELECT WEEK_NUMBER_OF_QUARTER_COMPATIBLE_UDF(DATE '2022-05-01', 'COMPATIBLE'),
WEEK_NUMBER_OF_QUARTER_COMPATIBLE_UDF(DATE '2022-07-06', 'COMPATIBLE')
Copy

出力:

5, 1
Copy

ROMAN_NUMERALS_MONTH_UDF

定義

日付を対応する月のローマ数字に変換します。

PUBLIC.ROMAN_NUMERALS_MONTH_UDF(INPUT TIMESTAMP_TZ)
Copy

パラメーター

INPUT TIMESTAMP_TZ

月を抽出する入力日付。

戻り値

varchar は、指定した日付から抽出した月を表します。

使用例

入力:

SELECT PUBLIC.ROMAN_NUMERALS_MONTH_UDF(DATE '2021-10-26');
Copy

出力:

'X'
Copy

TD_YEAR_BEGIN_UDF

定義

TD_YEAR_BEGIN または TD_YEAR_BEGIN(DATE, 'COMPATIBLE') の動作を模倣し、指定された日付の年の元日を返すユーザー定義関数(UDF)。

PUBLIC.TD_YEAR_BEGIN_UDF(INPUT DATE)
Copy

パラメーター

INPUT DATE

現在の年の元日を取得します。

戻り値

1月1日。

使用例

入力:

SELECT TD_YEAR_BEGIN(DATE '2022-01-01', 'COMPATIBLE'),
TD_YEAR_BEGIN(DATE '2022-04-12');
Copy

出力:

2022-01-01, 2022-01-01
Copy

FULL_MONTH_NAME_UDF

定義

月の完全な名前を、すべて大文字、すべて小文字、または初めを大文字にした形式から選択して返します。

PUBLIC.FULL_MONTH_NAME_UDF(INPUT TIMESTAMP_TZ, RESULTCASE VARCHAR)
Copy

パラメーター

INPUT TIMESTAMP_TZ

日付形式は月名を表示する必要があります。

RESULTCASE VARCHAR

結果を表示する形式。有効なオプションは「uppercase」、「lowercase」、または「firstOnly」です。

戻り値

月の完全な名前を含む varchar を返します。

使用例

入力:

SELECT PUBLIC.FULL_MONTH_NAME_UDF(DATE '2021-10-26', 'uppercase');
SELECT PUBLIC.FULL_MONTH_NAME_UDF(DATE '2021-10-26', 'lowercase');
SELECT PUBLIC.FULL_MONTH_NAME_UDF(DATE '2021-10-26', 'firstOnly');
Copy

出力:

OCTOBER
october
October
Copy

TO_BYTES_HEX_UDF

定義

HEX関数は、10進数(基数10)を16進数(基数16)に変換します。

TO_BYTES_HEX_UDF(INPUT FLOAT)
Copy

パラメーター

INPUT は浮動小数点数のパラメーターです。

16進数形式に変換される数値。

戻り値

16進数値を表す文字列。

使用例

入力:

SELECT TO_BYTES_HEX_UDF('448');
Copy

出力:

01c0
Copy

PERIOD_INTERSECT_UDF

定義

P_INTERSECT 演算子を再現するユーザー定義関数(UDF)。この関数は2つ以上の期間を比較して重なる部分を識別し、その間の共通の時間間隔を返します。

ソース関数の詳細については、 ドキュメント をご参照ください。

PERIOD_INTERSECT_UDF(PERIODS ARRAY)
Copy

パラメーター

PERIODS は期間を含む配列です。

比較が必要なすべての期間式。

戻り値

2つの期間が交差する、または共通の日付を持つ区間。

移行例

入力:

SELECT
	PERIOD(DATE '2009-01-01', DATE '2010-09-24')
	P_INTERSECT
	PERIOD(DATE '2009-02-01', DATE '2009-06-24');
Copy

出力:

SELECT
	PUBLIC.PERIOD_INTERSECT_UDF(ARRAY_CONSTRUCT(PUBLIC.PERIOD_UDF(DATE '2009-01-01', DATE '2010-09-24') !!!RESOLVE EWI!!! /*** SSC-EWI-TD0053 - SNOWFLAKE DOES NOT SUPPORT THE PERIOD DATATYPE, ALL PERIODS ARE HANDLED AS VARCHAR INSTEAD ***/!!!, PUBLIC.PERIOD_UDF(DATE '2009-02-01', DATE '2009-06-24') !!!RESOLVE EWI!!! /*** SSC-EWI-TD0053 - SNOWFLAKE DOES NOT SUPPORT THE PERIOD DATATYPE, ALL PERIODS ARE HANDLED AS VARCHAR INSTEAD ***/!!!)) !!!RESOLVE EWI!!! /*** SSC-EWI-TD0053 - SNOWFLAKE DOES NOT SUPPORT THE PERIOD DATATYPE, ALL PERIODS ARE HANDLED AS VARCHAR INSTEAD ***/!!!;
Copy

INTERVAL_TO_SECONDS_UDF

定義

時間間隔を秒に変換します。

PUBLIC.INTERVAL_TO_SECONDS_UDF
(INPUT_PART VARCHAR(30), INPUT_VALUE VARCHAR())
Copy

パラメーター

INPUT_PART は、入力データを格納する VARCHAR タイプの変数です。

秒に変換される時間の期間。

INPUT_VALUE VARCHAR - テキストデータを受け付ける入力パラメーター。 - テキストデータを受け付ける入力パラメーター。

変換する時間間隔のタイプ。例としては、「DAY」や「DAY TO HOUR」などの有効な間隔タイプがあります。

戻り値

時間間隔を秒単位で表す10進数。

TIMESTAMP_ADD_UDF

定義

2つのタイムスタンプを1つの値に結合します。

PUBLIC.TIMESTAMP_ADD_UDF(FIRST_DATE TIMESTAMP_LTZ, SECOND_DATE TIMESTAMP_LTZ)
Copy

パラメーター

FIRST_DATE は、日付と時刻の両方の情報を含むタイムスタンプフィールドで、タイムゾーンをサポートしています(TIMESTAMP_LTZ)

これが追加された最初の日付。

SECOND_DATE はタイムゾーン情報を含むタイムスタンプ列です(TIMESTAMP_LTZ)(ローカルタイムゾーンを含むタイムスタンプ)

アイテムが2回目に追加された日付。

戻り値

入力された日付パラメーターを組み合わせて生成されたタイムスタンプ。

INTERVAL_MULTIPLY_UDF

定義

時間間隔の乗算を実行するユーザー定義関数(UDF)。

PUBLIC.INTERVAL_MULTIPLY_UDF
(INPUT_PART VARCHAR(30), INPUT_VALUE VARCHAR(), INPUT_MULT INTEGER)
Copy

パラメーター

INPUT_PART は、入力データを格納する VARCHAR タイプの変数です。

乗算に使用する値。「YEAR TO MONTH」として指定します。

INPUT_VALUE VARCHAR

乗算する間隔。

INPUT_MULT は整数パラメーターで、入力値の乗数の役割を果たします。

乗算操作で使用される数値。

戻り値

出力は、時間間隔に数値を乗じて計算されます。

移行例

入力:

SELECT INTERVAL '6-10' YEAR TO MONTH * 8;
Copy

出力:

SELECT
PUBLIC.INTERVAL_MULTIPLY_UDF('YEAR TO MONTH', '6-10', 8);
Copy

TD_DAY_OF_WEEK_UDF

定義

Teradataの TD_DAY_OF_WEEK 機能を再現するユーザー定義関数(UDF)。オリジナルのTeradata関数の詳細については、 こちら をご参照ください。

PUBLIC.TD_DAY_OF_WEEK_UDF(INPUT TIMESTAMP_TZ)
Copy

パラメーター

INPUT TIMESTAMP_TZ

曜日を取得する日付。

戻り値

曜日を表す1から7までの整数。ここで、

  • 1 = 日曜日

  • 2 = 月曜日

  • 3 = 火曜日

  • 4 = 水曜日

  • 5 = 木曜日

  • 6 = 金曜日

  • 7 = 土曜日

移行例

入力:

SELECT td_day_of_week(DATE '2022-03-02');
Copy

出力:

SELECT
PUBLIC.TD_DAY_OF_WEEK_UDF(DATE '2022-03-02');
Copy

ISO_YEAR_PART_UDF

定義

指定された日付から ISO 暦年を計算します。残す桁数を指定すると、結果を短くすることができます。

PUBLIC.ISO_YEAR_PART_UDF(INPUT TIMESTAMP_TZ, DIGITS INTEGER)
Copy

パラメーター

INPUT TIMESTAMP_TZ

ISO 年を抽出する日付。

DIGITS 表示する最大桁数を表す整数。

出力に必要な小数点以下の桁数。

戻り値

指定した日付の ISO 年を表す文字列(varchar)を返します。

使用例

入力:

SELECT PUBLIC.ISO_YEAR_PART_UDF(DATE '2021-10-26', 3);
SELECT PUBLIC.ISO_YEAR_PART_UDF(DATE '2021-10-26', 2);
SELECT PUBLIC.ISO_YEAR_PART_UDF(DATE '2021-10-26', 1);
Copy

出力:

'021'
'21'
'1'
Copy

DIFF_TIME_PERIOD_UDF

定義

指定した時間単位パラメーターに基づいて、2つの日付間の時間間隔を計算します。

PUBLIC.DIFF_TIME_PERIOD_UDF(TIME STRING, PERIOD VARCHAR(50))
Copy

パラメーター

TIME は、時、分、秒、および秒の端数で時間値を格納するために使用されるデータ型です。値は、文字列として格納されます。

アンカーポイントとして使用されるタイムスタンプ。

PERIOD 期間を表すテキストフィールド(VARCHAR)

拡張に使用される期間列。

戻り値

2つの日付間の時間間隔を示す数値。

使用例

入力:

SELECT DIFF_TIME_PERIOD_UDF('SECONDS','2022-11-26 10:15:20.000*2022-11-26 10:15:25.000');
Copy

出力:

5
Copy

WEEK_NUMBER_OF_QUARTER_ISO_UDF

定義

ISO カレンダー標準を使用して、日付が四半期内のどの週番号に該当するかを計算します。この関数は、Teradataの WEEKNUMBER_OF_QUARTER(DATE, 'ISO') 関数と同じ動作をします。

PUBLIC.WEEK_NUMBER_OF_QUARTER_ISO_UDF(INPUT TIMESTAMP_TZ)
Copy

パラメーター

INPUT TIMESTAMP_TZ

四半期のどの週に該当するかを計算するために使用される日付。

戻り値

四半期のどの週(1~13)を表すかを示す整数。

使用例

入力:

SELECT WEEKNUMBER_OF_QUARTER(DATE '2022-05-01', 'ISO'),
WEEKNUMBER_OF_QUARTER(DATE '2022-07-06', 'ISO')
Copy

出力:

SELECT
PUBLIC.SUBSTR_UDF('Hello World!', -2);
Copy

NVP_UDF

定義

Teradataの NVP 関数 と同じ機能があります。

NVP_UDF(INSTRING VARCHAR, NAME_TO_SEARCH VARCHAR, NAME_DELIMITERS VARCHAR, VALUE_DELIMITERS VARCHAR, OCCURRENCE FLOAT)
Copy

パラメーター

INSTRING VARCHAR

名前と値のペアは、名前とそれに対応する値で構成されるデータ要素です。

タイプ VARCHAR の NAME_TO_SEARCH

名前と値のペア(NVP)関数内で検索に使用される名前パラメーター。

NAME_DELIMITERS VARCHAR

名前と対応する値を区切る文字。

VALUE_DELIMITERS VARCHAR

名前と対応する値を接続するための文字。

OCCURRENCE が何回発生したかを示す浮動小数点数を表します

検索する一致パターンの数。

戻り値

入力文字列と同じデータを含む文字列(VARCHAR)。

使用例

入力:

SELECT PUBLIC.NVP_UDF('entree=-orange chicken&entree+.honey salmon', 'entree', '&', '=- +.', 1);
Copy

出力:

orange chicken
Copy

MONTH_SHORT_UDF

定義

月の略称(3文字)を、大文字、小文字、または初めを大文字の選択した形式で返します。例: 「Jan」、「jan」、または「JAN」。

PUBLIC.MONTH_SHORT_UDF(INPUT TIMESTAMP_TZ, RESULTCASE VARCHAR)
Copy

パラメーター

INPUT TIMESTAMP_TZ

省略された月名が表示されるようにフォーマットされた日付。

RESULTCASE VARCHAR

使用する大文字と小文字の形式。有効なオプションは次のとおりです。

  • 「uppercase」: テキストをすべて大文字に変換します

  • 「lowercase」: テキストをすべて小文字に変換します

  • 「firstOnly」: 最初の文字だけを大文字にします

戻り値

月名の省略形(「Jan」、「Feb」など)を含む varchar

使用例

入力:

SELECT PUBLIC.MONTH_SHORT_UDF(DATE '2021-10-26', 'uppercase');
SELECT PUBLIC.MONTH_SHORT_UDF(DATE '2021-10-26', 'lowercase');
SELECT PUBLIC.MONTH_SHORT_UDF(DATE '2021-10-26', 'firstOnly');
Copy

出力:

OCT
oct
Oct
Copy

DATE_TO_INT_UDF

定義

日付値を数値表現に変換する UDF (ユーザー定義関数)。Teradataの DATE-TO-NUMERIC 関数と類似しています。

PUBLIC.DATE_TO_INT_UDF(DATE_TO_CONVERT DATE)
Copy

パラメーター

DATE_TO_CONVERT は、変換が必要な日付値を表します

日付値を整数形式に変換します。

戻り値

日付値を数値形式で返します。

入力:

SELECT mod(date '2015-11-26', 5890), sin(current_date);

CREATE TABLE SAMPLE_TABLE
(
    VARCHAR_TYPE VARCHAR,
    CHAR_TYPE CHAR(11),
    INTEGER_TYPE INTEGER,
    DATE_TYPE DATE,
    TIMESTAMP_TYPE TIMESTAMP,
    TIME_TYPE TIME,
    PERIOD_TYPE PERIOD(DATE)
);

REPLACE VIEW SAMPLE_VIEW
AS
SELECT
CAST(DATE_TYPE AS SMALLINT),
CAST(DATE_TYPE AS DECIMAL),
CAST(DATE_TYPE AS NUMBER),
CAST(DATE_TYPE AS FLOAT),
CAST(DATE_TYPE AS INTEGER)
FROM SAMPLE_TABLE;
Copy

出力:

SELECT
mod(PUBLIC.DATE_TO_INT_UDF(date '2015-11-26'), 5890),
sin(PUBLIC.DATE_TO_INT_UDF(CURRENT_DATE()));

CREATE TABLE PUBLIC.SAMPLE_TABLE
(
    VARCHAR_TYPE VARCHAR,
    CHAR_TYPE CHAR(11),
    INTEGER_TYPE INTEGER,
    DATE_TYPE DATE,
    TIMESTAMP_TYPE TIMESTAMP,
    TIME_TYPE TIME,
    PERIOD_TYPE VARCHAR(24) COMMENT 'PERIOD(DATE)' /*** MSC-WARNING - MSCEWI1036 - PERIOD DATA TYPE "PERIOD(DATE)" CONVERTED TO VARCHAR ***/
);

CREATE OR REPLACE VIEW PUBLIC.SAMPLE_VIEW
AS
SELECT
PUBLIC.DATE_TO_INT_UDF(DATE_TYPE),
PUBLIC.DATE_TO_INT_UDF(DATE_TYPE),
PUBLIC.DATE_TO_INT_UDF(DATE_TYPE),
PUBLIC.DATE_TO_INT_UDF(DATE_TYPE),
PUBLIC.DATE_TO_INT_UDF(DATE_TYPE)
FROM PUBLIC.SAMPLE_TABLE;
Copy

PERIOD_UDF

定義

P_INTERSECT 演算子を再現するユーザー定義関数(UDF)。この関数は2つ以上の期間を比較して重なる部分を識別し、その間の共通の時間間隔を返します。

期間の開始値と終了値の文字列表現を作成します(TIMESTAMP の場合は、日付と時刻情報の両方を格納するデータ型を表します。 TIME、または DATE の場合は、時刻情報を含まないカレンダーの日付(年、月、日)を格納するために使用されるデータ型です)。この関数は、Teradataの期間値コンストラクター関数をエミュレートします。出力文字列は、Snowflakeのデフォルトの PERIOD 値の形式に従います。出力の精度を調整するには、以下の方法があります。

  • セッションパラメーター timestamp_output_format を変更します

  • この UDF の3パラメーターバージョンを使用します

ソース関数の詳細については、 Teradataドキュメント をご参照ください。

PERIOD_UDF(D1 TIMESTAMP_NTZ, D2 TIMESTAMP_NTZ)
PERIOD_UDF(D1 DATE, D2 DATE)
PERIOD_UDF(D1 TIME, D2 TIME)
PERIOD_UDF(D1 TIMESTAMP_NTZ, D2 TIMESTAMP_NTZ, PRECISIONDIGITS INT)
PERIOD_UDF(D1 TIME, D2 TIME, PRECISIONDIGITS INT)
PERIOD_UDF(D1 TIMESTAMP_NTZ)
PERIOD_UDF(D1 DATE)
PERIOD_UDF(D1 TIME)
Copy

パラメーター

TIMESTAMP

TimeStamp データ型は、日付と時刻の両方の要素を含む特定の時点を表します。

TIME

Timeデータ型は、日付要素のない特定の時刻を表します。

DATE

Dateデータ型は、時間要素を含まないカレンダーの日付を表します。

PRECISIONDIGITS は、数値に表示する小数点以下の桁数を指定します。

時刻形式で表示する桁数。

戻り値

PERIOD タイプの値の文字列表現を返します。

使用例

入力:

SELECT
PERIOD_UDF('2005-02-03'),
PERIOD_UDF(date '2005-02-03'),
PERIOD_UDF(TIMESTAMP '2005-02-03 12:12:12.340000'),
PERIOD_UDF(TIMESTAMP '2005-02-03 12:12:12.340000');
Copy

出力:

2005-02-03*2005-02-04,
2005-02-03*2005-02-04,
2005-02-03 12:12:12.340000*2005-02-03 12:12:12.340001,
2005-02-03 12:12:12.340000*2005-02-03 12:12:12.340001
Copy

DAYNAME_LONG_UDF (TIMESTAMP_TZ, VARCHAR)

警告

これはユーザー定義関数(UDF)で、 2つの 異なるタイプのパラメーター を受け付けます。

定義

平日の完全な曜日名を、大文字、小文字、または初めを大文字から選択した形式(例: 「MONDAY」、「monday」、または「Monday」)で返します。

PUBLIC.DAYNAME_LONG_UDF(INPUT TIMESTAMP_TZ, RESULTCASE VARCHAR)
Copy

パラメーター

INPUT TIMESTAMP_TZ

曜日を決定する入力日付。

RESULTCASE VARCHAR

予想される成果または実証されるシナリオ。

戻り値

曜日の完全な名前を含む文字列を返します。

使用例

入力:

SELECT PUBLIC.DAYNAME_LONG_UDF(DATE '2021-10-26', 'uppercase');
SELECT PUBLIC.DAYNAME_LONG_UDF(DATE '2021-10-26', 'lowercase');
SELECT PUBLIC.DAYNAME_LONG_UDF(DATE '2021-10-26', 'firstOnly');
Copy

出力:

'TUESDAY'
'tuesday'
'Tuesday'
Copy

TD_DAY_OF_WEEK_COMPATIBLE_UDF

定義

タイムスタンプを処理し、そのタイムスタンプがどの曜日にあたるかを判定します。この関数は、 DAYNUMBER_OF_WEEK(DATE, 'COMPATIBLE') と動作が同じです。

PUBLIC.TD_DAY_OF_WEEK_COMPATIBLE_UDF(INPUT TIMESTAMP_TZ)
Copy

パラメーター

INPUT TIMESTAMP_TZ

曜日を決定するために使用される入力日。

戻り値

曜日を表す1から7までの数値を返します。たとえば、1月1日が水曜日であれば、水曜日=1、木曜日=2、金曜日=3、土曜日=4、日曜日=5、月曜日=6、火曜日=7となります。

使用例

入力:

SELECT PUBLIC.TD_DAY_OF_WEEK_COMPATIBLE_UDF(DATE '2022-01-01'),
PUBLIC.TD_DAY_OF_WEEK_COMPATIBLE_UDF(DATE '2023-05-05');
Copy

出力:

1, 6
Copy

JAROWINKLER_UDF

定義

Jaro-Winklerアルゴリズムを使って、2つの文字列がどれだけ似ているかを計算します。このアルゴリズムでは、0(まったく異なる)から1(同一)の間のスコアを与えます。

PUBLIC.JAROWINKLER_UDF (string1 VARCHAR, string2 VARCHAR)
Copy

パラメーター

タイプ VARCHAR の string1

処理するテキスト

タイプ VARCHAR の string2

処理するテキスト

戻り値

関数は0または1を返します。

使用例

入力:

SELECT PUBLIC.JAROWINKLER_UDF('święta', 'swieta')
Copy

出力:

0.770000
Copy

YEAR_BEGIN_ISO_UDF

定義

指定された日付の ISO 年の元日を計算する UDF。これは、 DAYOFWEEKISO 関数と PUBLIC.FIRST_DAY_JANUARY_OF_ISO_UDF を組み合わせて、その年の1月1日に最も近い月曜日を見つけます。この関数は、この月曜日を特定するために、日数を加算または減算します。

PUBLIC.YEAR_BEGIN_ISO_UDF(INPUT DATE)
Copy

パラメーター

INPUT TIMESTAMP_TZ

ISO 暦基準による当年1月1日を表す日付。

戻り値

ISO 暦基準による1年の元日。

使用例

入力:

SELECT  PUBLIC.YEAR_BEGIN_ISO_UDF(DATE '2022-01-01'),
PUBLIC.YEAR_BEGIN_ISO_UDF(DATE '2022-04-12');
Copy

出力:

2021-01-04, 2022-01-03
Copy

YEAR_PART_UDF

定義

日付から年を抽出し、指定した桁数で切り捨てます。

PUBLIC.YEAR_PART_UDF(INPUT TIMESTAMP_TZ, DIGITS INTEGER)
Copy

パラメーター

INPUT TIMESTAMP_TZ

年を抽出する日付。

DIGITS 表示する最大桁数を表す整数。

出力に必要な小数点以下の桁数。

戻り値

指定した日付から年コンポーネントを抽出します。

使用例

入力:

SELECT PUBLIC.YEAR_PART_UDF(DATE '2021-10-26', 3);
SELECT PUBLIC.YEAR_PART_UDF(DATE '2021-10-26', 2);
SELECT PUBLIC.YEAR_PART_UDF(DATE '2021-10-26', 1);
Copy

出力:

'021'
'21'
'1'
Copy

YEAR_WITH_COMMA_UDF

定義

日付から年を抽出し、1桁目と2桁目の間にコンマを追加します。たとえば、西暦が2023年の場合は、「2,023」を返します。

PUBLIC.YEAR_WITH_COMMA_UDF(INPUT TIMESTAMP_TZ)
Copy

パラメーター

INPUT TIMESTAMP_TZ

年を抽出する入力日付。

戻り値

日付の値の年部分を、コンマ区切りのvarchar(テキスト)で返します。

使用例

入力:

SELECT PUBLIC.YEAR_WITH_COMMA_UDF(DATE '2021-10-26');
Copy

出力:

'2,021'
Copy

MONTHS_BETWEEN_UDF

定義

2つの日付間における月数の計算

MONTHS_BETWEEN_UDF(FIRST_DATE TIMESTAMP_LTZ, SECOND_DATE TIMESTAMP_LTZ)
Copy

パラメーター

FIRST_DATE は日付と時刻の両方の情報を含むタイムスタンプ列で、タイムゾーン(TIMESTAMP_LTZ)もサポートしています。

関数がデータ処理を開始する最初の日付。

SECOND_DATE TIMESTAMP_LTZ

カウントを停止する日付を指定します。

戻り値

2つの日付間における月単位の期間。

使用例

入力:

SELECT MONTHS_BETWEEN_UDF('2022-02-14', '2021-02-14');
Copy

出力:

12
Copy

SECONDS_PAST_MIDNIGHT_UDF

定義

指定した時刻の午前0時からの経過秒数を計算します。

PUBLIC.SECONDS_PAST_MIDNIGHT_UDF(INPUT TIME)
Copy

パラメーター

INPUT TIME

この関数は、午前0時(00:00:00)から現在までの経過秒数を計算します。

戻り値

真夜中からの経過秒数を表す varchar 値。

使用例

入力:

SELECT PUBLIC.SECONDS_PAST_MIDNIGHT_UDF(TIME'10:30:45');
Copy

出力:

'37845'
Copy

CHAR2HEXINT_UDF

定義

入力文字列の各文字を16進数で表した文字列を返します。

PUBLIC.CHAR2HEXINT_UDF(INPUT_STRING VARCHAR);
Copy

パラメーター

INPUT_STRING はテキストデータを格納する VARCHAR タイプの変数です。

変換が必要な入力文字列。

戻り値

入力文字列を16進数で表した文字列を返します。

入力:

SELECT CHAR2HEXINT('1234') from t1;
Copy

出力:

SELECT
PUBLIC.CHAR2HEXINT_UDF('1234') from
t1;
Copy

ソース関数からの詳細情報

関数ドキュメントは、 Teradataドキュメント にあります。

INTERVAL_ADD_UDF

定義

UDFs (ユーザー定義関数)は、間隔値と間隔タイプの列参照間の減算操作を扱います。

PUBLIC.INTERVAL_ADD_UDF
(INPUT_VALUE1 VARCHAR(), INPUT_PART1 VARCHAR(30), INPUT_VALUE2 VARCHAR(), INPUT_PART2 VARCHAR(30), OP CHAR, OUTPUT_PART VARCHAR())
Copy

パラメーター

タイプ VARCHAR の INPUT_VALUE1

システムで処理される入力データ。

タイプ VARCHAR の INPUT_PART1

HOUR」のように、使用する時間単位を指定します。

INPUT_VALUE2 は VARCHAR データ型パラメーター。

INTERVAL_HOUR_TYPE」のような参照列の名前。

INPUT_PART2 VARCHAR

参照列に割り当てられたデータ型。

OP 文字

現在分析中の記号または演算子。

OUTPUT_PART VARCHAR

返される値のデータ型。

戻り値

2つの時間間隔を引いた結果を表す varchar 値。

移行例

入力:

CREATE TABLE INTERVAL_TABLE
(
    INTERVAL_YEAR_TYPE INTERVAL YEAR
);

SELECT INTERVAL_YEAR_TYPE - INTERVAL '7' MONTH FROM INTERVAL_TABLE;
Copy

出力:

CREATE OR REPLACE TABLE INTERVAL_TABLE
(
    INTERVAL_YEAR_TYPE VARCHAR(21) !!!RESOLVE EWI!!! /*** SSC-EWI-0036 - INTERVAL YEAR DATA TYPE CONVERTED TO VARCHAR ***/!!!
)
COMMENT = '{"origin":"sf_sc","name":"snowconvert","version":{"major":1, "minor":0},"attributes":{"component":"teradata"}}'
;

SELECT
    PUBLIC.INTERVAL_ADD_UDF(INTERVAL_YEAR_TYPE, 'YEAR', '7', 'MONTH', '-', 'YEAR TO MONTH')
    FROM
    INTERVAL_TABLE;
Copy

DAY_OF_WEEK_LONG_UDF

定義

タイムスタンプを完全な曜日名に変換する(例: 「Monday」、「Tuesday」など)ユーザー定義関数(UDF)。

PUBLIC.DAY_OF_WEEK_LONG_UDF(INPUT_DATE TIMESTAMP)
Copy

パラメーター

INPUT_DATE はタイムスタンプ値を表します

タイムスタンプは完全な曜日名に変換されます(例: 「月曜日」、「火曜日」など)。

戻り値

曜日の英語名。

TD_WEEK_OF_CALENDAR_UDF

定義

ユーザー定義関数(UDF)は、Teradataの TD_WEEK_OF_CALENDAR 関数を直接置き換える役割を果たし、Snowflakeで同じ機能を提供します。

PUBLIC.TD_WEEK_OF_CALENDAR_UDF(INPUT TIMESTAMP_TZ)
Copy

パラメーター

INPUT TIMESTAMP_TZ

1900年1月1日からの経過週数を計算するために使用される日付。

戻り値

1900年1月1日から指定日までの完全な週数を表す整数。

移行例

入力:

SELECT TD_WEEK_OF_CALENDAR(DATE '2023-11-30')
Copy

出力:

SELECT
PUBLIC.TD_WEEK_OF_CALENDAR_UDF(DATE '2023-11-30');
Copy

WRAP_NEGATIVE_WITH_ANGLE_BRACKETS_UDF

定義

マイナス記号(-)の代わりに山括弧(< >)を使用するように負数を変換します。この変換は、 PR (括弧)形式要素が元のTeradata形式文字列に存在する場合に行われます。

PUBLIC.WRAP_NEGATIVE_WITH_ANGLE_BRACKETS_UDF(INPUT NUMBER, FORMATARG VARCHAR)
Copy

パラメーター

INPUT は数値

文字列(varchar)に変換される数値。

FORMATARG は、データの形式を指定する VARCHAR タイプのパラメーターです。

形式パラメーターは、 INPUT の値をテキスト(varchar)表現に変換する方法を指定します。

戻り値

山括弧(< >)で囲まれた負数を含む varchar

使用例

入力:

SELECT PUBLIC.WRAP_NEGATIVE_WITH_ANGLE_BRACKETS_UDF(8456, '9999');
SELECT PUBLIC.WRAP_NEGATIVE_WITH_ANGLE_BRACKETS_UDF(-8456, '9999');
Copy

出力:

'8456'
'<8456>'
Copy

INSTR_UDF (STRING, STRING)

警告

これはユーザー定義関数(UDF)で、 2つの 異なるパラメーターセット を受け付けます。

定義

source_string内でsearch_stringが出現するすべてのインスタンスを検索します。

PUBLIC.INSTR_UDF(SOURCE_STRING STRING, SEARCH_STRING STRING)
Copy

パラメーター

SOURCE_STRING は、処理が必要な入力文字列を表します。

検索されるテキスト。

SEARCH_STRING は STRING タイプのパラメーターで、検索するテキストを指定します。

関数が探して一致させるテキストパターン。

戻り値

ソース文字列内でパターンが見つかるインデックス位置(位置1から開始)。

使用例

入力:

SELECT INSTR_UDF('INSTR FUNCTION','N');
Copy

出力:

2
Copy

TRANSLATE_CHK_UDF

定義

エラーが発生せずにコードが正常に変換されるかどうかを確認します。

PUBLIC.TRANSLATE_CHK_UDF(COL_NAME STRING, SOURCE_REPERTOIRE_NAME STRING)
Copy

パラメーター

COL_NAME は列名を表す文字列変数です。

検証が必要な列。

SOURCE_REPERTOIRE_NAME はソースディレクトリ名を指定する文字列パラメーターです。

ソースコレクションまたはライブラリの名前。

戻り値

0: 翻訳は成功し、エラーなしで完了しました。NULL: 結果が返されませんでした(NULL値)。

文字列内の最初の文字の位置が翻訳エラーを引き起こしています。

使用例

入力:

SELECT PUBLIC.TRANSLATE_CHK_UDF('ABC', 'UNICODE_TO_LATIN');
Copy

出力:

0
Copy

EXPAND_ON_UDF

注釈

読みやすくするために、この例ではコードの一部を簡略化しています。

定義

Teradataのexpand-on関数の動作を再現します。

PUBLIC.EXPAND_ON_UDF(TIME STRING, SEQ NUMBER, PERIOD STRING)
Copy

パラメーター

TIME は、時間値をテキスト(STRING)として格納するデータ型です。

アンカーが完全に拡張するまでの時間。

SEQ シーケンス番号

各行の値を計算する順番。

PERIOD 期間を表すテキスト値

指定した期間の日付。

戻り値

expand-on句における拡張期間の計算方法を定義する VARCHAR 値。

移行例

入力:

SELECT bg FROM table1 EXPAND ON pd AS bg BY ANCHOR ANCHOR_SECOND;
Copy

出力:

WITH
ExpandOnCTE AS
(
SELECT
PUBLIC.EXPAND_ON_UDF('ANCHOR_SECOND', VALUE, pd) bg
FROM
table1,
TABLE(FLATTEN(PUBLIC.ROW_COUNT_UDF(PUBLIC.DIFF_TIME_PERIOD_UDF('ANCHOR_SECOND', pd))))
)
SELECT
bg
FROM
table1,
ExpandOnCTE;
Copy

ROW_COUNT_UDF

定義

1から DIFF_TIME_PERIOD_UDF が返す値までの連番を含む配列を返します。

PUBLIC.ROW_COUNT_UDF(NROWS DOUBLE)
Copy

パラメーター

NROWS は、データセットの行の合計数を10進数(DOUBLE)で表します

DIFF_TIME_PERIOD_UDF 関数が返す値。

戻り値

EXPAND ON 句の機能を再現するために必要な行数を決定する配列。

使用例

入力:

SELECT ROW_COUNT_UDF(DIFFTTIME_PERIOD('SECONDS','2022-11-26 10:15:20.000*2022-11-26 10:15:25.000'));
Copy

出力:

[1, 2, 3, 4, 5]
Copy

移行例

入力:

SELECT NORMALIZE emp_id, duration FROM project EXPAND ON duration AS bg BY ANCHOR ANCHOR_SECOND;
Copy

出力:

WITH ExpandOnCTE AS
(
SELECT
    PUBLIC.EXPAND_ON_UDF('ANCHOR_SECOND', VALUE, duration) bg
FROM
    project,
TABLE(FLATTEN(PUBLIC.ROW_COUNT_UDF(PUBLIC.DIFF_TIME_PERIOD_UDF('ANCHOR_SECOND', duration))))
)
SELECT NORMALIZE emp_id,
    duration
FROM
    project,
    ExpandOnCTE;
Copy

CENTURY_UDF

定義

指定した日付の世紀を計算します。

PUBLIC.CENTURY_UDF(INPUT TIMESTAMP_TZ)
Copy

パラメーター

INPUT TIMESTAMP_TZ

世紀を決定するために使用される入力日。

戻り値

指定した日付の世紀数をvarcharで返します。

使用例

入力:

SELECT PUBLIC.CENTURY_UDF(DATE '1915-02-23');
Copy

出力:

'20'
Copy

TIME_DIFFERENCE_UDF

警告

Snowflakeが同等の組み込み関数を提供するようになったため、この UDF は廃止されました。詳細については、 TIMEDIFF ドキュメント をご参照ください。

定義

与えられた2つのタイムスタンプ間の時間間隔を計算します。

PUBLIC.TIME_DIFFERENCE_UDF
(MINUEND TIME, SUBTRAHEND TIME, INPUT_PART VARCHAR)
Copy

パラメーター

MINUEND から減算されるタイムスタンプ値。

元の値から減算される時間。

SUBTRAHEND 別のタイムスタンプから減算されるタイムスタンプ値

時間は減算されています。

INPUT_PART は、入力データを格納する VARCHAR タイプの変数です。

EXTRACT_PART は VARCHAR タイプの変数で、文字列の抽出部分を格納します。

時間間隔から数値を抽出します。

戻り値

特定の時刻を表すテキスト値(VARCHAR)。

入力:

select extract(day from (timestampColumn1 - timestampColumn2 day to hour)) from tableName;
Copy

出力:

SELECT
EXTRACT_TIMESTAMP_DIFFERENCE_UDF(timestampColumn1, timestampColumn2, 'DAY TO HOUR', 'DAY')
                                 from
tableName;
Copy

INTERVAL_DIVIDE_UDF

定義

間隔除算を実行するカスタム関数(UDF)です。

PUBLIC.INTERVAL_DIVIDE_UDF
(INPUT_PART VARCHAR(30), INPUT_VALUE VARCHAR(), INPUT_DIV INTEGER)
Copy

パラメーター

INPUT_PART はデータの入力部分を表す VARCHAR タイプの変数です。

「YEAR TO MONTH」のような間隔タイプを指定する値。

INPUT_VALUE VARCHAR

除算する時間間隔。

INPUT_DIV は入力の除数を表す整数値です。

別の数で除算する数。

戻り値

出力は時間間隔を値で割って計算されます。

移行例

入力:

SELECT INTERVAL '6-10' YEAR TO MONTH / 8;
Copy

出力:

SELECT
PUBLIC.INTERVAL_DIVIDE_UDF('YEAR TO MONTH', '6-10', 8);
Copy

DAYNUMBER_OF_MONTH_UDF

定義

UDF は、指定されたタイムスタンプが月のどの曜日に当たるかを決定します。Teradataの DAYNUMBER_OF_MONTH(DATE, 'ISO') 関数と同様の関数です。

PUBLIC.DAYNUMBER_OF_MONTH_UDF(INPUT TIMESTAMP_TZ)
Copy

パラメーター

INPUT TIMESTAMP_TZ

対応する曜日を決定するために使用される日付値。

戻り値

1から33までの整数。

入力:

SELECT DAYNUMBER_OF_MONTH (DATE'2022-12-22', 'ISO');
Copy

出力:

SELECT
PUBLIC.DAYNUMBER_OF_MONTH_UDF(DATE'2022-12-22');
Copy

LAST_DAY_DECEMBER_OF_ISO_UDF

定義

UDF (ユーザー定義関数)は、12月31日を処理し、対応する ISO 年を返します。この関数は、 PUBLIC.YEAR_END_IDO_UDF 計算のコンポーネントとして使用されます。

PUBLIC.LAST_DAY_DECEMBER_OF_ISO_UDF(INPUT TIMESTAMP_TZ)
Copy

パラメーター

INPUT TIMESTAMP_TZ

ISO 年形式を使用して12月の最終日を取得するには、12月31日を使用します。

戻り値

ISO 年形式による、12月31日を表す形式。

使用例

入力:

SELECT PUBLIC.LAST_DAY_DECEMBER_OF_ISO_UDF(DATE '2022-01-01');
Copy

出力:

2021-12-31
Copy

DATEADD_UDF

注釈

読みやすくするために、この例ではコードの一部を簡略化しています。

定義

二つの日付の和を計算する関数

PUBLIC.DATE_ADD_UDF(FIRST_DATE DATE, SECOND_DATE DATE)
Copy

パラメーター

FIRST_DATE は、タイプ DATE の列を表します。

含まれる最初の日付値。

SECOND_DATE は、タイプ DATE の列を表します。

2番目の日付値をfirst_dateに追加します。

戻り値

結果は、両方の入力パラメーターを組み合わせて計算された日付です。

入力:

SELECT
    CAST(CAST (COLUMNB AS DATE FORMAT 'MM/DD/YYYY') AS TIMESTAMP(0))
    +
    CAST (COLUMNA AS TIME(0) FORMAT 'HHMISS' )
FROM TIMEDIFF;
Copy

出力:

SELECT
    PUBLIC.DATEADD_UDF(CAST(CAST(COLUMNB AS DATE) !!!RESOLVE EWI!!! /*** SSC-EWI-0033 - FORMAT 'MM/DD/YYYY' REMOVED, SEMANTIC INFORMATION NOT FOUND. ***/!!! AS TIMESTAMP(0)), PUBLIC.TO_INTERVAL_UDF(CAST(COLUMNA AS TIME(0)) !!!RESOLVE EWI!!! /*** SSC-EWI-0033 - FORMAT 'HHMISS' REMOVED, SEMANTIC INFORMATION NOT FOUND. ***/!!!))
    FROM
    TIMEDIFF;
Copy

JULIAN_TO_DATE_UDF

定義

ユリウス暦日付形式(YYYYDDD)を標準グレゴリオ暦日付(YYYY-MM-DD)に変換するユーザー定義関数(UDF)。

PUBLIC.JULIAN_TO_DATE_UDF(JULIAN_DATE CHAR(7))
Copy

パラメーター

JULIAN_DATE CHAR - ユリウス暦形式の日付を格納するために使用される文字データ型。

ユリウス暦形式から変換する日付。

戻り値

ユリウス暦日付の日付表現を返すか、変換できない場合はnullを返します。

使用例

入力:

SELECT JULIAN_TO_DATE_UDF('2022045');
Copy

出力:

'2022-02-14'
Copy

移行例

入力:

SELECT TO_DATE('2020002', 'YYYYDDD');
Copy

出力:

SELECT
PUBLIC.JULIAN_TO_DATE_UDF('2020002');
Copy

FIRST_DAY_JANUARY_OF_ISO_UDF

定義

PUBLIC.YEAR_BEGIN_ISO_UDF 関数がその結果を計算するために使用する、 ISO 暦年の1月の元日。

FUNCTION PUBLIC.FIRST_DAY_JANUARY_OF_ISO_UDF(INPUT TIMESTAMP_TZ)
Copy

パラメーター

INPUT TIMESTAMP_TZ

ISO 暦年形式で1月1日を表す日付。

戻り値

指定された ISO 暦年の1月1日を表す日付。

使用例

入力:

SELECT PUBLIC.FIRST_DAY_JANUARY_OF_ISO_UDF(DATE '2022-01-01');
Copy

出力:

2021-01-01
Copy

TIMESTAMP_DIFFERENCE_UDF

定義

ユーザー定義関数(UDF)を使用した2つの日付の減算方法

PUBLIC.TIMESTAMP_DIFFERENCE_UDF
(MINUEND TIMESTAMP, SUBTRAHEND TIMESTAMP, INPUT_PART VARCHAR)
Copy

TeradataとSnowflakeの日付時刻減算の違い

TeradataとSnowflakeは、日付と時刻の計算に異なる方法を使用しています。構文、出力データ型、精度レベルが異なります。

警告

日付計算を行う場合、丸めやタイムゾーンの違いにより、結果が1日異なる場合があります。

パラメーター

MINUEND から減算されるタイムスタンプ値を表します。

減算の開始点として使用される日付。

SUBTRAHEND は別のタイムスタンプから減算されるタイムスタンプ値です。

日付は削除されています。

INPUT_PART は VARCHAR (可変長文字列)タイプの変数です。

返す必要がある部分。

戻り値

指定された INPUT_PART パラメーターに基づいて文字列値を形式化します。

入力:

select (timestampColumn1 - timestampColumn2 YEAR) from tableName;
Copy
SELECT
(
PUBLIC.TIMESTAMP_DIFFERENCE_UDF(timestampColumn1, timestampColumn2, 'YEAR')) from
tableName;
Copy

FIRST_DAY_OF_MONTH_ISO_UDF

定義

ユーザー定義関数(UDF)は、指定した月の最初の日を ISO 形式(YYYY-MM-DD)で返します。

PUBLIC.FIRST_DAY_OF_MONTH_ISO_UDF(YEAR NUMBER, MONTH NUMBER)
Copy

パラメーター

YEAR は、4桁の年値を格納するために使用される数値データ型です。

暦年を表す数値(例: 2023年)。

MONTH 月を表す数値(1~12)

暦月を表す数値(1~12)。

戻り値

現在の月の初日を ISO 形式(YYYY-MM-DD)で返します。

注釈

この UDF は DAYNUMBER_OF_MONTH_UDF 関数の中で使われるヘルパー関数です。

INT_TO_DATE_UDF

定義

数値から日付に変換する UDF (Teradata互換関数)

PUBLIC.INT_TO_DATE_UDF(NUMERIC_EXPRESSION INTEGER)
Copy

パラメーター

NUMERIC_EXPRESSION は、整数として評価される値または式を表します。

YYYY-MM-DD のように、特定の形式で日付を表す値。

戻り値

日付形式に変換された数値。

入力:

SELECT * FROM table1
WHERE date_column > 1011219
Copy

出力:

SELECT
* FROM
table1
WHERE date_column > PUBLIC.INT_TO_DATE_UDF( 1011219);
Copy

NULLIFZERO_UDF

定義

ゼロによる除算エラーを防ぐため、データのゼロ値を NULL に置き換えます。

PUBLIC.NULLIFZERO_UDF(NUMBER_TO_VALIDATE NUMBER)
Copy

パラメーター

NUMBER_TO_VALIDATE NUMBER

検証が必要な数値。

戻り値

入力が0の場合はnullを返し、そうでない場合は元の数値を返します。

使用例

SELECT NULLIFZERO_UDF(0);
Copy

出力:

NULL
Copy

DATE_LONG_UDF

定義

「曜日、月 DD、 YYYY」(例: 「Monday, January 01, 2024」)という形式に日付を変換します。この形式は、Teradataの DL 日付形式要素と一致します。

PUBLIC.DATE_LONG_UDF(INPUT TIMESTAMP_TZ)
Copy

パラメーター

INPUT TIMESTAMP_TZ

日付は、長い日付形式(例: 「September 15, 2023」)で表示する必要があります。

戻り値

Teradata DL 形式要素を表す VARCHAR データ型。

使用例

入力:

SELECT PUBLIC.DATE_LONG_UDF(DATE '2021-10-26');
Copy

出力:

'Tuesday, October 26, 2021'
Copy

TD_MONTH_OF_CALENDAR_UDF

定義

ユーザー定義関数(UDF)は、Teradataの TD_MONTH_OF_CALENDAR 関数の代替となり、同じ機能を提供します。

PUBLIC.TD_MONTH_OF_CALENDAR_UDF(INPUT TIMESTAMP_TZ)
Copy

パラメーター

INPUT TIMESTAMP_TZ

1900年1月1日からの経過月数を計算するために使用される日付。

戻り値

1900年1月1日から指定日までの月数を表す整数。

移行例

入力:

SELECT TD_MONTH_OF_CALENDAR(DATE '2023-11-30')
Copy

出力:

SELECT
PUBLIC.TD_MONTH_OF_CALENDAR_UDF(DATE '2023-11-30');
Copy

MONTH_NAME_LONG_UDF

定義

タイムスタンプを対応する完全な月名に変換するユーザー定義関数(UDF)。

PUBLIC.MONTH_NAME_LONG_UDF(INPUT_DATE TIMESTAMP)
Copy

パラメーター

INPUT DATE

タイムスタンプは、完全な月名を表示するように変換する必要があります。

戻り値

月の英語名。

TD_DAY_OF_CALENDAR_UDF

定義

Teradataの TO_DAY_OF_CALENDAR 機能を再現するユーザー定義関数(UDF)

PUBLIC.TD_DAY_OF_CALENDAR_UDF(INPUT TIMESTAMP_TZ)
Copy

パラメーター

INPUT TIMESTAMP_TZ

1900年1月1日からの経過日数を計算するために使用される日付。

戻り値

1900年1月1日から INPUT の日付までの月数を表す整数。

移行例

入力:

SELECT td_day_of_calendar(current_date)
Copy

出力:

SELECT
PUBLIC.TD_DAY_OF_CALENDAR_UDF(CURRENT_DATE());
Copy

PERIOD_TO_TIME_UDF

定義

Teradata PERIOD の値を、Teradataのキャスト動作を維持したまま TIME 値に変換する関数。

PERIOD_TO_TIME_UDF(PERIOD_VAL VARCHAR(22))
Copy

パラメーター

PERIOD_VAL は期間値を表します

変換が必要な期間。

戻り値

この関数は、 PERIOD を表す TIME 値を返します。変換が完了できない場合は、nullを返します。

使用例

入力:

SELECT PERIOD_TO_TIME_UDF(PERIOD_UDF(CURRENT_TIME()));
Copy

出力:

08:42:04
Copy

INSTR_UDF (STRING, STRING, DOUBLE, DOUBLE)

警告

このユーザー定義関数(UDF)は、 4つの 入力パラメーター を受け付けます。

定義

source_string内でsearch_stringが出現するすべてのインスタンスを検索します。

PUBLIC.INSTR_UDF(SOURCE_STRING STRING, SEARCH_STRING STRING, POSITION DOUBLE, OCCURRENCE DOUBLE)
Copy

パラメーター

SOURCE_STRING は、処理が必要な入力文字列を表します。

検索する文字列。

SEARCH_STRING は検索するテキスト値です。

関数が探して一致させるテキストパターン。

POSITION DOUBLE - 10進数を倍精度で格納する数値データ型。

検索を開始するテキスト内の位置(位置1から開始)。

OCCURRENCE DOUBLE - イベントの発生回数を表す数値データ型で、倍精度浮動小数点数として格納されます。

検索を開始するテキスト内の位置(位置1から開始)。

戻り値

指定されたテキストがソース文字列内で見つかるインデックス位置。

使用例

入力:

SELECT INSTR_UDF('CHOOSE A CHOCOLATE CHIP COOKIE','CH',2,2);
Copy

出力:

20
Copy

ROUND_DATE_UDF

定義

DATE_VALUE を処理するユーザー定義関数(UDF)で、時間部分を指定した単位に丸めます(UNIT_TO_ROUND_BY)。この関数は、Teradata ROUND(date) 関数に似ています。

PUBLIC.ROUND_DATE_UDF(DATE_TO_ROUND TIMESTAMP_LTZ, UNIT_TO_ROUND_BY VARCHAR(5))
Copy

パラメーター

DATE_TO_ROUND TIMESTAMP_TZ (丸めが必要なタイムゾーン情報を含むタイムスタンプ値)

丸める必要のある日付値。

UNIT_TO_ROUND_BY VARCHAR - 丸めに使用する時間単位を指定します

日付の丸めに使用される時間単位。

戻り値

指定した時間単位で丸めた日付を返します。UNIT_TO_ROUND_BY パラメーターは、日付の丸め方を決定します。

移行例

入力:

SELECT ROUND(CURRENT_DATE, 'RM') RND_DATE
Copy

出力:

SELECT
PUBLIC.ROUND_DATE_UDF(CURRENT_DATE(), 'RM') RND_DATE;
Copy

SUBSTR_UDF (STRING, FLOAT, FLOAT)

警告

これはユーザー定義関数(UDF)で、 3つの パラメーター を受け付けます。

定義

指定した文字列から、開始位置と終了位置を使用してテキストの一部を取得します。

PUBLIC.SUBSTR_UDF(BASE_EXPRESSION STRING, START_POSITION FLOAT, LENGTH FLOAT)
Copy

パラメーター

BASE_EXPRESSION はベース式を定義する文字列パラメーターです。

部分を抽出するためのソーステキスト。

START_POSITION は初期位置を定義する浮動小数点数です。

文字列から文字の抽出を開始する位置。

LENGTH は長さの値を表す浮動小数点数です。

文字列から文字の抽出を開始する位置。

戻り値

含める必要のある部分文字列。

使用例

入力:

SELECT 
    PUBLIC.SUBSTR_UDF('ABC', -1, 1),
    PUBLIC.SUBSTR_UDF('ABC', -1, 2),
    PUBLIC.SUBSTR_UDF('ABC', -1, 3),
    PUBLIC.SUBSTR_UDF('ABC', 0, 1),
    PUBLIC.SUBSTR_UDF('ABC', 0, 2);
Copy

出力:

'','','A','','A'
Copy

GETQUERYBANDVALUE_UDF (VARCHAR)

警告

これはユーザー定義関数(UDF)で、 1つの パラメーター を受け付けます。

定義

トランザクション、セッション、またはプロファイルクエリバンドに格納されている名前と値のペアから値を返します。

GETQUERYBANDVALUE_UDF(SEARCHNAME VARCHAR)
Copy

パラメーター

SEARCHNAME VARCHAR - 検索語や検索名を格納するために使用される VARCHAR タイプの変数。

キーと値のペアで検索する名前。

戻り値

セッションクエリバンドの「名前」キー値。

使用例

入力:

ALTER SESSION SET QUERY_TAG = 'user=Tyrone;role=security';
SELECT GETQUERYBANDVALUE_UDF('role');
Copy

出力:

security
Copy

移行例

入力:

SELECT GETQUERYBANDVALUE(1, 'group');
Copy

出力:

/** MSC-ERROR - MSCEWI2084 - TRANSACTION AND PROFILE LEVEL QUERY TAGS NOT SUPPORTED IN SNOWFLAKE, REFERENCING SESSION QUERY TAG INSTEAD **/
SELECT GETQUERYBANDVALUE_UDF('group');
Copy

TD_WEEK_OF_YEAR_UDF

定義

ユーザー定義関数(UDF)は、年内の指定された日付の完全な週番号を計算します。この関数は、Teradataの TD_WEEK_OF_YEAR および WEEKNUMBER_OF_YEAR 関数と同じ機能を提供します。

PUBLIC.TD_WEEK_OF_YEAR_UDF(INPUT TIMESTAMP_TZ)
Copy

パラメーター

INPUT TIMESTAMP_TZ

週番号の計算に使用される日付。

戻り値

指定した日付がその年のどの週にあたるかを示す数値。

使用例

入力:

SELECT PUBLIC.WEEK_OF_YEAR_UDF(DATE '2024-05-10'),
PUBLIC.WEEK_OF_YEAR_UDF(DATE '2020-01-03')
Copy

出力:

18, 0
Copy

EXTRACT_TIMESTAMP_DIFFERENCE_UDF

注釈

読みやすくするため、コード例を簡略化し、最も関連性の高い部分のみを示しています。

定義

MINUEND から SUBTRAHEND を減算した結果から「データ」部分を取得します。

PUBLIC.EXTRACT_TIMESTAMP_DIFFERENCE_UDF
(MINUEND TIMESTAMP, SUBTRAHEND TIMESTAMP, INPUT_PART VARCHAR, EXTRACT_PART VARCHAR)
Copy

TeradataとSnowflakeの日付時刻抽出の違い

Teradata関数とSnowflake関数では、必要なパラメーターが異なったり、返されるデータ型が異なる場合があります。

  • パラメーター: TeradataとSnowflakeの EXTRACT 関数の主な違いは、Snowflakeが日付と時刻のみを扱うのに対し、Teradataは間隔もサポートしていることです。詳細については、 Snowflakeの EXTRACT 関数ドキュメント および Teradataの EXTRACT 関数ドキュメント をご参照ください。

  • 戻り値の型: 関数は異なる値を返します。Teradataの EXTRACT は整数かdecimal(8, 2)を返し、Snowflakeの EXTRACT はリクエストされた日付時刻部分を表す数値を返します。

TeradataとSnowflakeの関数では、入力パラメーターや出力タイプが異なる場合があります。

パラメーター

MINUEND TIMESTAMP

減算の開始点として使用される日付。

SUBTRAHEND 別のタイムスタンプから減算されるタイムスタンプ値

日付は削除されています。

INPUT_PART VARCHAR

形式varcharは、リクエストされた元の部分(TIMESTAMP_DIFERENCE INPUT_PART と同じ)と一致し、以下のいずれかにする必要があります。

  • 'DAY TO HOUR'

  • 'DAY TO MINUTE'

  • 'DAY TO SECOND'

  • 'DAY TO MINUTE'

  • 'HOUR TO MINUTE'

  • 'HOUR TO SECOND'

  • 'MINUTE TO SECOND'

EXTRACT_PART は、文字列の抽出部分を表す VARCHAR データ型です。

抽出の時間単位は、 「DAY」「HOUR」「MINUTE」、または 「SECOND」 のいずれかの値にする必要があります。リクエストされた時間単位は、入力された時間間隔の範囲内にする必要があります。

戻り値

抽出プロセスに含まれるリクエスト数。

入力:

select extract(day from (timestampColumn1 - timestampColumn2 day to hour)) from tableName;
Copy

出力:

SELECT
EXTRACT_TIMESTAMP_DIFFERENCE_UDF(timestampColumn1, timestampColumn2, 'DAY TO HOUR', 'DAY')
from
tableName;
Copy

JSON_EXTRACT_DOT_NOTATION_UDF

定義

JavaScript やPythonでネストしたプロパティにアクセスするのと同じように、ドット記法を使って JSON オブジェクトにクエリできるようにするユーザー定義関数(UDF)。

JSON_EXTRACT_DOT_NOTATION_UDF(JSON_OBJECT VARIANT, JSON_PATH STRING)
Copy

Teradata JSON エンティティ参照(ドット記法)とSnowflake JSON クエリメソッドの違い。

TeradataとSnowflakeでは、 JSON データを走査する方法が異なります。Teradataは、ドット記法、配列インデックス、ワイルドカードアクセスやダブルドット記法などの特殊演算子を使用し、 JavaScript に基づいたアプローチを採用しています。対照的に、Snowflakeの JSON 走査機能はより限定的で、直接メンバーアクセスと配列インデックスのみをサポートしています。

パラメーター

JSON_OBJECT JSON オブジェクトを表すデータ型で、さまざまなデータ型のキーと値のペアをネストすることができます。

抽出する値を含む JSON オブジェクト。

JSON_PATH JSON ドキュメントからデータを抽出するパスを指定する文字列パラメーター。

JSON パス記法で指定された、値が JSON_OBJECT 内で見つかる場所。

戻り値

指定された JSON_PATH に一致する JSON_OBJECT 内のデータ要素。

移行例

入力:

SELECT CAST(varcharColumn AS JSON(2000))..name FROM variantTest;
Copy

出力:

SELECT
JSON_EXTRACT_DOT_NOTATION_UDF(CAST(varcharColumn AS VARIANT), '$..name')
FROM
variantTest;
Copy

WEEK_OF_MONTH_UDF

定義

特定の日付が月のどの週に該当するかを計算します。

PUBLIC.WEEK_OF_MONTH_UDF(INPUT TIMESTAMP_TZ)
Copy

パラメーター

INPUT TIMESTAMP_TZ

月のどの週に当たるかを決定するために使用される日付。

戻り値

特定の日付が月のどの週にあたるかを表示する VARCHAR 列。

使用例

入力:

SELECT PUBLIC.WEEK_OF_MONTH_UDF(DATE '2021-10-26');
Copy

出力:

'4'
Copy

DAYNAME_LONG_UDF (TIMESTAMP_TZ)

警告

これはユーザー定義関数(UDF)で、 1つの パラメーター を受け付けます。

定義

初めを大文字にして曜日名を返す DAYNAME_LONG_UDF 関数のバリアントを作成する UDF (デフォルト形式)。

PUBLIC.DAYNAME_LONG_UDF(INPUT TIMESTAMP_TZ)
Copy

パラメーター

INPUT TIMESTAMP_TZ

曜日を取得する日付。

戻り値

曜日の完全な名前を含む文字列を返します。

使用例

入力:

SELECT PUBLIC.DAYNAME_LONG_UDF(DATE '2022-06-30');
Copy

出力:

'Thursday'
Copy

INTERVAL_TO_MONTHS_UDF

定義

時間間隔を月に変換します。

PUBLIC.INTERVAL_TO_MONTHS_UDF
(INPUT_VALUE VARCHAR())
Copy

パラメーター

INPUT_VALUE VARCHAR

月に変更される期間。

戻り値

処理する月数を整数で指定します。

GETQUERYBANDVALUE_UDF (VARCHAR, FLOAT, VARCHAR)

警告

このユーザー定義関数(UDF)は、3つのパラメーターを受け付けます。

定義

トランザクション、セッション、またはプロファイルクエリバンドに格納されている名前と値のペアから値を返します。値はクエリバンド内の特定の名前に関連付けられています。

GETQUERYBANDVALUE_UDF(QUERYBAND VARCHAR, SEARCHTYPE FLOAT, SEARCHNAME VARCHAR)
Copy

パラメーター

QUERYBAND は、クエリバンド情報を格納する VARCHAR データ型です。

クエリバンドはトランザクション、セッション、プロファイルのクエリバンドを1つの文字列にまとめたものです。

SEARCHTYPE は、浮動小数点数のデータ型です。

一致するペアが検索される最大深度。

0はワイルドカード値を表し、あらゆる入力に一致します。

トランザクションはデータベースにおける1つの作業単位を表します。

セッションオブジェクトはSnowflakeへの接続を表します。

3 = プロファイルを作成します。

SEARCHNAME VARCHAR

キーと値のペアで検索する名前。

戻り値

指定された階層の「名前」キーの値を返します。値が見つからない場合はnullを返します。

使用例

入力:

SELECT GETQUERYBANDVALUE_UDF('=T> account=Matt;user=Matt200; =S> account=SaraDB;user=Sara;role=DbAdmin;', 0, 'account');
SELECT GETQUERYBANDVALUE_UDF('=T> account=Matt;user=Matt200; =S> account=SaraDB;user=Sara;role=DbAdmin;', 2, 'account');
SELECT GETQUERYBANDVALUE_UDF('=T> account=Matt;user=Matt200; =S> account=SaraDB;user=Sara;role=DbAdmin;', 0, 'role');
SELECT GETQUERYBANDVALUE_UDF('=T> account=Matt;user=Matt200; =S> account=SaraDB;user=Sara;role=DbAdmin;', 1, 'role');
Copy

出力:

      Matt
      SaraDB
      DbAdmin
      NULL
Copy

移行例

入力:

SELECT GETQUERYBANDVALUE('=T> account=Matt;user=Matt200; =S> account=SaraDB;user=Sara;role=DbAdmin;', 0, 'account')
Copy

出力:

WITH
--** MSC-WARNING - MSCEWI2078 - THE EXPAND ON CLAUSE FUNCTIONALITY IS TRANSFORMED INTO A CTE BLOCK **
ExpandOnCTE AS
(
SELECT
PUBLIC.EXPAND_ON_UDF('ANCHOR_SECOND', VALUE, duration) bg
FROM
project,
TABLE(FLATTEN(PUBLIC.ROW_COUNT_UDF(PUBLIC.DIFF_TIME_PERIOD_UDF('ANCHOR_SECOND', duration))))
)
SELECT NORMALIZE emp_id,
duration
FROM
project,
ExpandOnCTE;
Copy

JULIAN_DAY_UDF

定義

ユリウス暦日数を計算します。ユリウス暦日数は、4713年1月1日 BCE (共通時代以前)からの連続した日数を表します。ユリウス暦日は天文学や暦の計算で使われます。

PUBLIC.JULIAN_DAY_UDF(INPUT TIMESTAMP_TZ)
Copy

パラメーター

INPUT TIMESTAMP_TZ

ユリウス暦日数に変換される日付。

戻り値

計算されたユリウス暦日を表す varchar 値。

使用例

入力:

SELECT PUBLIC.JULIAN_DAY_UDF(DATE '2021-10-26');
Copy

出力:

'2459514'
Copy

WEEKNUMBER_OF_MONTH_UDF

定義

指定された日付から月を識別します。

PUBLIC.WEEKNUMBER_OF_MONTH_UDF(INPUT TIMESTAMP_TZ)
Copy

パラメーター

INPUT TIMESTAMP_TZ

月番号を計算する日付。

戻り値

指定した日付の月(1~12)を表す数値。

使用例

入力:

SELECT PUBLIC.WEEKNUMBER_OF_MONTH_UDF(DATE '2022-05-21')
Copy

出力:

3
Copy

JSON_EXTRACT_UDF

定義

JSONExtractJSONExtractValueJSONExtractLargeValue 関数の動作を模倣するユーザー定義関数(UDF)。この UDF により、 JSON オブジェクトから複数の値を抽出できます。

JSON_EXTRACT_UDF(JSON_OBJECT VARIANT, JSON_PATH STRING, SINGLE_VALUE BOOLEAN)
Copy

パラメーター

JSON_OBJECT は、 JSON 形式のデータを構造化された形式で保存するデータ型です。

抽出する値を含む JSON オブジェクト。

JSON_PATH JSON ドキュメントからデータを抽出するパスを指定する文字列。

JSON パス記法で指定された、 JSON_OBJECT 内で目的の値が見つかる場所。

SINGLE_VALUE 単一の値を返すか、複数の値を返すかを示すブール値フラグ。

BOOLEAN パラメーター: trueにセットすると、単一の値を返します(JSONExtractValue および JSONExtractLargeValue 関数で必須)。falseに設定すると、値の配列を返します(JSONExtract で使用)。

戻り値

JSON オブジェクト内の指定された JSON パスで見つかったデータ値。

移行例

入力:

SELECT
    Store.JSONExtract('$..author') as AllAuthors
FROM BookStores;
Copy

出力:

SELECT
    JSON_EXTRACT_UDF(Store, '$..author', FALSE) as AllAuthors
    FROM
    BookStores;
Copy

COMPUTE_EXPAND_ON_UDF

定義

指定された期間タイプに基づいてデータを展開する方法を決定します。

PUBLIC.COMPUTE_EXPAND_ON_UDF(TIME STRING, SEQ NUMBER, PERIOD TIMESTAMP, PERIODTYPE STRING)
Copy

パラメーター

TIME STRING

アンカーで使用されるタイムスタンプ。

SEQ シーケンス番号

各行の計算の実行順序。

PERIOD は特定の時点を示すタイムスタンプ値を表します。

指定した期間の日付。

PERIODTYPE は期間のタイプを定義する文字列値です。

計算に使用する期間(「BEGIN」または「END」のいずれか)。

戻り値

EXPAND-ON 操作の各行がいつ処理されたかを示すタイムスタンプ。

警告

この UDF は EXPAND_ON_UDF の機能を拡張した派生関数です。

WEEK_NUMBER_OF_QUARTER_UDF

定義

週番号関数は、指定された日付の現在の四半期内の週番号を返します。この関数は、 ISO カレンダーシステムを使用して、Teradataの WEEKNUMBER_OF_QUARTER(DATE, 'ISO') 関数と同じ動作に従います。

PUBLIC.WEEK_NUMBER_OF_QUARTER_UDF(INPUT TIMESTAMP_TZ)
Copy

パラメーター

INPUT TIMESTAMP_TZ

四半期のどの週に該当するかを計算するために使用される日付。

戻り値

四半期のどの週(1~13)を参照としているかを示す整数。

使用例

入力:

SELECT WEEK_NUMBER_OF_QUARTER_UDF(DATE '2023-01-01'),
WEEK_NUMBER_OF_QUARTER_UDF(DATE '2022-10-27')
Copy

出力:

1, 4
Copy

YEAR_END_ISO_UDF

定義

Teradataの TD_YEAR_END 関数と同様に、 ISO カレンダー標準を使用して、指定された日付の最終日を計算するユーザー定義関数(UDF)。

PUBLIC.YEAR_END_ISO_UDF(INPUT date)
Copy

パラメーター

INPUT DATE

ISO カレンダー基準による1年の最終日を表す日付。

戻り値

ISO カレンダーシステムによる1年の最後の日。

使用例

入力:

SELECT  PUBLIC.YEAR_END_ISO_UDF(DATE '2022-01-01'),
PUBLIC.YEAR_END_ISO_UDF(DATE '2022-04-12');
Copy

出力:

2022-01-02, 2023-01-01
Copy

INSERT_CURRENCY_UDF

定義

通貨記号と数字の間にスペースや記号がないように、通貨記号を数字の1桁目の直前に挿入します。

PUBLIC.INSERT_CURRENCY_UDF(INPUT VARCHAR, CURRENCYINDEX INTEGER, CURRENCYVALUE VARCHAR)
Copy

パラメーター

INPUT VARCHAR

通貨形式を必要とする数値を変換する際の TO_CHAR の出力。

CURRENCYINDEX は通貨のインデックスを表す整数値です。

通貨を挿入する配列内の位置。

CURRENCYVALUE VARCHAR 通貨値を格納するフィールド。

通貨値として使用されるテキスト。

戻り値

定義された位置の通貨テキストを含む varchar フィールド。

使用例

入力:

SELECT PUBLIC.INSERT_CURRENCY_UDF(to_char(823, 'S999999'), '1', 'CRC');
Copy

出力:

'+CRC823'
Copy

INSTR_UDF (STRING, STRING, INT)

警告

このユーザー定義関数(UDF)は、3つのパラメーターを受け付けます。

定義

source_string内でsearch_stringが出現するすべてのインスタンスを検索します。

PUBLIC.INSTR_UDF(SOURCE_STRING STRING, SEARCH_STRING STRING, POSITION INT)
Copy

パラメーター

SOURCE_STRING は、入力として使われる文字列値を表します。

検索されるテキスト。

SEARCH_STRING は検索するテキスト値です。

関数が探して一致させるテキストパターン。

POSITION は、シーケンス内の位置を表す整数データ型です。

検索を開始するテキスト内の位置(位置1から開始)。

戻り値

元の文字列の中で、一致が見つかった場所。

使用例

入力:

SELECT INSTR_UDF('FUNCTION','N', 3);
Copy

出力:

8
Copy