SnowConvert: Funktionsreferenzen für Teradata¶
QUARTERNUMBER_OF_YEAR_UDF¶
Definition¶
UDF (benutzerdefinierte Funktion), die das Quartal eines bestimmten Datums entsprechend dem ISO-Kalenderjahr berechnet, ähnlich wie die Funktion QUARTERNUMBER_OF_YEAR_UDF(date, ‚ISO‘) von Teradata
PUBLIC.QUARTERNUMBER_OF_YEAR_UDF(INPUT TIMESTAMP_TZ)
Parameter¶
INPUT
TimeSTAMP_TZ
Die Methode zum Extrahieren des Quartals
Rückgabewerte¶
Eine Ganzzahl (1–4), die angibt, in welches Quartal des Jahres das Datum fällt.
Verwendungsbeispiel¶
Eingabe:
SELECT PUBLIC.QUARTERNUMBER_OF_YEAR_UDF(DATE '2022-01-01'),
PUBLIC.QUARTERNUMBER_OF_YEAR_UDF(DATE '2025-12-31');
Ausgabe:
4, 1
DAYNUMBER_OF_YEAR_UDF¶
Definition¶
Gibt den Tag innerhalb des Jahres für einen bestimmten Zeitstempel zurück. Die Angabe des Tages reicht von 1 bis 365 (oder 366 in Schaltjahren). Diese Funktion verhält sich genauso wie DAYNUMBER_OF_YEAR(DATE, ‚ISO‘).
PUBLIC.DAYNUMBER_OF_YEAR_UDF(INPUT TIMESTAMP_TZ)
Parameter¶
INPUT
TIMESTAMP_TZ
Zum Ermitteln des Tages im Jahr anhand eines Datums.
Rückgabewerte¶
Eine ganze Zahl von 1 bis 371
Beispiel¶
Eingabe:
SELECT DAYNUMBER_OF_YEAR(CURRENT_DATE,'ISO');
Ausgabe:
SELECT
PUBLIC.DAYNUMBER_OF_YEAR_UDF(CURRENT_DATE());
SUBSTR_UDF (STRING, FLOAT)¶
Warnung
Diese benutzerdefinierte Funktion (UDF) akzeptiert zwei Parameter (überladene Funktion).
Definition¶
Ruft einen Teil des Textes aus einer angegebenen Zeichenfolge ab, indem eine Startposition und eine Länge angegeben werden
PUBLIC.SUBSTR_UDF(BASE_EXPRESSION STRING, START_POSITION FLOAT)
Parameter¶
BASE_EXPRESSION
ist ein Zeichenfolgenparameter, der den Basisausdruck für die Operation definiert.
Der Quelltext, aus dem Sie einen Teil extrahieren möchten
START_POSITION
: Eine Gleitkommazahl, die die Startposition in der Eingabezeichenfolge angibt
Die Position, an der Sie mit der Extraktion der Zeichen aus der Zeichenfolge beginnen möchten
Rückgabewerte¶
Die Teilzeichenfolge, die enthalten sein muss
Migrationsbeispiel¶
Eingabe:
SELECT SUBSTRING('Hello World!' FROM -2);
Ausgabe:
SELECT
PUBLIC.SUBSTR_UDF('Hello World!', -2);
CHKNUM_UDF¶
Definition¶
Überprüft, ob eine Zeichenfolge einen gültigen numerischen Wert enthält
PUBLIC.CHKNUM_UDF(NUM STRING);
Parameter¶
NUM
: Eine Zeichenfolge, die eine Zahl darstellt
Die Textzeichenfolge, die überprüft werden muss
Rückgabewerte¶
Gibt 1 zurück, wenn der Eingabeparameter ein gültiger numerischer Wert ist. Wenn die Eingabe keine gültige Zahl ist (z. B. Text oder Sonderzeichen), wird 0 zurückgegeben.
Beispiel¶
SELECT CHKNUM('1032');
Ausgabe:
SELECT
PUBLIC.CHKNUM_UDF('1032');
TD_YEAR_END_UDF¶
Definition¶
UDF (benutzerdefinierte Funktion), die die Funktion TD_YEAR_END(DATE) oder TD_YEAR_END(DATE, ‚COMPATIBLE‘) von Teradata repliziert, die den letzten Tag des Jahres für ein bestimmtes Datum zurückgibt.
PUBLIC.TD_YEAR_END_UDF(INPUT date)
Parameter¶
INPUT
DATE
Ermittelt den letzten Tag des aktuellen Jahres
Rückgabewerte¶
Der letzte Tag im Dezember (31. Dezember)
Verwendungsbeispiel¶
Eingabe:
SELECT PUBLIC.TD_YEAR_END_UDF(DATE '2022-01-01'),
PUBLIC.TD_YEAR_END_UDF(DATE '2022-04-12');
Ausgabe:
2022-12-31, 2022-12-31
PERIOD_OVERLAPS_UDF¶
Definition¶
Eine benutzerdefinierte Funktion (UDF), die die Funktionalität von OVERLAPS OPERATOR implementiert. Diese Funktion vergleicht zwei oder mehr Zeiträume und stellt fest, ob sie sich zeitlich überschneiden.
PERIOD_OVERLAPS_UDF(PERIODS ARRAY)
Parameter¶
PERIODS
ist ein Array, das Zeiträume enthält.
Alle Zeitraumausdrücke, die verglichen werden sollen
Rückgabewerte¶
TRUE, wenn alle Zeiträume in der Menge mindestens einen Punkt gemeinsam haben (Überschneidung), ansonsten FALSE
Migrationsbeispiel¶
SELECT
PERIOD(DATE '2009-01-01', DATE '2010-09-24')
OVERLAPS
PERIOD(DATE '2009-02-01', DATE '2009-06-24');
Ausgabe:
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 ***/!!!;
WEEK_NUMBER_OF_QUARTER_COMPATIBLE_UDF¶
Definition¶
Berechnet, in welche Wochennummer innerhalb des aktuellen Quartals ein bestimmtes Datum fällt
PUBLIC.WEEK_NUMBER_OF_QUARTER_COMPATIBLE_UDF(INPUT TIMESTAMP_TZ)
Parameter¶
INPUT
TIMESTAMP_TZ
Das Datum, anhand dessen berechnet wird, in welche Woche des Quartals es fällt
Rückgabewerte¶
Eine Ganzzahl, die angibt, in welche Woche des Quartals das Datum fällt (1-13)
Verwendungsbeispiel¶
Eingabe:
SELECT WEEK_NUMBER_OF_QUARTER_COMPATIBLE_UDF(DATE '2022-05-01', 'COMPATIBLE'),
WEEK_NUMBER_OF_QUARTER_COMPATIBLE_UDF(DATE '2022-07-06', 'COMPATIBLE')
Ausgabe:
5, 1
ROMAN_NUMERALS_MONTH_UDF¶
Definition¶
Konvertiert ein Datum in den entsprechenden Monat in römischen Ziffern
PUBLIC.ROMAN_NUMERALS_MONTH_UDF(INPUT TIMESTAMP_TZ)
Parameter¶
INPUT
TIMESTAMP_TZ
Das Eingabedatum, aus dem der Monat extrahiert werden soll
Rückgabewerte¶
Ein varchar
, das den Monat aus einem bestimmten Datum extrahiert
Verwendungsbeispiel¶
Eingabe:
SELECT PUBLIC.ROMAN_NUMERALS_MONTH_UDF(DATE '2021-10-26');
Ausgabe:
'X'
TD_YEAR_BEGIN_UDF¶
Definition¶
Eine benutzerdefinierte Funktion (UDF), die das Verhalten von TD_YEAR_BEGIN oder TD_YEAR_BEGIN(DATE, ‚COMPATIBLE‘) imitiert, indem sie den ersten Tag des Jahres für ein bestimmtes Datum zurückgibt
PUBLIC.TD_YEAR_BEGIN_UDF(INPUT DATE)
Parameter¶
INPUT
DATE
Ermittelt den ersten Tag des aktuellen Jahres
Rückgabewerte¶
Der erste Tag im Januar
Verwendungsbeispiel¶
Eingabe:
SELECT TD_YEAR_BEGIN(DATE '2022-01-01', 'COMPATIBLE'),
TD_YEAR_BEGIN(DATE '2022-04-12');
Ausgabe:
2022-01-01, 2022-01-01
FULL_MONTH_NAME_UDF¶
Definition¶
Gibt den vollständigen Namen eines Monats in der von Ihnen gewählten Formatierung zurück: alle Großbuchstaben, alle Kleinbuchstaben oder nur der erste Buchstabe in Großbuchstaben
PUBLIC.FULL_MONTH_NAME_UDF(INPUT TIMESTAMP_TZ, RESULTCASE VARCHAR)
Parameter¶
INPUT
TIMESTAMP_TZ
Das Datumsformat sollte den Monatsnamen anzeigen.
RESULTCASE
VARCHAR
Das Format, in dem das Ergebnis angezeigt werden soll. Gültige Optionen sind „uppercase“, „lowercase“ und „firstOnly“.
Rückgabewerte¶
Gibt ein varchar
zurück, das den vollständigen Namen eines Monats enthält
Verwendungsbeispiel¶
Eingabe:
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');
Ausgabe:
OCTOBER
october
October
TO_BYTES_HEX_UDF¶
Definition¶
Konvertiert eine Dezimalzahl (Basis 10) in ihre hexadezimale Darstellung (Basis 16)
TO_BYTES_HEX_UDF(INPUT FLOAT)
Parameter¶
INPUT
ist ein Gleitkommazahlparameter.
Die Zahl, die in das Hexadezimalformat konvertiert wird
Rückgabewerte¶
Eine Zeichenfolge, die den Hexadezimalwert darstellt
Verwendungsbeispiel¶
Eingabe:
SELECT TO_BYTES_HEX_UDF('448');
Ausgabe:
01c0
PERIOD_INTERSECT_UDF¶
Definition¶
Eine benutzerdefinierte Funktion (UDF), die den P_INTERSECT-Operator repliziert. Diese Funktion vergleicht zwei oder mehr Zeiträume und stellt fest, wo sie sich überschneiden und gibt das gemeinsame Zeitintervall zwischen ihnen zurück.
Weitere Einzelheiten zur Quellfunktion finden Sie in der Dokumentation.
PERIOD_INTERSECT_UDF(PERIODS ARRAY)
Parameter¶
PERIODS
ist ein Array, das Zeiträume enthält.
Alle Zeitraumausdrücke, die verglichen werden müssen
Rückgabewerte¶
Der Abschnitt, in dem sich zwei Zeiträume überschneiden oder gemeinsame Daten haben.
Migrationsbeispiel¶
Eingabe:
SELECT
PERIOD(DATE '2009-01-01', DATE '2010-09-24')
P_INTERSECT
PERIOD(DATE '2009-02-01', DATE '2009-06-24');
Ausgabe:
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 ***/!!!;
INTERVAL_TO_SECONDS_UDF¶
Definition¶
Konvertiert ein Zeitintervall in Sekunden.
PUBLIC.INTERVAL_TO_SECONDS_UDF
(INPUT_PART VARCHAR(30), INPUT_VALUE VARCHAR())
Parameter¶
INPUT_PART
ist eine Variable vom Typ VARCHAR, die Eingabedaten speichert.
Die Zeitdauer, die in Sekunden umgerechnet wird.
INPUT_VALUE
VARCHAR: Der Eingabeparameter, der Textdaten akzeptiert
Der Zeitintervalltyp für die Konvertierung. Beispiele sind „DAY“, „DAY TO HOUR“ und andere gültige Intervalltypen.
Rückgabewerte¶
Eine Dezimalzahl, die das Zeitintervall in Sekunden angibt
TIMESTAMP_ADD_UDF¶
Definition¶
Kombiniert zwei Zeitstempel zu einem einzigen Wert
PUBLIC.TIMESTAMP_ADD_UDF(FIRST_DATE TIMESTAMP_LTZ, SECOND_DATE TIMESTAMP_LTZ)
Parameter¶
FIRST_DATE
ist ein Zeitstempelfeld, das sowohl Datums- als auch Zeitinformationen enthält, mit Unterstützung für Zeitzonen (TIMESTAMP_LTZ).
Das Anfangsdatum, an dem dies hinzugefügt wurde
SECOND_DATE
ist eine Zeitstempelspalte, die Zeitzoneninformationen enthält (TIMESTAMP_LTZ) (Zeitstempel mit lokaler Zeitzone).
Das Datum, an dem das Element zum zweiten Mal hinzugefügt wurde
Rückgabewerte¶
Ein Zeitstempel, der durch die Kombination der eingegebenen Datumsparameter erzeugt wird
INTERVAL_MULTIPLY_UDF¶
Definition¶
Eine benutzerdefinierte Funktion (UDF), die Multiplikationsoperationen mit Zeitintervallen durchführt
PUBLIC.INTERVAL_MULTIPLY_UDF
(INPUT_PART VARCHAR(30), INPUT_VALUE VARCHAR(), INPUT_MULT INTEGER)
Parameter¶
INPUT_PART
ist eine Variable vom Typ VARCHAR, die Eingabedaten speichert.
Der für die Multiplikation verwendete Wert, angegeben als „YEAR TO MONTH“
INPUT_VALUE
VARCHAR
Das Intervall, mit dem multipliziert werden soll
INPUT_MULT
ist ein Ganzzahlparameter, der als Multiplikator für Eingabewerte dient.
Die Zahl, die in der Multiplikationsoperation verwendet wird
Rückgabewerte¶
Die Ausgabe wird durch Multiplikation eines Zeitintervalls mit einem numerischen Wert berechnet.
Migrationsbeispiel¶
Eingabe:
SELECT INTERVAL '6-10' YEAR TO MONTH * 8;
Ausgabe:
SELECT
PUBLIC.INTERVAL_MULTIPLY_UDF('YEAR TO MONTH', '6-10', 8);
TD_DAY_OF_WEEK_UDF¶
Definition¶
Benutzerdefinierte Funktion (UDF), die die Funktionalität von TD_DAY_OF_WEEK
von Teradata repliziert. Einzelheiten über die ursprüngliche Teradata-Funktion finden Sie hier.
PUBLIC.TD_DAY_OF_WEEK_UDF(INPUT TIMESTAMP_TZ)
Parameter¶
INPUT
TIMESTAMP_TZ
Datum, aus dem der Wochentag ermittelt werden soll
Rückgabewerte¶
Eine Ganzzahl von 1 bis 7, die den Wochentag angibt, wobei:
1 = Sonntag
2 = Montag
3 = Dienstag
4 = Mittwoch
5 = Donnerstag
6 = Freitag
7 = Samstag
Migrationsbeispiel¶
Eingabe:
SELECT td_day_of_week(DATE '2022-03-02');
Ausgabe:
SELECT
PUBLIC.TD_DAY_OF_WEEK_UDF(DATE '2022-03-02');
ISO_YEAR_PART_UDF¶
Definition¶
Berechnet das ISO-Kalenderjahr ab einem bestimmten Datum. Das Ergebnis kann gekürzt werden, indem Sie die Anzahl der zu behaltenden Stellen angeben.
PUBLIC.ISO_YEAR_PART_UDF(INPUT TIMESTAMP_TZ, DIGITS INTEGER)
Parameter¶
INPUT
TIMESTAMP_TZ
Das Datum, aus dem das ISO-Jahr zu extrahieren ist
DIGITS
: Eine ganze Zahl, die die maximale Anzahl der anzuzeigenden Ziffern angibt
Die Anzahl der gewünschten Dezimalstellen in der Ausgabe
Rückgabewerte¶
Gibt eine Zeichenfolge (varchar) zurück, die das ISO-Jahr eines bestimmten Datums darstellt
Verwendungsbeispiel¶
Eingabe:
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);
Ausgabe:
'021'
'21'
'1'
DIFF_TIME_PERIOD_UDF¶
Definition¶
Berechnet das Zeitintervall zwischen zwei Daten auf der Grundlage des angegebenen Parameters für die Zeiteinheit
PUBLIC.DIFF_TIME_PERIOD_UDF(TIME STRING, PERIOD VARCHAR(50))
Parameter¶
TIME
ist ein Datentyp, der zum Speichern von Zeitwerten in Stunden, Minuten, Sekunden und Sekundenbruchteilen verwendet wird. Der Wert wird als Textzeichenfolge gespeichert.
Der Zeitstempel, der als Ankerpunkt verwendet werden soll
PERIOD
ist ein Textfeld (VARCHAR), das einen Zeitraum darstellt.
Die für die Erweiterung verwendete Zeitraumspalte
Rückgabewerte¶
Ein numerischer Wert, der das Zeitintervall zwischen zwei Daten angibt
Verwendungsbeispiel¶
Eingabe:
SELECT DIFF_TIME_PERIOD_UDF('SECONDS','2022-11-26 10:15:20.000*2022-11-26 10:15:25.000');
Ausgabe:
5
WEEK_NUMBER_OF_QUARTER_ISO_UDF¶
Definition¶
Berechnet, in welche Wochennummer ein Datum innerhalb seines Quartals fällt, unter Verwendung der ISO-Kalenderstandards Diese Funktion verhält sich identisch mit der Teradata-Funktion WEEKNUMBER_OF_QUARTER(DATE, 'ISO')
.
PUBLIC.WEEK_NUMBER_OF_QUARTER_ISO_UDF(INPUT TIMESTAMP_TZ)
Parameter¶
INPUT
TIMESTAMP_TZ
Das Datum, anhand dessen berechnet wird, in welche Woche des Quartals es fällt
Rückgabewerte¶
Eine Ganzzahl, die angibt, welche Woche des Quartals (1–13) dies darstellt.
Verwendungsbeispiel¶
Eingabe:
SELECT WEEKNUMBER_OF_QUARTER(DATE '2022-05-01', 'ISO'),
WEEKNUMBER_OF_QUARTER(DATE '2022-07-06', 'ISO')
Ausgabe:
SELECT
PUBLIC.SUBSTR_UDF('Hello World!', -2);
NVP_UDF¶
Definition¶
Führt die gleiche Funktion aus wie die Teradata-FunktionNVP
NVP_UDF(INSTRING VARCHAR, NAME_TO_SEARCH VARCHAR, NAME_DELIMITERS VARCHAR, VALUE_DELIMITERS VARCHAR, OCCURRENCE FLOAT)
Parameter¶
INSTRING
VARCHAR
Name-Wert-Paare sind Datenelemente, die aus einem Namen und dem dazugehörigen Wert bestehen.
NAME_TO_SEARCH
vom Typ VARCHAR
Der Namensparameter, der für die Suche innerhalb der Name-Wert-Paar-Funktion (NVP) verwendet wird
NAME_DELIMITERS
VARCHAR
Das Zeichen, das verwendet wird, um Namen von ihren entsprechenden Werten zu trennen
VALUE_DELIMITERS
VARCHAR
Das Zeichen, das verwendet wird, um einen Namen mit seinem entsprechenden Wert zu verbinden
OCCURRENCE
steht für eine Gleitkommazahl, die angibt, wie oft etwas vorkommt.
Die Anzahl der übereinstimmenden Muster, nach denen gesucht werden soll
Rückgabewerte¶
Eine Textzeichenfolge (VARCHAR), die die gleichen Daten enthält wie die Eingabezeichenfolge
Verwendungsbeispiel¶
Eingabe:
SELECT PUBLIC.NVP_UDF('entree=-orange chicken&entree+.honey salmon', 'entree', '&', '=- +.', 1);
Ausgabe:
orange chicken
MONTH_SHORT_UDF¶
Definition¶
Gibt den abgekürzten Namen eines Monats (drei Buchstaben) in Großbuchstaben, Kleinbuchstaben oder in Großbuchstaben Ihrer Wahl zurück: Beispiel: „Jan“, „jan“ oder „JAN“.
PUBLIC.MONTH_SHORT_UDF(INPUT TIMESTAMP_TZ, RESULTCASE VARCHAR)
Parameter¶
INPUT
TIMESTAMP_TZ
Das Datum in einem Format, in dem der abgekürzte Monatsname angezeigt wird
RESULTCASE
VARCHAR
Das zu verwendende Großbuchstaben-/Kleinbuchstaben-Format. Gültige Optionen sind:
‚uppercase‘: Konvertiert Text in Großbuchstaben
‚lowercase‘: Konvertiert Text in Kleinbuchstaben
‚firstOnly‘: Schreibt nur den ersten Buchstaben groß
Rückgabewerte¶
Ein varchar
mit dem abgekürzten Namen eines Monats (z. B. „Jan“, „Feb“ etc.).
Verwendungsbeispiel¶
Eingabe:
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');
Ausgabe:
OCT
oct
Oct
DATE_TO_INT_UDF¶
Definition¶
UDF (benutzerdefinierte Funktion), die einen Datumswert in seine numerische Darstellung konvertiert, ähnlich wie die Teradata-Funktion DATE-TO-NUMERIC
PUBLIC.DATE_TO_INT_UDF(DATE_TO_CONVERT DATE)
Parameter¶
DATE_TO_CONVERT
steht für einen Datumswert, der umgewandelt werden muss
Konvertiert den Datumswert in ein Ganzzahlformat
Rückgabewerte¶
Gibt einen Datumswert im numerischen Format zurück
Beispiel¶
Eingabe:
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;
Ausgabe:
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;
PERIOD_UDF¶
Definition¶
Eine benutzerdefinierte Funktion (UDF), die den P_INTERSECT-Operator repliziert. Diese Funktion vergleicht zwei oder mehr Zeiträume und stellt fest, wo sie sich überschneiden und gibt das gemeinsame Zeitintervall zwischen ihnen zurück.
Erzeugt eine Zeichenfolgendarstellung der Start- und Endwerte eines Zeitraums (TIMESTAMP
stellt einen Datentyp dar, der sowohl Datums- als auch Uhrzeitinformationen speichert. TIME
oder DATE
ist ein Datentyp, der zum Speichern von Kalenderdaten (Jahr, Monat und Tag) ohne Uhrzeitinformationen verwendet wird.) Diese Funktion emuliert die Periodenwert-Konstruktorfunktion von Teradata. Die Ausgabezeichenfolge folgt dem Standardformat von Snowflake für PERIOD
-Werte. Um die Genauigkeit der Ausgabe anzupassen, können Sie entweder:
Den Sitzungsparameter
timestamp_output_format
ändernDie Drei-Parameter-Version dieser UDF verwenden
Weitere Einzelheiten über die Quellfunktion finden Sie in der Teradata-Dokumentation.
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)
Parameter¶
TIMESTAMP
Der Datentyp TimeStamp stellt einen bestimmten Zeitpunkt dar, der sowohl die Datums- als auch die Uhrzeitkomponente enthält.
TIME
Der Datentyp Time stellt eine bestimmte Tageszeit ohne eine Datumskomponente dar.
DATE
Der Datentyp Date stellt ein Kalenderdatum ohne Uhrzeitkomponente dar.
PRECISIONDIGITS
gibt die Anzahl der Dezimalstellen an, die in numerischen Werten angezeigt werden sollen.
Die Anzahl der Ziffern, die im Uhrzeitformat angezeigt werden sollen
Rückgabewerte¶
Gibt eine Zeichenfolgendarstellung eines Wertes vom Typ PERIOD
zurück
Verwendungsbeispiel¶
Eingabe:
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');
Ausgabe:
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
DAYNAME_LONG_UDF (TIMESTAMP_TZ, VARCHAR)¶
Warnung
Dies ist die benutzerdefinierte Funktion (UDF), die zwei verschiedene Parametertypen akzeptiert.
Definition¶
Gibt den vollständigen Namen eines Wochentags in Großbuchstaben, Kleinbuchstaben oder Großbuchstaben zurück (z. B. „MONDAYׅ“, „monday“ oder „Monday“).
PUBLIC.DAYNAME_LONG_UDF(INPUT TIMESTAMP_TZ, RESULTCASE VARCHAR)
Parameter¶
INPUT
TIMESTAMP_TZ
Das Eingabedatum, aus dem der Wochentag ermittelt werden soll
RESULTCASE
VARCHAR
Das erwartete Ergebnis oder Szenario, das demonstriert werden soll
Rückgabewerte¶
Gibt eine Zeichenfolge zurück, die den vollständigen Namen eines Wochentags enthält
Verwendungsbeispiel¶
Eingabe:
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');
Ausgabe:
'TUESDAY'
'tuesday'
'Tuesday'
TD_DAY_OF_WEEK_COMPATIBLE_UDF¶
Definition¶
Verarbeitet einen Zeitstempel, um festzustellen, auf welchen Wochentag er fällt. Diese Funktion verhält sich identisch zu DAYNUMBER_OF_WEEK(DATE, 'COMPATIBLE')
.
PUBLIC.TD_DAY_OF_WEEK_COMPATIBLE_UDF(INPUT TIMESTAMP_TZ)
Parameter¶
INPUT
TIMESTAMP_TZ
Das Eingabedatum, das zur Bestimmung des Wochentags verwendet wird
Rückgabewerte¶
Gibt eine Zahl von 1 bis 7 zurück, die den Wochentag angibt, wobei 1 für den ersten Tag der Woche steht. Wenn der 1. Januar zum Beispiel auf einen Mittwoch fällt, dann ist Mittwoch = 1, Donnerstag = 2, Freitag = 3, Samstag = 4, Sonntag = 5, Montag = 6 und Dienstag = 7.
Verwendungsbeispiel¶
Eingabe:
SELECT PUBLIC.TD_DAY_OF_WEEK_COMPATIBLE_UDF(DATE '2022-01-01'),
PUBLIC.TD_DAY_OF_WEEK_COMPATIBLE_UDF(DATE '2023-05-05');
Ausgabe:
1, 6
JAROWINKLER_UDF¶
Definition¶
Berechnet anhand des Jaro-Winkler-Algorithmus, wie ähnlich zwei Zeichenfolgen sind. Dieser Algorithmus vergibt eine Punktzahl zwischen 0 (völlig unterschiedlich) und 1 (identisch).
PUBLIC.JAROWINKLER_UDF (string1 VARCHAR, string2 VARCHAR)
Parameter¶
string1
vom Typ VARCHAR
Der zu verarbeitende Text
string2
vom Typ VARCHAR
Der zu verarbeitende Text
Rückgabewerte¶
Die Funktion gibt entweder 0 oder 1 zurück.
Verwendungsbeispiel¶
Eingabe:
SELECT PUBLIC.JAROWINKLER_UDF('święta', 'swieta')
Ausgabe:
0.770000
YEAR_BEGIN_ISO_UDF¶
Definition¶
UDF, die den ersten Tag des ISO-Jahres für ein bestimmtes Datum berechnet. Sie ermittelt den Montag, der dem 1. Januar des Jahres am nächsten liegt, mit der Funktion DAYOFWEEKISO
in Kombination mit PUBLIC.FIRST_DAY_JANUARY_OF_ISO_UDF
. Die Funktion addiert oder subtrahiert Tage, um diesen Montag zu finden.
PUBLIC.YEAR_BEGIN_ISO_UDF(INPUT DATE)
Parameter¶
INPUT
TIMESTAMP_TZ
Das Datum, das den 1. Januar des laufenden Jahres nach dem ISO-Kalenderstandard darstellt
Rückgabewerte¶
Der erste Tag des Jahres nach dem ISO-Kalenderstandard
Verwendungsbeispiel¶
Eingabe:
SELECT PUBLIC.YEAR_BEGIN_ISO_UDF(DATE '2022-01-01'),
PUBLIC.YEAR_BEGIN_ISO_UDF(DATE '2022-04-12');
Ausgabe:
2021-01-04, 2022-01-03
YEAR_PART_UDF¶
Definition¶
Extrahiert das Jahr aus einem Datum und kürzt es auf eine bestimmte Anzahl von Ziffern
PUBLIC.YEAR_PART_UDF(INPUT TIMESTAMP_TZ, DIGITS INTEGER)
Parameter¶
INPUT
TIMESTAMP_TZ
Das Datum, aus dem das Jahr extrahiert werden soll
DIGITS
: Eine ganze Zahl, die die maximale Anzahl der anzuzeigenden Ziffern angibt
Die Anzahl der gewünschten Dezimalstellen in der Ausgabe
Rückgabewerte¶
Extrahiert die Jahreskomponente aus einem angegebenen Datum
Verwendungsbeispiel¶
Eingabe:
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);
Ausgabe:
'021'
'21'
'1'
YEAR_WITH_COMMA_UDF¶
Definition¶
Extrahiert das Jahr aus einem Datum und fügt ein Komma zwischen der ersten und zweiten Ziffer ein. Wenn das Jahr zum Beispiel 2023 ist, wird „2,023“ zurückgegeben.
PUBLIC.YEAR_WITH_COMMA_UDF(INPUT TIMESTAMP_TZ)
Parameter¶
INPUT
TIMESTAMP_TZ
Das Eingabedatum, aus dem das Jahr extrahiert werden soll
Rückgabewerte¶
Gibt den Jahresanteil eines Datumswertes als varchar (Text) mit einem Komma als Trennzeichen zurück
Verwendungsbeispiel¶
Eingabe:
SELECT PUBLIC.YEAR_WITH_COMMA_UDF(DATE '2021-10-26');
Ausgabe:
'2,021'
MONTHS_BETWEEN_UDF¶
Definition¶
Berechnet die Anzahl der Monate zwischen zwei Daten
MONTHS_BETWEEN_UDF(FIRST_DATE TIMESTAMP_LTZ, SECOND_DATE TIMESTAMP_LTZ)
Parameter¶
FIRST_DATE
ist eine Zeitstempelspalte, die sowohl Datums- als auch Uhrzeitinformationen enthält, mit Unterstützung der Zeitzone (TIMESTAMP_LTZ)
Das Anfangsdatum, ab dem die Funktion mit der Verarbeitung von Daten beginnt
SECOND_DATE
TIMESTAMP_LTZ
Das Enddatum, das festlegt, wann die Zählung beendet wird
Rückgabewerte¶
Die Dauer in Monaten zwischen zwei Daten
Verwendungsbeispiel¶
Eingabe:
SELECT MONTHS_BETWEEN_UDF('2022-02-14', '2021-02-14');
Ausgabe:
12
SECONDS_PAST_MIDNIGHT_UDF¶
Definition¶
Berechnet die Anzahl der seit Mitternacht verstrichenen Sekunden für eine bestimmte Uhrzeit
PUBLIC.SECONDS_PAST_MIDNIGHT_UDF(INPUT TIME)
Parameter¶
INPUT
TIME
Die Funktion berechnet die Gesamtzahl der seit Mitternacht (00:00:00) bis zur aktuellen Uhrzeit verstrichenen Sekunden.
Rückgabewerte¶
Ein varchar
-Wert, der die Anzahl der seit Mitternacht verstrichenen Sekunden angibt
Verwendungsbeispiel¶
Eingabe:
SELECT PUBLIC.SECONDS_PAST_MIDNIGHT_UDF(TIME'10:30:45');
Ausgabe:
'37845'
CHAR2HEXINT_UDF¶
Definition¶
Gibt eine Zeichenfolge zurück, die die Hexadezimaldarstellung (base-16) jedes Zeichens in der Eingabezeichenfolge enthält
PUBLIC.CHAR2HEXINT_UDF(INPUT_STRING VARCHAR);
Parameter¶
INPUT_STRING
ist eine Variable vom Typ VARCHAR, die Textdaten speichert.
Die Eingabezeichenfolge, die konvertiert werden muss
Rückgabewerte¶
Gibt eine Zeichenfolge zurück, die die Hexadezimaldarstellung der Eingabezeichenfolge enthält
Beispiel¶
Eingabe:
SELECT CHAR2HEXINT('1234') from t1;
Ausgabe:
SELECT
PUBLIC.CHAR2HEXINT_UDF('1234') from
t1;
Weitere Informationen aus der Quellfunktion¶
Die Funktionsdokumentation finden Sie in der Teradata-Dokumentation.
INTERVAL_ADD_UDF¶
Definition¶
UDFs (benutzerdefinierte Funktionen), die Subtraktionsoperationen zwischen einem Intervallwert und einer Spaltenreferenz vom Typ Intervall verarbeiten
PUBLIC.INTERVAL_ADD_UDF
(INPUT_VALUE1 VARCHAR(), INPUT_PART1 VARCHAR(30), INPUT_VALUE2 VARCHAR(), INPUT_PART2 VARCHAR(30), OP CHAR, OUTPUT_PART VARCHAR())
Parameter¶
INPUT_VALUE1
vom Typ VARCHAR
Die Eingabedaten, die vom System verarbeitet werden sollen
INPUT_PART1
vom Typ VARCHAR
Die zu verwendende Zeiteinheit, z. B. HOUR
INPUT_VALUE2
ist ein Parameter vom Datentyp VARCHAR.
Der Name der referenzierten Spalte, z. B. INTERVAL_HOUR_TYPE
INPUT_PART2
VARCHAR
Der Datentyp, der der referenzierten Spalte zugewiesen wurde
OP
-Zeichen
Das Symbol oder der Operator, das bzw. der gerade analysiert wird
OUTPUT_PART
VARCHAR
Der Datentyp des zurückgegebenen Wertes
Rückgabewerte¶
Ein varchar
-Wert, der das Ergebnis der Subtraktion zweier Zeitintervalle darstellt
Migrationsbeispiel¶
Eingabe:
CREATE TABLE INTERVAL_TABLE
(
INTERVAL_YEAR_TYPE INTERVAL YEAR
);
SELECT INTERVAL_YEAR_TYPE - INTERVAL '7' MONTH FROM INTERVAL_TABLE;
Ausgabe:
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;
DAY_OF_WEEK_LONG_UDF¶
Definition¶
Eine benutzerdefinierte Funktion (UDF), die einen Zeitstempel in den vollständigen Namen des Tages konvertiert (z. B. „Monday“, „Tuesday“ usw.)
PUBLIC.DAY_OF_WEEK_LONG_UDF(INPUT_DATE TIMESTAMP)
Parameter¶
INPUT_DATE
stellt einen Zeitstempelwert dar.
Der Zeitstempel wird in einen vollständigen Tagesnamen konvertiert (z. B. „Monday“, „Tuesday“ usw.).
Rückgabewerte¶
Der Name des Tages auf Englisch.
TD_WEEK_OF_CALENDAR_UDF¶
Definition¶
Die benutzerdefinierte Funktion (UDF) dient als direkter Ersatz für die Teradaa-Funktion TD_WEEK_OF_CALENDAR und bietet dieselbe Funktionalität in Snowflake.
PUBLIC.TD_WEEK_OF_CALENDAR_UDF(INPUT TIMESTAMP_TZ)
Parameter¶
INPUT
TIMESTAMP_TZ
Datum zur Berechnung der Anzahl der Wochen, die seit dem 1. Januar 1900 verstrichen sind
Rückgabewerte¶
Eine Ganzzahl, die die Anzahl der vollständigen Wochen zwischen dem 1. Januar 1900 und dem angegebenen Datum angibt
Migrationsbeispiel¶
Eingabe:
SELECT TD_WEEK_OF_CALENDAR(DATE '2023-11-30')
Ausgabe:
SELECT
PUBLIC.TD_WEEK_OF_CALENDAR_UDF(DATE '2023-11-30');
WRAP_NEGATIVE_WITH_ANGLE_BRACKETS_UDF¶
Definition¶
Konvertiert negative Zahlen so, dass statt des Minuszeichens (-) spitze Klammern (< >) verwendet werden Diese Konvertierung erfolgt, wenn das Formatelement PR (Parentheses, Klammern) in der ursprünglichen Teradata-Formatzeichenfolge vorhanden ist.
PUBLIC.WRAP_NEGATIVE_WITH_ANGLE_BRACKETS_UDF(INPUT NUMBER, FORMATARG VARCHAR)
Parameter¶
INPUT
ist ein numerischer Wert.
Der numerische Wert, der in eine Textzeichenfolge (varchar) umgewandelt wird
FORMATARG
ist ein Parameter vom Typ VARCHAR, der das Format der Daten angibt.
Der Formatparameter gibt an, wie der INPUT-Wert in eine Textdarstellung (varchar) umgewandelt werden soll.
Rückgabewerte¶
Ein varchar
mit negativen Zahlen in spitzen Klammern (< >)
Verwendungsbeispiel¶
Eingabe:
SELECT PUBLIC.WRAP_NEGATIVE_WITH_ANGLE_BRACKETS_UDF(8456, '9999');
SELECT PUBLIC.WRAP_NEGATIVE_WITH_ANGLE_BRACKETS_UDF(-8456, '9999');
Ausgabe:
'8456'
'<8456>'
INSTR_UDF (STRING, STRING)¶
Warnung
Dies ist die benutzerdefinierte Funktion (UDF), die zwei verschiedene Parametersätze akzeptiert.
Definition¶
Sucht alle Instanzen, in denen „search_string“ im „source_string“ vorkommt.
PUBLIC.INSTR_UDF(SOURCE_STRING STRING, SEARCH_STRING STRING)
Parameter¶
SOURCE_STRING
steht für die Eingabezeichenfolge, die verarbeitet werden muss.
Der Text, der gesucht werden soll
SEARCH_STRING
ist ein Parameter vom Typ STRING, der den Text angibt, nach dem gesucht werden soll.
Das Textmuster, das die Funktion sucht und vergleicht
Rückgabewerte¶
Die Indexposition, an der das Muster in der Quellzeichenfolge gefunden wird (beginnend an Position 1)
Verwendungsbeispiel¶
Eingabe:
SELECT INSTR_UDF('INSTR FUNCTION','N');
Ausgabe:
2
TRANSLATE_CHK_UDF¶
Definition¶
Überprüft, ob der Code erfolgreich konvertiert werden kann, ohne Fehler zu erzeugen
PUBLIC.TRANSLATE_CHK_UDF(COL_NAME STRING, SOURCE_REPERTOIRE_NAME STRING)
Parameter¶
COL_NAME
ist eine Zeichenfolgenvariable, die einen Spaltennamen darstellt.
Die Spalte, die validiert werden muss.
SOURCE_REPERTOIRE_NAME
ist ein Zeichenfolgenparameter, der den Namen des Quellverzeichnisses angibt.
Der Name der Quellsammlung oder -bibliothek
Rückgabewerte¶
0: Die Übersetzung war erfolgreich und wurde ohne Fehler abgeschlossen. NULL: Es wurde kein Ergebnis zurückgegeben (Nullwert).
Die Position des ersten Zeichens in der Zeichenfolge verursacht einen Übersetzungsfehler.
Verwendungsbeispiel¶
Eingabe:
SELECT PUBLIC.TRANSLATE_CHK_UDF('ABC', 'UNICODE_TO_LATIN');
Ausgabe:
0
EXPAND_ON_UDF¶
Bemerkung
Zur besseren Lesbarkeit haben wir einige Abschnitte des Codes in diesem Beispiel vereinfacht.
Definition¶
Repliziert das Verhalten der EXPAND-ON-Funktion von Teradata.
PUBLIC.EXPAND_ON_UDF(TIME STRING, SEQ NUMBER, PERIOD STRING)
Parameter¶
TIME
ist ein Datentyp, der Uhrzeitwerte als Text (STRING) speichert.
Die Zeit, die der Anker für die vollständige Erweiterung benötigt
SEQ
: Sequenznummer
Die Reihenfolge, in der die Werte der einzelnen Zeilen berechnet werden
PERIOD
: Ein Textwert, der einen Zeitraum darstellt
Das Datum des angegebenen Zeitraums
Rückgabewerte¶
Ein VARCHAR
-Wert, der definiert, wie der Erweiterungszeitraum in der EXPAND-ON-Klausel berechnet werden soll
Migrationsbeispiel¶
Eingabe:
SELECT bg FROM table1 EXPAND ON pd AS bg BY ANCHOR ANCHOR_SECOND;
Ausgabe:
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;
ROW_COUNT_UDF¶
Definition¶
Gibt ein Array zurück, das fortlaufende Nummern von 1 bis zu dem von DIFF_TIME_PERIOD_UDF zurückgegebenen Wert enthält
PUBLIC.ROW_COUNT_UDF(NROWS DOUBLE)
Parameter¶
NROWS
stellt die Gesamtzahl der Zeilen in einem Datenset als Dezimalzahl dar (DOUBLE).
Der von der Funktion DIFF_TIME_PERIOD_UDF zurückgegebene Wert
Rückgabewerte¶
Ein Array, das die Anzahl der Zeilen bestimmt, die erforderlich sind, um die Funktionalität der EXPAND ON-Klausel zu replizieren
Verwendungsbeispiel¶
Eingabe:
SELECT ROW_COUNT_UDF(DIFFTTIME_PERIOD('SECONDS','2022-11-26 10:15:20.000*2022-11-26 10:15:25.000'));
Ausgabe:
[1, 2, 3, 4, 5]
Migrationsbeispiel¶
Eingabe:
SELECT NORMALIZE emp_id, duration FROM project EXPAND ON duration AS bg BY ANCHOR ANCHOR_SECOND;
Ausgabe:
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;
CENTURY_UDF¶
Definition¶
Berechnet das Jahrhundert für ein bestimmtes Datum
PUBLIC.CENTURY_UDF(INPUT TIMESTAMP_TZ)
Parameter¶
INPUT
TIMESTAMP_TZ
Das Eingabedatum, das zur Bestimmung des Jahrhunderts verwendet wird
Rückgabewerte¶
Gibt die Jahrhundertzahl als varchar für ein bestimmtes Datum zurück
Verwendungsbeispiel¶
Eingabe:
SELECT PUBLIC.CENTURY_UDF(DATE '1915-02-23');
Ausgabe:
'20'
TIME_DIFFERENCE_UDF¶
Warnung
Diese UDF ist veraltet, da Snowflake jetzt eine integrierte gleichwertige Funktion bietet. Weitere Einzelheiten entnehmen Sie bitte der TIMEDIFF-Dokumentation.
Definition¶
Berechnet das Zeitintervall zwischen zwei angegebenen Zeitstempeln
PUBLIC.TIME_DIFFERENCE_UDF
(MINUEND TIME, SUBTRAHEND TIME, INPUT_PART VARCHAR)
Parameter¶
MINUEND
: Ein Zeitstempelwert, von dem subtrahiert wird
Die vom Ursprungswert zu subtrahierende Zeit
SUBTRAHEND
: Der Zeitstempelwert, der von einem anderen Zeitstempel subtrahiert werden soll
Die Zeit wurde subtrahiert.
INPUT_PART
ist eine Variable vom Typ VARCHAR, die Eingabedaten speichert.
EXTRACT_PART
ist eine Variable vom Typ VARCHAR, die den extrahierten Teil einer Zeichenfolge speichert.
Extrahiert einen numerischen Wert aus einem Zeitintervall
Rückgabewerte¶
Ein Textwert (VARCHAR), der eine bestimmte Uhrzeit angibt
Beispiel¶
Eingabe:
select extract(day from (timestampColumn1 - timestampColumn2 day to hour)) from tableName;
Ausgabe:
SELECT
EXTRACT_TIMESTAMP_DIFFERENCE_UDF(timestampColumn1, timestampColumn2, 'DAY TO HOUR', 'DAY')
from
tableName;
INTERVAL_DIVIDE_UDF¶
Definition¶
Eine benutzerdefinierte Funktion (UDF), die Berechnungen zur Intervalldivision durchführt
PUBLIC.INTERVAL_DIVIDE_UDF
(INPUT_PART VARCHAR(30), INPUT_VALUE VARCHAR(), INPUT_DIV INTEGER)
Parameter¶
INPUT_PART
ist eine Variable vom Typ VARCHAR, die den Eingabebereich der Daten darstellt.
Der Wert, der den Intervalltyp angibt, z. B. YEAR TO MONTH
INPUT_VALUE
VARCHAR
Das zu teilende Zeitintervall
INPUT_DIV
ist ein Ganzzahl-Wert, der den Eingabedivisor darstellt.
Die Zahl, die durch eine andere Zahl dividiert wird
Rückgabewerte¶
Die Ausgabe wird berechnet, indem ein Zeitintervall durch einen numerischen Wert dividiert wird.
Migrationsbeispiel¶
Eingabe:
SELECT INTERVAL '6-10' YEAR TO MONTH / 8;
Ausgabe:
SELECT
PUBLIC.INTERVAL_DIVIDE_UDF('YEAR TO MONTH', '6-10', 8);
DAYNUMBER_OF_MONTH_UDF¶
Definition¶
Die UDF bestimmt, auf welchen Tag des Monats ein bestimmter Zeitstempel fällt. Sie funktioniert ähnlich wie die Funktion DAYNUMBER_OF_MONTH(DATE, ‚ISO‘) von Teradata.
PUBLIC.DAYNUMBER_OF_MONTH_UDF(INPUT TIMESTAMP_TZ)
Parameter¶
INPUT
TIMESTAMP_TZ
Ein Datumswert, der verwendet wird, um den entsprechenden Wochentag zu bestimmen
Rückgabewerte¶
Eine ganze Zahl von 1 bis 33 (einschließlich)
Beispiel¶
Eingabe:
SELECT DAYNUMBER_OF_MONTH (DATE'2022-12-22', 'ISO');
Ausgabe:
SELECT
PUBLIC.DAYNUMBER_OF_MONTH_UDF(DATE'2022-12-22');
LAST_DAY_DECEMBER_OF_ISO_UDF¶
Definition¶
UDF (benutzerdefinierte Funktion), die den 31. Dezember verarbeitet und das entsprechende ISO-Jahr zurückgibt. Diese Funktion wird als Komponente der PUBLIC.YEAR_END_IDO_UDF-Berechnung verwendet.
PUBLIC.LAST_DAY_DECEMBER_OF_ISO_UDF(INPUT TIMESTAMP_TZ)
Parameter¶
INPUT
TIMESTAMP_TZ
Um den letzten Tag des Dezembers im ISO-Jahresformat zu erhalten, verwenden Sie den 31. Dezember.
Rückgabewerte¶
Ein Datum, das den 31. Dezember im ISO-Jahresformat darstellt
Verwendungsbeispiel¶
Eingabe:
SELECT PUBLIC.LAST_DAY_DECEMBER_OF_ISO_UDF(DATE '2022-01-01');
Ausgabe:
2021-12-31
DATEADD_UDF¶
Bemerkung
Zur besseren Lesbarkeit haben wir einige Abschnitte des Codes in diesem Beispiel vereinfacht.
Definition¶
Funktion zum Berechnen der Summe von zwei Daten
PUBLIC.DATE_ADD_UDF(FIRST_DATE DATE, SECOND_DATE DATE)
Parameter¶
FIRST_DATE
stellt eine Spalte vom Typ DATE dar.
Der anfängliche Datumswert, der einbezogen werden soll
SECOND_DATE
stellt eine Spalte vom Typ DATE dar.
Addiert den zweiten Datumswert zusammen mit first_date.
¶
Rückgabewerte¶
Das Ergebnis ist ein Datum, das aus der Kombination beider Eingabeparameter berechnet wird.
Beispiel¶
Eingabe:
SELECT
CAST(CAST (COLUMNB AS DATE FORMAT 'MM/DD/YYYY') AS TIMESTAMP(0))
+
CAST (COLUMNA AS TIME(0) FORMAT 'HHMISS' )
FROM TIMEDIFF;
Ausgabe:
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;
JULIAN_TO_DATE_UDF¶
Definition¶
Eine benutzerdefinierte Funktion (UDF), die ein julianisches Datumsformat (YYYYDDD) in ein Standarddatum des Gregorianischen Kalenders (YYYY-MM-DD) konvertiert
PUBLIC.JULIAN_TO_DATE_UDF(JULIAN_DATE CHAR(7))
Parameter¶
JULIAN_DATE
CHAR: Ein Zeichendatentyp, der zum Speichern von Datumsangaben im julianischen Format verwendet wird
Das Datum, das aus dem julianischen Format konvertiert werden soll
Rückgabewerte¶
Gibt die Datumsdarstellung des julianischen Datums zurück oder null, wenn die Konvertierung nicht durchgeführt werden kann
Verwendungsbeispiel¶
Eingabe:
SELECT JULIAN_TO_DATE_UDF('2022045');
Ausgabe:
'2022-02-14'
Migrationsbeispiel¶
Eingabe:
SELECT TO_DATE('2020002', 'YYYYDDD');
Ausgabe:
SELECT
PUBLIC.JULIAN_TO_DATE_UDF('2020002');
FIRST_DAY_JANUARY_OF_ISO_UDF¶
Definition¶
Der erste Tag des Januars im Kalenderjahr ISO, der von der Funktion PUBLIC.YEAR_BEGIN_ISO_UDF
zur Berechnung ihres Ergebnisses verwendet wird
FUNCTION PUBLIC.FIRST_DAY_JANUARY_OF_ISO_UDF(INPUT TIMESTAMP_TZ)
Parameter¶
INPUT
TIMESTAMP_TZ
Das Datum, das den 1. Januar darstellt, im ISO-Kalenderjahrformat
Rückgabewerte¶
Ein Datum, das den 1. Januar des angegebenen ISO-Kalenderjahres darstellt.
Verwendungsbeispiel¶
Eingabe:
SELECT PUBLIC.FIRST_DAY_JANUARY_OF_ISO_UDF(DATE '2022-01-01');
Ausgabe:
2021-01-01
TIMESTAMP_DIFFERENCE_UDF¶
Definition¶
Subtrahieren zweier Daten mit einer benutzerdefinierten Funktion (UDF)
PUBLIC.TIMESTAMP_DIFFERENCE_UDF
(MINUEND TIMESTAMP, SUBTRAHEND TIMESTAMP, INPUT_PART VARCHAR)
Unterschiede zwischen der Datums-/Uhrzeit-Subtraktion in Teradata und Snowflake¶
Teradata und Snowflake verwenden unterschiedliche Methoden zur Berechnung von Datum und Uhrzeit. Sie unterscheiden sich in ihrer Syntax, den Ausgabedatentypen und den Genauigkeitsstufen.
Syntax: In Teradata werden bei der Subtraktion von DATE, TIMESTAMP und TIME ein Minuszeichen und ein Intervall verwendet, um das Format des Ergebnisses anzugeben. Weitere Einzelheiten finden Sie unter https://docs.teradata.com/r/w19R4KsuHIiEqyxz0WYfgA/7kLLsWrP0kHxbk3iida0mA. Snowflake behandelt diese Vorgänge mit drei Funktionen unterschiedlich:
DATEDIFF (funktioniert mit allen Datumstypen)
TIMESTAMPDIFF
TIMEDIFF – jede Funktion benötigt die beiden zu vergleichenden Datumsangaben und den Datumsteil, der zurückgegeben werden soll. Für die DATE-Typen können Sie auch das Minuszeichen verwenden, das die Differenz in Tagen zurückgibt.
Rückgabetyp: Teradata gibt verschiedene Intervalltypen zurück (siehe https://www.docs.teradata.com/r/T5QsmcznbJo1bHmZT2KnFw/z~5iW7rYVstcmNYbd6Dsjg). Die Funktionen von Snowflake geben einen Ganzzahl-Wert zurück, der die Anzahl der Einheiten angibt. Einzelheiten finden Sie unter https://docs.snowflake.com/en/sql-reference/functions/datediff.html.
Rundung: Die Art und Weise, wie DATEDIFF Datumsteile behandelt, kann zu anderen Ergebnissen führen als bei Teradata. Informieren Sie sich unter https://docs.snowflake.com/en/sql-reference/functions/datediff.html#usage-notes über das Rundungsverhalten.
Warnung
Bei der Durchführung von Datumsberechnungen können die Ergebnisse aufgrund von Rundung oder Zeitzonenunterschieden um einen Tag abweichen.
Parameter¶
MINUEND
– ein Zeitstempelwert, von dem subtrahiert wird, stellt den Zeitstempelwert dar, von dem subtrahiert wird.
Das Datum, das als Ausgangspunkt für die Subtraktion verwendet wird
SUBTRAHEND
ist ein Zeitstempelwert, der von einem anderen Zeitstempel subtrahiert wird.
Das Datum wurde entfernt.
INPUT_PART
ist eine Variable vom Typ VARCHAR (Zeichenfolge mit variabler Länge).
Teile, die zurückgegeben werden müssen
Rückgabewerte¶
Formatiert den Zeichenfolgenwert auf der Grundlage des angegebenen INPUT_PART
-Parameters
Beispiel¶
Eingabe:
select (timestampColumn1 - timestampColumn2 YEAR) from tableName;
SELECT
(
PUBLIC.TIMESTAMP_DIFFERENCE_UDF(timestampColumn1, timestampColumn2, 'YEAR')) from
tableName;
FIRST_DAY_OF_MONTH_ISO_UDF¶
Definition¶
Die benutzerdefinierte Funktion (UDF) gibt den ersten Tag eines bestimmten Monats im ISO-Format zurück (YYYY-MM-DD).
PUBLIC.FIRST_DAY_OF_MONTH_ISO_UDF(YEAR NUMBER, MONTH NUMBER)
Parameter¶
YEAR
ist ein numerischer Datentyp, der zum Speichern eines vierstelligen Jahreswerts verwendet wird.
Ein numerischer Wert, der ein Kalenderjahr darstellt (z. B. 2023)
MONTH
– ein numerischer Wert, der einen Monat darstellt (1–12)
Ein numerischer Wert (1-12), der einen Kalendermonat darstellt.
Rückgabewerte¶
Gibt den ersten Tag des aktuellen Monats im ISO-Format zurück (YYYY-MM-DD).
Beispiel¶
Bemerkung
Diese UDF ist eine Hilfsfunktion, die innerhalb der Funktion DAYNUMBER_OF_MONTH_UDF
verwendet wird.
INT_TO_DATE_UDF¶
Definition¶
UDF, um numerische Werte in Datumswerte zu konvertieren (Teradata-Kompatibilitätsfunktion)
PUBLIC.INT_TO_DATE_UDF(NUMERIC_EXPRESSION INTEGER)
Parameter¶
NUMERIC_EXPRESSION
stellt einen numerischen Wert oder einen Ausdruck dar, der zu einer Ganzzahl ausgewertet wird.
Ein Wert, der ein Datum in einem bestimmten Format darstellt, z. B. YYYY-MM-DD
Rückgabewerte¶
In ein Datumsformat konvertierte Zahl
Beispiel¶
Eingabe:
SELECT * FROM table1
WHERE date_column > 1011219
Ausgabe:
SELECT
* FROM
table1
WHERE date_column > PUBLIC.INT_TO_DATE_UDF( 1011219);
NULLIFZERO_UDF¶
Definition¶
Ersetzt Nullwerte durch NULL in den Daten, um Fehler bei der Division durch null zu vermeiden
PUBLIC.NULLIFZERO_UDF(NUMBER_TO_VALIDATE NUMBER)
Parameter¶
NUMBER_TO_VALIDATE
NUMBER
Die Zahl, die validiert werden muss
Rückgabewerte¶
Gibt null zurück, wenn die eingegebene Zahl null ist; andernfalls wird die ursprüngliche Zahl zurückgegeben.
Verwendungsbeispiel¶
SELECT NULLIFZERO_UDF(0);
Ausgabe:
NULL
DATE_LONG_UDF¶
Definition¶
Konvertiert ein Datum in das Format „Tag, Monat DD, YYYY“ (zum Beispiel „Monday, January 01, 2024“). Dieses Format entspricht dem DL-Datumsformatelement von Teradata.
PUBLIC.DATE_LONG_UDF(INPUT TIMESTAMP_TZ)
Parameter¶
INPUT
TIMESTAMP_TZ
Das Datum sollte in einem langen Datumsformat angezeigt werden (zum Beispiel: „September 15, 2023“).
Rückgabewerte¶
Ein VARCHAR
-Datentyp, der das Teradata-DL-Formatelement darstellt
Verwendungsbeispiel¶
Eingabe:
SELECT PUBLIC.DATE_LONG_UDF(DATE '2021-10-26');
Ausgabe:
'Tuesday, October 26, 2021'
TD_MONTH_OF_CALENDAR_UDF¶
Definition¶
Die benutzerdefinierte Funktion (UDF) dient als Ersatz für die Teradata-Funktion TD_MONTH_OF_CALENDAR und bietet dieselbe Funktionalität.
PUBLIC.TD_MONTH_OF_CALENDAR_UDF(INPUT TIMESTAMP_TZ)
Parameter¶
INPUT
TIMESTAMP_TZ
Datum, das zur Berechnung der Anzahl der seit dem 1. Januar 1900 verstrichenen Monate verwendet wird
Rückgabewerte¶
Eine Ganzzahl, die die Anzahl der Monate zwischen dem 1. Januar 1900 und dem angegebenen Datum angibt
Migrationsbeispiel¶
Eingabe:
SELECT TD_MONTH_OF_CALENDAR(DATE '2023-11-30')
Ausgabe:
SELECT
PUBLIC.TD_MONTH_OF_CALENDAR_UDF(DATE '2023-11-30');
MONTH_NAME_LONG_UDF¶
Definition¶
Eine benutzerdefinierte Funktion (UDF), die einen Zeitstempel in den entsprechenden vollen Monatsnamen konvertiert
PUBLIC.MONTH_NAME_LONG_UDF(INPUT_DATE TIMESTAMP)
Parameter¶
INPUT
DATE
Der Zeitstempel sollte so konvertiert werden, dass der vollständige Monatsname angezeigt wird.
Rückgabewerte¶
Der Name des Monats auf Englisch.
TD_DAY_OF_CALENDAR_UDF¶
Definition¶
Benutzerdefinierte Funktion (UDF), die die Teradata-Funktionalität TO_DAY_OF_CALENDAR
repliziert
PUBLIC.TD_DAY_OF_CALENDAR_UDF(INPUT TIMESTAMP_TZ)
Parameter¶
INPUT
TIMESTAMP_TZ
Datum zur Berechnung der Anzahl der seit dem 1. Januar 1900 verstrichenen Tage
Rückgabewerte¶
Eine Ganzzahl, die die Anzahl der Tage zwischen dem 1. Januar 1900 und dem INPUT
-Datum angibt
Migrationsbeispiel¶
Eingabe:
SELECT td_day_of_calendar(current_date)
Ausgabe:
SELECT
PUBLIC.TD_DAY_OF_CALENDAR_UDF(CURRENT_DATE());
PERIOD_TO_TIME_UDF¶
Definition¶
Funktion, die einen Teradata-PERIOD-Wert in einen TIME-Wert konvertiert, wobei das Umwandlungsverhalten von Teradata beibehalten wird
PERIOD_TO_TIME_UDF(PERIOD_VAL VARCHAR(22))
Parameter¶
PERIOD_VAL
stellt einen Zeitraumwert dar.
Der Zeitraum, der konvertiert werden muss
Rückgabewerte¶
Die Funktion gibt einen TIME
-Wert zurück, der die PERIOD
darstellt. Wenn die Konvertierung nicht abgeschlossen werden kann, wird null zurückgegeben.
Verwendungsbeispiel¶
Eingabe:
SELECT PERIOD_TO_TIME_UDF(PERIOD_UDF(CURRENT_TIME()));
Ausgabe:
08:42:04
INSTR_UDF (STRING, STRING, DOUBLE, DOUBLE)¶
Warnung
Diese benutzerdefinierte Funktion (UDF) akzeptiert vier Eingabeparameter.
Definition¶
Sucht alle Instanzen, in denen „search_string“ im „source_string“ vorkommt.
PUBLIC.INSTR_UDF(SOURCE_STRING STRING, SEARCH_STRING STRING, POSITION DOUBLE, OCCURRENCE DOUBLE)
Parameter¶
SOURCE_STRING
steht für die Eingabezeichenfolge, die verarbeitet werden muss.
Die Textzeichenfolge, nach der gesucht werden soll.
SEARCH_STRING
ist ein Textwert, nach dem Sie suchen möchten.
Das Textmuster, das die Funktion sucht und vergleicht
POSITION
DOUBLE – ein numerischer Datentyp, der Dezimalzahlen mit doppelter Genauigkeit speichert.
Die Position im Text, an der die Suche beginnen soll (beginnend an Position 1)
OCCURRENCE
DOUBLE – ein numerischer Datentyp, der die Anzahl des Auftretens eines Ereignisses darstellt und als Gleitkommazahl mit doppelter Genauigkeit gespeichert wird
Die Position im Text, an der die Suche beginnen soll (beginnend an Position 1)
Rückgabewerte¶
Die Indexposition, an der sich der angegebene Text in der Quellzeichenfolge befindet
Verwendungsbeispiel¶
Eingabe:
SELECT INSTR_UDF('CHOOSE A CHOCOLATE CHIP COOKIE','CH',2,2);
Ausgabe:
20
ROUND_DATE_UDF¶
Definition¶
Eine benutzerdefinierte Funktion (UDF), die einen DATE_VALUE verarbeitet, indem sie den Uhrzeitanteil auf eine bestimmte Einheit rundet (UNIT_TO_ROUND_BY). Diese Funktion ist vergleichbar mit der Teradata-Funktion ROUND(date).
PUBLIC.ROUND_DATE_UDF(DATE_TO_ROUND TIMESTAMP_LTZ, UNIT_TO_ROUND_BY VARCHAR(5))
Parameter¶
DATE_TO_ROUND
TIMESTAMP_TZ – ein Zeitstempelwert mit Zeitzoneninformationen, der gerundet werden muss
Der Datumswert, der gerundet werden muss
UNIT_TO_ROUND_BY
VARCHAR – gibt die Zeiteinheit an, die für die Rundung verwendet wird
Die Zeiteinheit, die für die Rundung des Datums verwendet wird
Rückgabewerte¶
Gibt ein auf die angegebene Zeiteinheit gerundetes Datum zurück Der Parameter UNIT_TO_ROUND_BY bestimmt, wie das Datum gerundet werden soll.
Migrationsbeispiel¶
Eingabe:
SELECT ROUND(CURRENT_DATE, 'RM') RND_DATE
Ausgabe:
SELECT
PUBLIC.ROUND_DATE_UDF(CURRENT_DATE(), 'RM') RND_DATE;
SUBSTR_UDF (STRING, FLOAT, FLOAT)¶
Warnung
Dies ist die benutzerdefinierte Funktion (UDF), die drei Parameter akzeptiert.
Definition¶
Ruft einen Teil des Textes aus einer angegebenen Zeichenfolge unter Verwendung von Anfangs- und Endpositionen ab
PUBLIC.SUBSTR_UDF(BASE_EXPRESSION STRING, START_POSITION FLOAT, LENGTH FLOAT)
Parameter¶
BASE_EXPRESSION
ist ein Zeichenfolgenparameter, der den Basisausdruck definiert.
Der Quelltext, aus dem Sie einen Teil extrahieren möchten
START_POSITION
ist eine Gleitkommazahl, die die Anfangsposition definiert.
Die Position, an der Sie mit der Extraktion der Zeichen aus der Zeichenfolge beginnen möchten
LENGTH
ist eine Gleitkommazahl, die den Längenwert darstellt.
Die Position, an der Sie mit der Extraktion der Zeichen aus der Zeichenfolge beginnen möchten
Rückgabewerte¶
Die Teilzeichenfolge, die enthalten sein muss
Verwendungsbeispiel¶
Eingabe:
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);
Ausgabe:
'','','A','','A'
GETQUERYBANDVALUE_UDF (VARCHAR)¶
Warnung
Dies ist die benutzerdefinierte Funktion (UDF), die einen Parameter akzeptiert.
Definition¶
Gibt einen Wert aus einem im Transaktions-, Sitzungs- oder Profilabfrageband gespeicherten Name-Wert-Paar zurück.
GETQUERYBANDVALUE_UDF(SEARCHNAME VARCHAR)
Parameter¶
SEARCHNAME
VARCHAR – eine Variable vom Typ VARCHAR, die zum Speichern von Suchbegriffen oder Namen verwendet wird
Der Name, nach dem in den Schlüssel-Wert-Paaren gesucht werden soll
Rückgabewerte¶
Der name-Schlüsselwert des Sitzungsabfragebandes oder null, falls nicht vorhanden.
Verwendungsbeispiel¶
Eingabe:
ALTER SESSION SET QUERY_TAG = 'user=Tyrone;role=security';
SELECT GETQUERYBANDVALUE_UDF('role');
Ausgabe:
security
Migrationsbeispiel¶
Eingabe:
SELECT GETQUERYBANDVALUE(1, 'group');
Ausgabe:
/** MSC-ERROR - MSCEWI2084 - TRANSACTION AND PROFILE LEVEL QUERY TAGS NOT SUPPORTED IN SNOWFLAKE, REFERENCING SESSION QUERY TAG INSTEAD **/
SELECT GETQUERYBANDVALUE_UDF('group');
TD_WEEK_OF_YEAR_UDF¶
Definition¶
Benutzerdefinierte Funktion (UDF), die die volle Wochennummer eines bestimmten Datums innerhalb des Jahres berechnet. Diese Funktion bietet die gleiche Funktionalität wie die Funktionen TD_WEEK_OF_YEAR
und WEEKNUMBER_OF_YEAR
von Teradata.
PUBLIC.TD_WEEK_OF_YEAR_UDF(INPUT TIMESTAMP_TZ)
Parameter¶
INPUT
TIMESTAMP_TZ
Datum, das für die Berechnung der Wochennummer verwendet wird
Rückgabewerte¶
Ein numerischer Wert, der angibt, in welche Woche des Jahres das angegebene Datum fällt
Verwendungsbeispiel¶
Eingabe:
SELECT PUBLIC.WEEK_OF_YEAR_UDF(DATE '2024-05-10'),
PUBLIC.WEEK_OF_YEAR_UDF(DATE '2020-01-03')
Ausgabe:
18, 0
EXTRACT_TIMESTAMP_DIFFERENCE_UDF¶
Bemerkung
Für eine bessere Lesbarkeit haben wir die Codebeispiele vereinfacht, indem wir nur die wichtigsten Teile zeigen.
Definition¶
Ruft den Teil „Data“ aus dem Ergebnis der Subtraktion des SUBTRAHEND
vom MINUEND
ab
PUBLIC.EXTRACT_TIMESTAMP_DIFFERENCE_UDF
(MINUEND TIMESTAMP, SUBTRAHEND TIMESTAMP, INPUT_PART VARCHAR, EXTRACT_PART VARCHAR)
Unterschiede zwischen der Datums-/Uhrzeitextraktion in Teradata und Snowflake¶
Teradata- und Snowflake-Funktionen können unterschiedliche Parameteranforderungen haben und unterschiedliche Datentypen zurückgeben.
Parameter: Der wichtigste Unterschied zwischen den EXTRACT-Funktionen von Teradata und Snowflake ist, dass Snowflake nur mit Datums- und Uhrzeitangaben arbeitet, während Teradata auch Intervalle unterstützt. Weitere Einzelheiten finden Sie in der Dokumentation der EXTRACT-Funktion von Snowflake und in der Dokumentation der EXTRACT-Funktion in Teradata.
Rückgabetyp: Die Funktionen geben Werte auf unterschiedliche Weise zurück: EXTRACT von Teradata gibt entweder eine Ganzzahl oder decimal(8, 2) zurück, während EXTRACT von Snowflake eine Zahl zurückgibt, die den angeforderten Datums-Uhrzeit-Teil darstellt.
Die Teradata- und Snowflake-Funktionen können unterschiedliche Eingabeparameter und Ausgabetypen haben.
Parameter¶
MINUEND
TIMESTAMP
Das Datum, das als Ausgangspunkt für die Subtraktion verwendet wird
SUBTRAHEND
: Der Zeitstempelwert, der von einem anderen Zeitstempel subtrahiert werden soll
Das Datum wurde entfernt.
INPUT_PART
VARCHAR
Das formatierte varchar muss mit dem ursprünglich angeforderten Teil übereinstimmen (identisch mit TIMESTAMP_DIFERENCE
INPUT_PART
) und einer der folgenden Werte sein:
'DAY TO HOUR'
'DAY TO MINUTE'
'DAY TO SECOND'
'DAY TO MINUTE'
'HOUR TO MINUTE'
'HOUR TO SECOND'
'MINUTE TO SECOND'
EXTRACT_PART
ist vom VARCHAR-Datentyp und stellt den extrahierten Teil einer Zeichenfolge dar.
Die Zeiteinheit für die Extraktion muss einer der folgenden Werte sein: 'DAY'
, 'HOUR'
, 'MINUTE'
, oder 'SECOND'
. Die angeforderte Zeiteinheit sollte innerhalb des eingegebenen Zeitintervalls liegen.
Rückgabewerte¶
Die Anzahl der Anfragen, die in den Extraktionsprozess einbezogen wurden
Beispiel¶
Eingabe:
select extract(day from (timestampColumn1 - timestampColumn2 day to hour)) from tableName;
Ausgabe:
SELECT
EXTRACT_TIMESTAMP_DIFFERENCE_UDF(timestampColumn1, timestampColumn2, 'DAY TO HOUR', 'DAY')
from
tableName;
JSON_EXTRACT_DOT_NOTATION_UDF¶
Definition¶
Eine benutzerdefinierte Funktion (UDF), mit der Sie JSON-Objekte unter Verwendung der Punktnotation abfragen können, ähnlich wie Sie auf verschachtelte Eigenschaften in JavaScript oder Python zugreifen würden.
JSON_EXTRACT_DOT_NOTATION_UDF(JSON_OBJECT VARIANT, JSON_PATH STRING)
Unterschiede zwischen der Teradata-JSON Entitätsreferenz (Punktnotation) und der Snowflake-JSON-Abfragemethode¶
Teradata und Snowflake verwenden unterschiedliche Methoden, um JSON-Daten zu durchlaufen. Teradata verwendet einen JavaScript-basierten Ansatz mit Punktnotation, Array-Indizierung und speziellen Operatoren wie Platzhalterzugriff und Doppelpunktnotation. Im Gegensatz dazu verfügt Snowflake über eingeschränktere JSON-Durchlauffunktionen und unterstützt nur den direkten Elementzugriff und direkte Array-Indizierung.
Parameter¶
JSON_OBJECT
– ein Datentyp, der ein JSON-Objekt darstellt, das verschachtelte Schlüssel-Wert-Paare mit unterschiedlichen Datentypen enthalten kann
Das JSON-Objekt, das die Werte enthält, die Sie extrahieren möchten
JSON_PATH
– ein Zeichenfolgenparameter, der den Pfad zum Extrahieren von Daten aus einem JSON-Dokument angibt
Die Position im JSON_OBJECT, an der die Werte gefunden werden können, angegeben in JSON-Pfadnotation
Rückgabewerte¶
Die Datenelemente im JSON_OBJECT, die mit dem angegebenen JSON_PATH übereinstimmen
Migrationsbeispiel¶
Eingabe:
SELECT CAST(varcharColumn AS JSON(2000))..name FROM variantTest;
Ausgabe:
SELECT
JSON_EXTRACT_DOT_NOTATION_UDF(CAST(varcharColumn AS VARIANT), '$..name')
FROM
variantTest;
WEEK_OF_MONTH_UDF¶
Definition¶
Berechnet, in welche Woche des Monats ein bestimmtes Datum fällt
PUBLIC.WEEK_OF_MONTH_UDF(INPUT TIMESTAMP_TZ)
Parameter¶
INPUT
TIMESTAMP_TZ
Das Datum, das verwendet wird, um zu bestimmen, in welche Woche des Monats es fällt
Rückgabewerte¶
Eine VARCHAR-Spalte, die anzeigt, in welche Woche des Monats ein bestimmtes Datum fällt
Verwendungsbeispiel¶
Eingabe:
SELECT PUBLIC.WEEK_OF_MONTH_UDF(DATE '2021-10-26');
Ausgabe:
'4'
DAYNAME_LONG_UDF (TIMESTAMP_TZ)¶
Warnung
Dies ist die benutzerdefinierte Funktion (UDF), die einen Parameter akzeptiert.
Definition¶
UDF, die eine Variante der DAYNAME_LONG_UDF-Funktion erstellt, die Tagesnamen mit dem ersten Buchstaben in Großbuchstaben zurückgibt (Standardformat)
PUBLIC.DAYNAME_LONG_UDF(INPUT TIMESTAMP_TZ)
Parameter¶
INPUT
TIMESTAMP_TZ
Das Datum, anhand dessen Sie den Wochentag ermitteln möchten
Rückgabewerte¶
Gibt eine Zeichenfolge zurück, die den vollständigen Namen eines Wochentags enthält
Verwendungsbeispiel¶
Eingabe:
SELECT PUBLIC.DAYNAME_LONG_UDF(DATE '2022-06-30');
Ausgabe:
'Thursday'
INTERVAL_TO_MONTHS_UDF¶
Definition¶
Konvertiert ein Zeitintervall in Monate
PUBLIC.INTERVAL_TO_MONTHS_UDF
(INPUT_VALUE VARCHAR())
Parameter¶
INPUT_VALUE
VARCHAR
Der Zeitraum, der in Monate umgewandelt wird
Rückgabewerte¶
Die Anzahl der zu verarbeitenden Monate, angegeben als Ganzzahl
GETQUERYBANDVALUE_UDF (VARCHAR, FLOAT, VARCHAR)¶
Warnung
Diese benutzerdefinierte Funktion (UDF) akzeptiert drei Parameter.
Definition¶
Gibt einen Wert aus einem im Transaktions-, Sitzungs- oder Profilabfrageband gespeicherten Name-Wert-Paar zurück. Der Wert ist mit einem bestimmten Namen im Abfrageband verknüpft.
GETQUERYBANDVALUE_UDF(QUERYBAND VARCHAR, SEARCHTYPE FLOAT, SEARCHNAME VARCHAR)
Parameter¶
QUERYBAND
ist vom Datentyp VARCHAR und speichert Abfragebandinformationen.
Das Abfrageband kombiniert Transaktions-, Sitzungs- und Profilabfragebänder in einer einzigen Zeichenfolge.
SEARCHTYPE
ist ein Gleitkommazahl-Datentyp.
Die maximale Tiefe, in der nach übereinstimmenden Paaren gesucht werden soll.
0 steht für einen Platzhalterwert, der mit jeder Eingabe übereinstimmt.
Eine Transaktion stellt eine einzelne Arbeitseinheit in einer Datenbank dar.
Ein Sitzungsobjekt stellt eine Verbindung mit Snowflake dar.
3 = Profil erstellen
SEARCHNAME
VARCHAR
Der Name, nach dem in den Schlüssel-Wert-Paaren gesucht werden soll
Rückgabewerte¶
Gibt den Wert des name-Schlüssels auf der angegebenen Ebene in der Hierarchie zurück. Wenn kein Wert gefunden wird, wird null zurückgegeben.
Verwendungsbeispiel¶
Eingabe:
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');
Ausgabe:
Matt
SaraDB
DbAdmin
NULL
Migrationsbeispiel¶
Eingabe:
SELECT GETQUERYBANDVALUE('=T> account=Matt;user=Matt200; =S> account=SaraDB;user=Sara;role=DbAdmin;', 0, 'account')
Ausgabe:
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;
JULIAN_DAY_UDF¶
Definition¶
Berechnet die julianische Tageszahl, die die kontinuierliche Zählung der Tage seit dem 1. Januar 4713 BCE (Before Common Era, vor unserer Zeitrechnung) darstellt. Der Julianische Tag wird in der Astronomie und bei Kalenderberechnungen verwendet.
PUBLIC.JULIAN_DAY_UDF(INPUT TIMESTAMP_TZ)
Parameter¶
INPUT
TIMESTAMP_TZ
Das Datum, das in eine julianische Tageszahl konvertiert wird
Rückgabewerte¶
Ein varchar
-Wert, der das berechnete julianische Datum darstellt
Verwendungsbeispiel¶
Eingabe:
SELECT PUBLIC.JULIAN_DAY_UDF(DATE '2021-10-26');
Ausgabe:
'2459514'
WEEKNUMBER_OF_MONTH_UDF¶
Definition¶
Identifiziert den Monat anhand eines bestimmten Datums
PUBLIC.WEEKNUMBER_OF_MONTH_UDF(INPUT TIMESTAMP_TZ)
Parameter¶
INPUT
TIMESTAMP_TZ
Das Datum, aus dem die Monatszahl berechnet wird
Rückgabewerte¶
Ein numerischer Wert, der den Monat (1–12) eines bestimmten Datums angibt
Verwendungsbeispiel¶
Eingabe:
SELECT PUBLIC.WEEKNUMBER_OF_MONTH_UDF(DATE '2022-05-21')
Ausgabe:
3
JSON_EXTRACT_UDF¶
Definition¶
Eine benutzerdefinierte Funktion (UDF), die das Verhalten der Funktionen JSONExtract
, JSONExtractValue
und JSONExtractLargeValue
imitiert. Diese UDF ermöglicht es Ihnen, mehrere Werte aus einem JSON-Objekt zu extrahieren.
JSON_EXTRACT_UDF(JSON_OBJECT VARIANT, JSON_PATH STRING, SINGLE_VALUE BOOLEAN)
Parameter¶
JSON_OBJECT
ist von einem Datentyp, der JSON-formatierte Daten in einem strukturierten Format speichert.
Das JSON-Objekt, das die Werte enthält, die Sie extrahieren möchten
JSON_PATH
– eine Zeichenfolge, die den Pfad zum Extrahieren von Daten aus einem JSON-Dokument angibt
Die Position im JSON_OBJECT, an der die gewünschten Werte zu finden sind, angegeben in JSON-Pfadnotation
SINGLE_VALUE
– ein boolesches Flag, das angibt, ob ein einzelner Wert oder mehrere Werte zurückgegeben werden sollen
BOOLEAN-Parameter: Wenn er auf true gesetzt ist, gibt er einen einzelnen Wert zurück (erforderlich für die Funktionen JSONExtractValue und JSONExtractLargeValue). Wenn false, wird ein Array von Werten zurückgegeben (wird mit JSONExtractverwendet).
Rückgabewerte¶
Die Datenwerte, die unter dem angegebenen JSON-Pfad im JSON-Objekt gefunden wurden.
Migrationsbeispiel¶
Eingabe:
SELECT
Store.JSONExtract('$..author') as AllAuthors
FROM BookStores;
Ausgabe:
SELECT
JSON_EXTRACT_UDF(Store, '$..author', FALSE) as AllAuthors
FROM
BookStores;
COMPUTE_EXPAND_ON_UDF¶
Definition¶
Bestimmt, wie die Daten auf der Grundlage des angegebenen Zeitraumtyps erweitert werden sollen
PUBLIC.COMPUTE_EXPAND_ON_UDF(TIME STRING, SEQ NUMBER, PERIOD TIMESTAMP, PERIODTYPE STRING)
Parameter¶
TIME
STRING
Der im Anker verwendete Zeitstempel
SEQ
: Sequenznummer
Die Reihenfolge, in der die Berechnungen der einzelnen Zeilen durchgeführt werden
PERIOD
stellt einen Zeitstempelwert dar, der einen bestimmten Zeitpunkt angibt.
Das Datum des angegebenen Zeitraums
PERIODTYPE
ist ein Zeichenfolgenwert, der den Typ des Zeitraums definiert.
Der für die Berechnung verwendete Zeitraum (entweder BEGIN
oder END
)
Rückgabewerte¶
Ein Zeitstempel, der angibt, wann jede Zeile in der EXPAND-ON-Operation verarbeitet wurde
Beispiel¶
Warnung
Diese UDF ist eine abgeleitete Funktion, die die Funktionalität von EXPAND_ON_UDF erweitert.
WEEK_NUMBER_OF_QUARTER_UDF¶
Definition¶
Gibt die Wochennummer innerhalb des aktuellen Quartals für ein bestimmtes Datum zurück. Diese Funktion verhält sich genauso wie die Funktion WEEKNUMBER_OF_QUARTER(DATE, 'ISO')
von Teradata, die das ISO-Kalendersystem verwendet.
PUBLIC.WEEK_NUMBER_OF_QUARTER_UDF(INPUT TIMESTAMP_TZ)
Parameter¶
INPUT
TIMESTAMP_TZ
Das Datum, anhand dessen berechnet wird, in welche Woche des Quartals es fällt
Rückgabewerte¶
Eine Ganzzahl, die angibt, welche Woche des Quartals (1–13) referenziert wird
Verwendungsbeispiel¶
Eingabe:
SELECT WEEK_NUMBER_OF_QUARTER_UDF(DATE '2023-01-01'),
WEEK_NUMBER_OF_QUARTER_UDF(DATE '2022-10-27')
Ausgabe:
1, 4
YEAR_END_ISO_UDF¶
Definition¶
Benutzerdefinierte Funktion (UDF), die den letzten Tag des Jahres für ein bestimmtes Datum unter Verwendung der ISO-Kalenderstandards berechnet, ähnlich wie die Funktion TD_YEAR_END von Teradata
PUBLIC.YEAR_END_ISO_UDF(INPUT date)
Parameter¶
INPUT
DATE
Das Datum, das den letzten Tag des Jahres nach dem ISO-Kalenderstandard darstellt
Rückgabewerte¶
Der letzte Tag des Jahres nach dem ISO-Kalendersystem
Verwendungsbeispiel¶
Eingabe:
SELECT PUBLIC.YEAR_END_ISO_UDF(DATE '2022-01-01'),
PUBLIC.YEAR_END_ISO_UDF(DATE '2022-04-12');
Ausgabe:
2022-01-02, 2023-01-01
INSERT_CURRENCY_UDF¶
Definition¶
Fügen Sie das Währungssymbol direkt vor der ersten Ziffer der Zahl ein, und achten Sie darauf, dass sich zwischen dem Währungssymbol und der Zahl keine Leerzeichen oder Symbole befinden.
PUBLIC.INSERT_CURRENCY_UDF(INPUT VARCHAR, CURRENCYINDEX INTEGER, CURRENCYVALUE VARCHAR)
Parameter¶
INPUT
VARCHAR
Die Ausgabe von TO_CHAR bei der Konvertierung eines numerischen Wertes, der eine Währungsformatierung erfordert
CURRENCYINDEX
ist ein Ganzzahl-Wert, der den Index einer Währung darstellt.
Die Position im Array, an der die Währung eingefügt werden soll
CURRENCYVALUE
– ein VARCHAR-Feld, das Währungswerte speichert
Der Text, der als Währungswert verwendet werden soll
Rückgabewerte¶
Ein varchar
-Feld, das den Währungstext an einer bestimmten Position enthält
Verwendungsbeispiel¶
Eingabe:
SELECT PUBLIC.INSERT_CURRENCY_UDF(to_char(823, 'S999999'), '1', 'CRC');
Ausgabe:
'+CRC823'
INSTR_UDF (STRING, STRING, INT)¶
Warnung
Diese benutzerdefinierte Funktion (UDF) akzeptiert drei Parameter.
Definition¶
Sucht alle Instanzen, in denen „search_string“ im „source_string“ vorkommt.
PUBLIC.INSTR_UDF(SOURCE_STRING STRING, SEARCH_STRING STRING, POSITION INT)
Parameter¶
SOURCE_STRING
stellt einen Zeichenfolgenwert dar, der als Eingabe verwendet wird.
Der Text, der gesucht werden soll
SEARCH_STRING
ist ein Textwert, nach dem Sie suchen möchten.
Das Textmuster, das die Funktion sucht und vergleicht
POSITION
ist ein Ganzzahl-Datentyp, der eine Position in einer Sequenz darstellt.
Die Position im Text, an der die Suche beginnt (beginnend an Position 1)
Rückgabewerte¶
Die Position in der ursprünglichen Zeichenfolge, an der die Übereinstimmung gefunden wurde
Verwendungsbeispiel¶
Eingabe:
SELECT INSTR_UDF('FUNCTION','N', 3);
Ausgabe:
8