SnowConvert AI - Oracle - SnowConvert AI UDFs personnalisées¶
Description¶
Certaines fonctions et fonctionnalités intégrées d’Oracle peuvent ne pas être disponibles ou se comporter différemment dans Snowflake. Pour minimiser ces différences, certaines fonctions sont remplacées par des SnowConvert AI UDFs personnalisées.
Ces UDFs sont automatiquement créées lors de la migration, dans le dossier UDF Helper, à l’intérieur du dossier Output. Il y a un fichier par UDF personnalisée.
BFILENAME UDF¶
Description¶
Cette fonction prend le nom du répertoire et les paramètres du nom de fichier de Oracle BFILENAME() comme STRING et renvoie une concaténation de ceux-ci à l’aide de \. Comme BFILE est traduit en VARCHAR, le résultat BFILENAME est traité comme du texte.
Avertissement
\ doit être modifié pour correspondre au caractère de concaténation du fichier correspondant du système d’opérateur.
Surcharges UDF personnalisées¶
BFILENAME_UDF(string, string)¶
Concatène le chemin du répertoire et le nom du fichier.
Paramètres
DIRECTORYNAME : Une
STRINGqui représente le chemin du répertoire.FILENAME : Une
STRINGqui représente le nom du fichier.
UDF¶
Oracle¶
Résultat¶
COL1 |
|---|
[BFILE:myfile.png] |
Snowflake¶
Résultat¶
COL1 |
|---|
mydirectory\myfile.png |
Problèmes connus¶
1. No access to the DBMS_LOB built-in package¶
Les types de données LOB n’étant pas pris en charge dans Snowflake, il n’existe pas d’équivalent pour les fonctions DBMS_LOB et aucune solution de contournement n’a encore été mise en œuvre.
CAST_DATE UDF¶
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Cette UDF personnalisée est ajoutée pour éviter les exceptions d’exécution causées par des différences de format lors de la conversion de chaînes en DATE, à l’intérieur de procédures et de fonctions.
Surcharges UDF personnalisées¶
CAST_DATE_UDF(datestr)¶
Crée une DATE à partir d’une STRING.
Paramètres
DATESTR : Une
STRINGqui représente uneDATEavec un format spécifique.
UDF¶
Oracle¶
Résultat¶
COL1 |
|---|
1996-03-20 00:00:00.000 |
Snowflake¶
Résultat¶
COL1 |
|---|
1996-03-20 |
Problèmes connus¶
1. Oracle DATE contains TIMESTAMP¶
Tenez compte du fait que DATE d’Oracle contient un TIMESTAMP vide (00:00:00.000), ce qui n’est pas le cas avec DATE de Snowflake. SnowConvert AI permet de transformer DATE vers TIMESTAMP avec l’indicateur SysdateAsCurrentTimestamp.
EWIs connexes¶
SSC-FDM-OR0042 : Le type de date transformé en horodatage a un comportement différent
DATE_TO_JULIANDAYS_UDF¶
Description¶
La fonction DATE_TO_JULIANDAYS_UDF() prend une DATE et renvoie le nombre de jours depuis le 1er janvier, 4712 BC. Cette fonction est équivalente à Oracle TO_CHAR(DATE, “J”)
Surcharges UDF personnalisées¶
DATE_TO_JULIANDAYS_UDF(date)¶
Paramètres
INPUT\DATE :
DATEde l’opération.
UDF¶
Exemple d’utilisation¶
Oracle¶
Snowflake¶
Problèmes connus¶
Aucun problème n’a été constaté.
EWIs connexes¶
SSC-FDM-OR0042 : Le type de date transformé en horodatage a un comportement différent
DATEADD UDF¶
Description¶
Cette UDF est utilisée comme modèle pour tous les cas où il y a un ajout entre un type DATE ou TIMESTAMP et un type FLOAT.
Surcharges UDF personnalisées¶
DATEADD_UDF(date, float)¶
Paramètres
FIRST\PARAM : Première
DATEde l’opération.SECOND\PARAM : Valeur
FLOATà ajouter.
UDF¶
DATEADD_UDF(float, date)¶
Paramètres
FIRST\PARAM : Valeur
FLOATà ajouter.SECOND\PARAM :
DATEde l’opération.
UDF¶
DATEADD_UDF(timestamp, float)¶
Paramètres
FIRST\PARAM : Premier
TIMESTAMPde l’opération.SECOND\PARAM : Valeur
FLOATà ajouter.
UDF¶
DATEADD_UDF(float, timestamp)¶
Paramètres
FIRST\PARAM :
FLOATde l’opération.SECOND\PARAM :
TIMESTAMPde l’opération.
UDF¶
Exemple d’utilisation¶
Oracle¶
Résultat¶
TO_TIMESTAMP(“03/08/2009,12:47AM”,”DD/MM/YY,HH:MIAM”)+62.40750856543442 |
|---|
2009-10-04 10:33:49.000 |
Snowflake¶
Résultat¶
|PUBLIC.DATEADD_UDF(
TO_TIMESTAMP(“03/08/2009, 12:47 AM”, “DD/MM/YY, HH12:MI AM”), 62.40750856543442) |
|---|
2009-10-04 00:47:00.000 |
Problèmes connus¶
1. Differences in time precision¶
Lorsqu’il existe des opérations entre des dates ou des horodatages et des valeurs flottantes, l’heure peut différer de celle d’Oracle. Une action a été lancée pour corriger ce problème.
EWIs connexes¶
Pas d’EWIs connexes.
DATEDIFF UDF¶
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Cette UDF est utilisée comme modèle dans tous les cas où il y a soustraction entre DATE, TIMESTAMP, et tout autre type (sauf Intervalles).
Surcharges UDF personnalisées¶
DATEDIFF_UDF(date, date)¶
Paramètres
FIRST\PARAM : Première
DATEde l’opération.SECOND_PARAM :
DATEà soustraire.
UDF¶
DATEDIFF_UDF(date, timestamp)¶
Paramètres
FIRST\PARAM : Première
DATEde l’opération.SECOND_PARAM :
TIMESTAMPà soustraire.
UDF¶
DATEDIFF_UDF(date, integer)¶
Paramètres
FIRST\PARAM : Première
DATEde l’opération.SECOND_PARAM :
INTEGERà soustraire.
UDF¶
DATEDIFF_UDF(timestamp, timestamp)¶
Paramètres
FIRST\PARAM : Premier
TIMESTAMPde l’opération.SECOND_PARAM :
TIMESTAMPà soustraire.
UDF¶
DATEDIFF_UDF(timestamp, date)¶
Paramètres
FIRST\PARAM : Premier
TIMESTAMPde l’opération.SECOND_PARAM :
DATEà soustraire.
UDF¶
DATEDIFF_UDF(timestamp, number)¶
Paramètres
FIRST\PARAM : Premier
TIMESTAMPde l’opération.SECOND_PARAM :
NUMBERà soustraire.
UDF¶
Exemple d’utilisation¶
Note
L’inconnu est une colonne dont le type n’a pas pu être résolu, il peut s’agir d’un horodatage, d’une date entière ou d’un nombre.
Note
--disableDateAsTimestamp
Indicateur spécifiant si SYSDATE doit être transformé en CURRENT_DATE ou CURRENT_TIMESTAMP. Cela affectera également toutes les colonnes DATE qui seront transformées en TIMESTAMP.
Oracle¶
Snowflake¶
Problèmes connus¶
1. Functional differences for timestamps¶
Il arrive que la valeur de Snowflake renvoyée par l’UDF diffère de celle d’Oracle en raison de l’heure. Considérez l’exemple suivant
Oracle¶
Résultat¶
ASTIMESTAMP-UNKNOWN |
|---|
4417 23:0:0.0 |
Snowflake¶
Résultat¶
PUBLIC.DATEDIFF_UDF( ASTIMESTAMP, UNKNOWN) |
|---|
4418 |
EWIs connexes¶
SSC-EWI-OR0036: Problèmes de résolution des types, l’opération arithmétique peut ne pas se comporter correctement entre la chaîne et la date.
SSC-FDM-OR0042: Le type de date transformé en horodatage a un comportement différent.
JSON_VALUE UDF¶
Référence de traduction pour convertir la fonction JSON_VALUE Oracle vers Snowflake
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Conformément à la documentation d’Oracle, cette fonction utilise l’expression de chemin SQL/JSON pour requérir des informations sur une partie d’une instance JSON. La valeur de retour est toujours une valeur scalaire, sinon la fonction renvoie NULL par défaut.
Le site JSON_VALUE_UDF est une implémentation Snowflake de la spécification JSONPath qui utilise une version modifiée de l’implémentation originale JavaScript développée par Stefan Goessner.
Modèles d’échantillons de sources¶
Données de configuration¶
Exécutez ces requêtes pour exécuter les requêtes de la section Modèles JSON_VALUE.
Oracle¶
Snowflake¶
Modèles JSON_VALUE¶
Oracle¶
Résultats¶
JSON Path |
Résultat de la requête |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Snowflake¶
Résultats¶
JSON Path |
Résultat de la requête |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NOT SUPPORTED |
|
NOT SUPPORTED |
Problèmes connus¶
1. Returning Type Clause is not fully supported¶
Désormais, les seuls types pris en charge lors de la traduction de la fonctionnalité de la clause RETURNING TYPE sont VARCHAR2, CLOB et NUMBER.
Pour tous les autres types pris en charge par la fonction originale JSON_VALUE, la fonction JSON_VALUE_UDF se comportera comme si aucune clause RETURNING TYPE n’avait été spécifiée.
Types non pris en charge :
DATETIMESTAMP [WITH TIME ZONE]SDO_GEOMETRYCUSTOM TYPE
2. ON MISMATCH Clause is not supported¶
Désormais, la clause ON MISMATCH n’est pas prise en charge et un avertissement EWI est placé à la place. Ainsi, le code traduit se comportera comme si aucune clause ON MISMATCH n’avait été spécifiée à l’origine.
3. Complex filters are not supported¶
Les filtres complexes comportant plus d’une expression renverront un résultat null, car ils ne sont pas pris en charge.
Par exemple, avec les mêmes données que précédemment, ce chemin JSON $.store.book[*]?(@.category == "reference").title est pris en charge et renverra 'Sayings of the Century'.
Cependant, $.store.book[*]?(@.category == "reference" && @.price < 10).title renverra null puisque plus d’une expression est utilisée dans le filtre.
EWIs connexes¶
SSC-EWI-0021 : Non pris en charge dans Snowflake.
JULIAN TO GREGORIAN DATE UDF¶
Description¶
Cette fonction définie par l’utilisateur (UDF) est utilisée pour transformer ou convertir le format de date julien en format de date grégorien. Les dates juliennes peuvent être reçues dans trois formats différents tels que JD Edwards World, astronomie ou le format ordinaire.
Surcharges UDF personnalisées¶
JULIAN_TO_GREGORIAN_DATE_UDF(julianDate, formatSelected)¶
Renvoie une chaîne avec le format de date grégorien YYYY-MM-DD.
Paramètres :¶
JulianDate : La date julienne qui doit être transmise. Il peut s’agir de CYYDDD (où C est le siècle) ou de YYYYDDD.
formatSelected : Représente le format dans lequel la date julienne doit être traitée. En outre, il s’agit d’un CHAR qui peut accepter les formats suivants :
Format disponible |
Représentation de lettres dans CHAR |
Description |
|---|---|---|
Astronomie standardisée |
“J” |
Est le format par défaut. La conversion est basée sur la conversion attendue du département des applications astronomiques des US. Le format de date en julien pour ceci est YYYYDDD. |
JD Edwards World |
“E” |
La date en julien attendue de réception dans ce cas doit être CYYDDD (où C représente le siècle et une opération ajoute 19 au nombre correspondant). |
Dates ordinales |
“R” |
Les dates ordinales sont un ensemble de nombres qui représentent une date de façon concise. Le format est YYYYDDD et peuvent être facilement lus car la partie année n’est pas modifiable. |
UDF¶
Exemple d’utilisation¶
Oracle¶
Résultat¶
TO_DATE(“2020001”, “J”) |
|---|
18-JUN-18 |
Résultat formaté¶
TO_CHAR(TO_DATE(“2020001”, “J”), “YYYY-MON-DD”) |
|---|
0818-JUN-18 |
Note: The date must be formatted to visualize all digits of the year.
Snowflake¶
Résultat¶
JULIAN_TO_GREGORIAN_DATE_UDF(“2020001”, “J”) |
|---|
« 0818-06-18 » |
Problèmes connus¶
Tout autre format : Si la date julienne est formatée dans un autre format non pris en charge, il y aura des différences dans la sortie.
Les plages de dates de B.C. peuvent présenter des incohérences dues à des fonctions Snowflake non prises en charge pour les dates.
EWIs connexes¶
Pas d’EWIs connexes.
MONTHS BETWEEN UDF [DEPRECATED]¶
Danger
Cette UDF a été supprimée. La fonction actuelle pour Oracle MONTHS_BETWEEN() est Snowflake MONTHS_BETWEEN().
Description¶
MONTHS_BETWEENrenvoie le nombre de mois entre les datesdate1anddate2. (Oracle MONTHS_BETWEEN Référence linguistique SQL)
Les fonctions Oracle MONTHS_BETWEEN et Snowflake MONTHS_BETWEEN présentent quelques différences fonctionnelles. Afin de minimiser ces différences et de mieux répliquer la fonction Oracle MONTHS_BETWEEN, nous avons ajouté une UDF personnalisée.
Surcharges UDF personnalisées¶
MONTHS_BETWEEN_UDF(timestamp_ltz, timestamp_ltz)¶
Paramètres
FIRST\DATE : Premier
TIMESTAMP_LTZde l’opération.SECOND\DATE : Le deuxième
TIMESTAMP_LTZde l’opération.
UDF¶
Oracle¶
Résultat¶
MONTHS_BETWEEN(“2000-03-2022:01:11”,”1996-03-2010:01:11”) |
MONTHS_BETWEEN(“1996-03-2022:01:11”,”2000-03-2010:01:11”) |
MONTHS_BETWEEN(“1982-05-1122:31:19”,”1900-01-2515:21:15”) |
MONTHS_BETWEEN(“1999-12-2501:15:16”,”1900-12-1102:05:16”) |
|---|---|---|---|
48 |
-48 |
987.558021206690561529271206690561529271 |
1188.450492831541218637992831541218637993 |
Snowflake¶
Résultat¶
MONTHS_BETWEEN_UDF(“2000-03-20 22:01:11”, “1996-03-20 10:01:11”) |
MONTHS_BETWEEN_UDF(“1996-03-20 22:01:11”, “2000-03-20 10:01:11”) |
MONTHS_BETWEEN_UDF(“1982-05-11 22:31:19”, “1900-01-25 15:21:15”) |
MONTHS_BETWEEN_UDF(“1999-12-25 01:15:16”, “1900-12-11 02:05:16”) |
|---|---|---|---|
48.000000 |
-48.000000 |
987.558024 |
1188.450497 |
Problèmes connus¶
1. Precision may differ from Oracle¶
Certains résultats peuvent différer quant au nombre de chiffres décimaux.
EWIs connexes¶
Pas d’EWIs connexes.
REGEXP LIKE UDF¶
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
REGEXP_LIKEpermet de faire correspondre des expressions régulières. Cette condition évalue les chaînes à l’aide des caractères définis par l’ensemble de caractères d’entrée.(Oracle Language Reference REGEXP_LIKE Condition)
Oracle REGEXP_LIKE et Snowflake REGEXP_LIKE présentent quelques différences de fonctionnalité. Pour minimiser ces différences et mieux répliquer la fonction Oracle REGEXP_LIKE, nous avons ajouté une UDF personnalisée. L’idée principale est d’échapper le symbole de la barre oblique inverse dans l’expression régulière lorsqu’il est exigé. Voici les caractères spéciaux qui doivent être échappés lorsqu’ils sont accompagnés d’une barre oblique inverse : 'd', 'D', 'w', 'W', 's', 'S', 'A', 'Z', 'n'. En outre, l’expression de rétro-référence (correspond au même texte que celui qui a été trouvé le plus récemment par le groupe de capture « numéro spécifié ») doit être échappée.
Surcharges UDF personnalisées¶
REGEXP_LIKE_UDF(string, string)¶
Paramètres¶
COL : est l’expression de caractère qui sert de valeur de recherche.
PATTERN : est l’expression régulière.
UDF¶
Oracle¶
Snowflake¶
REGEXP_LIKE_UDF(string, string, string)¶
Paramètres¶
COL : est l’expression de caractère qui sert de valeur de recherche.
PATTERN : est l’expression régulière.
MATCHPARAM : est une expression de caractère qui permet de modifier le comportement par défaut de la condition. Dans la table suivante, vous trouverez les caractères Oracle avec leur description et leur équivalent dans l’UDF.
Paramètre de correspondance |
Description |
Équivalent UDF |
|---|---|---|
“i” |
Spécifie une correspondance insensible à la casse, même si le classement déterminé de la condition est sensible à la casse. |
“i” |
“c” |
Spécifie une correspondance sensible à la casse et aux accents, même si le classement déterminé de la condition est insensible à la casse ou aux accents. |
N’a pas d’équivalent. Est en cours de suppression du paramètre.. |
“n” |
Permet au point (.), qui est le caractère générique correspondant à n’importe quel caractère, pour correspondre au caractère de nouvelle ligne. Si vous omettez ce paramètre, le point ne correspond pas au caractère de nouvelle ligne. |
“s” |
“m” |
Traite la chaîne source comme plusieurs lignes. Oracle interprète |
“m” |
“x” |
ignore les caractères d’espacement. Par défaut, les caractères d’espacement correspondent à eux-mêmes. |
N’a pas d’équivalent. Est en cours de suppression du paramètre. |
UDF¶
Oracle¶
Snowflake¶
Problèmes connus¶
1. Le paramètre de correspondance UDF peut ne pas se comporter comme prévu¶
Tous les caractères disponibles dans le paramètre de correspondance d’Oracle n’ayant pas leur équivalent dans la fonction définie par l’utilisateur, le résultat de la requête peut présenter certaines différences fonctionnelles par rapport à Oracle.
2. UDF pattern parameter does not allow only “\” as a regular expression¶
Si le paramètre du modèle de l’expression régulière utilisée est uniquement « \ », une exception sera levée comme suit : JavaScript execution error: Uncaught SyntaxError: Invalid regular expression: //: \ at end of pattern in REGEXP_LIKE_UDF at “return COL.match(new RegExp(PATTERN));” position 17 stackstrace: REGEXP_LIKE_UDF
TIMESTAMP DIFF UDF¶
Description¶
Snowflake does not support the addition operation between TIMESTAMP data types with the - operand. To replicate this functionality, we have added a custom UDF.
Surcharges UDF personnalisées¶
TIMESTAMP_DIFF_UDF(timestamp, timestamp)¶
Paramètres
LEFT\TS : Premier
TIMESTAMPde l’opération.RIGHT\TS : Valeur
TIMESTAMPà ajouter.
UDF¶
Oracle¶
Résultat¶
COL1-COL2 |
|---|
1461 12:0:0.0 |
-1460 12:0:0.0 |
30056 7:10:4.0 |
36172 23:10:0.0 |
Snowflake¶
Résultat¶
TIMESTAMP_DIFF_UDF( COL1, COL2) |
|---|
+000001461 12:00:00.00000000 |
-000001460 12:00:00.00000000 |
+000030056 07:10:04.00000000 |
+000036172 23:10:00.00000000 |
Problèmes connus¶
1. TIMESTAMP format may differ from Oracle¶
Le format TIMESTAMP peut différer de celui d’Oracle, veuillez tenir compte du paramètre TIMESTAMP_OUTPUT_FORMAT lorsque vous travaillez avec des types de données TIMESTAMP.
EWIs connexes¶
Pas d’EWIs connexes.
TRUNC (date) UDF¶
Description¶
La fonction
TRUNC(date) renvoie la date `` avec l’heure tronquée à l’unité spécifiée par le modèle de formatfmt. (Oracle TRUNC(date) Référence linguistique SQL)
Les fonctions Oracle TRUNC et Snowflake TRUNC avec des arguments de type date présentent quelques différences fonctionnelles.
L’assistant TRUNC_UDF sera ajouté pour traiter les cas suivants :
1. Le format n’est pas pris en charge par Snowflake.
2. Le format existe dans Snowflake mais fonctionne différemment.
3. L’outil ne peut pas déterminer le type de données du premier argument.
4. Le format est fourni sous la forme d’une colonne ou d’une expression et non d’un littéral.
Surcharges UDF personnalisées¶
TRUNC\UDF(date)¶
Applique une conversion DATE explicite à l’horodatage d’entrée.
Paramètres
INPUT : L’horodatage avec le fuseau horaire (TIMESTAMP_LTZ) qui doit être tronqué.
Avertissement
Le paramètre par défaut de l’UDF est TIMESTAMP_LTZ. Il peut être nécessaire de le remplacer par TIMESTAMP_TZ ou TIMESTAMP_NTZ pour correspondre à la valeur par défaut TIMESTAMP utilisée par l’utilisateur.
UDF¶
Oracle¶
Résultat¶
Date |
|---|
1996-03-20 00:00:00.000 |
Snowflake¶
Résultat¶
DATE |
|---|
1996-03-20 |
TRUNC\UDF(date, fmt)¶
Crée manuellement une nouvelle date à l’aide de la fonction DATE_FROM_PARTS(), en fonction de la catégorie de format utilisée.
Paramètres
DATE_TO_TRUNC : L’horodatage avec le fuseau horaire (TIMESTAMP_LTZ) qui doit être tronqué.
DATE_FMT : Le format de la date en tant que VARCHAR. Les mêmes formats que ceux pris en charge par Oracle.
Avertissement
Le paramètre par défaut de l’UDF est TIMESTAMP_LTZ. Il peut être nécessaire de le remplacer par TIMESTAMP_TZ ou TIMESTAMP_NTZ pour correspondre à la valeur par défaut TIMESTAMP utilisée par l’utilisateur.
UDF¶
Scénarios de format TRUNC¶
Avertissement
Le format des résultats dépend des formats de sortie de DateTime configurés pour la base de données.
1. Natively supported formats¶
Oracle¶
Résultat¶
TRUNC(TO_DATE(“20/04/2022 13:21:10”,”DD/MM/YYYY HH24:MI:SS”),”YYYY”) |
|---|
01-JAN-22 |
01-JAN-22 |
01-JAN-22 |
01-JAN-22 |
01-JAN-22 |
01-APR-22 |
01-APR-22 |
01-APR-22 |
01-APR-22 |
20-APR-22 |
20-APR-22 |
20-APR-22 |
Snowflake¶
Résultat¶
TRUNC(TO_DATE(“20/04/2022 13:21:10”,”DD/MM/YYYY HH24:MI:SS”),”YYYY”) |
|---|
2022-01-01 |
2022-01-01 |
2022-01-01 |
2022-01-01 |
2022-01-01 |
2022-04-01 |
2022-04-01 |
2022-04-01 |
2022-04-01 |
2022-04-20 |
2022-04-20 |
2022-04-20 |
2. Formats mapped to another format¶
Oracle¶
Résultat¶
TRUNC(TO_DATE(“20/04/2022 13:21:10”,”DD/MM/YYYY HH24:MI:SS”)) |
|---|
20-APR-22 |
01-JAN-22 |
01-JAN-22 |
01-APR-22 |
18-APR-22 |
20-APR-22 |
20-APR-22 |
20-APR-22 |
20-APR-22 |
Snowflake¶
Résultat¶
TRUNC(TO_DATE(“20/04/2022 13:21:10”,”DD/MM/YYYY HH24:MI:SS”), “DD”) |
|---|
2022-04-20 |
2022-01-01 |
2022-01-01 |
2022-04-01 |
2022-04-18 |
2022-04-20 |
2022-04-20 |
2022-04-20 |
2022-04-20 |
3. Day formats¶
Oracle¶
Résultat¶
TRUNC(TO_DATE(“20/04/2022 13:21:10”,”DD/MM/YYYY HH24:MI:SS”),”DAY”) |
|---|
17-APR-22 |
17-APR-22 |
17-APR-22 |
Snowflake¶
Résultat¶
TRUNC_UDF(TO_DATE(“20/04/2022 13:21:10”,”DD/MM/YYYY HH24:MI:SS”),”DAY”) |
|---|
2022-04-17 |
2022-04-17 |
2022-04-17 |
4. Unsupported formats¶
Oracle¶
Résultat¶
TRUNC(TO_DATE(“20/04/2022 13:21:10”,”DD/MM/YYYY HH24:MI:SS”),”CC”) |
|---|
01-JAN-01 |
01-JAN-01 |
03-JAN-22 |
03-JAN-22 |
03-JAN-22 |
16-APR-22 |
15-APR-22 |
Snowflake¶
Résultat¶
TRUNC_UDF(TO_DATE(“20/04/2022 13:21:10”,”DD/MM/YYYY HH24:MI:SS”),”CC”) |
|---|
2001-01-01 |
2001-01-01 |
2022-01-03 |
2022-01-03 |
2022-01-03 |
2022-04-16 |
2022-04-15 |
Note
Lorsque la fonction TRUNC est utilisée avec un format non pris en charge ou un paramètre qui ne peut pas être géré par SnowConvert AI. Pour éviter tout problème, le format est remplacé par un format valide, ou TRUNC_UDF est ajouté.
Problèmes connus¶
1. Oracle DATE contains TIMESTAMP¶
Tenez compte du fait que DATE d’Oracle contient un TIMESTAMP vide (00:00:00.000), contrairement à DATE de Snowflake.
EWIs connexes¶
Pas d’EWIs connexes.
TRUNC (number) UDF¶
Description¶
La fonction
TRUNC(number) renvoien1tronqué àn2décimales. Sin2est omis,n1est tronqué à 0 chiffre.n2peut être négatif pour tronquer (rendre nul)n2chiffres à gauche de la virgule décimale. (Oracle TRUNC(number) Référence linguistique SQL)
TRUNC_UDF pour les valeurs numériques sera ajouté pour traiter les cas où la première colonne a un type de données non reconnu.
Exemple :
Si la définition de column1 n’a pas été fournie à l’outil. Ensuite, TRUNC_UDF sera ajouté et, lors de l’exécution, la surcharge de TRUNC_UDF permettra de gérer les cas où il s’agit d’un type numérique ou d’un type de date.
Veuillez consulter la section TRUNC (DATE).
Les sections suivantes apportent la preuve que TRUNC_UDF traitera des valeurs parfaitement numériques.
Surcharges UDF personnalisées¶
TRUNC_UDF(n1)¶
It calls Snowflake TRUNC function with the input number. This overload exists to handle the different types of parameter scenarios, in case that information is not available during the migration.
Paramètres
INPUT :
NUMBERqui doit être tronqué.
UDF¶
Oracle¶
Résultat¶
TRUNC(1.000001) |
TRUNC(15.79) |
TRUNC(-975.975) |
TRUNC(135.135) |
|---|---|---|---|
1 |
15 |
-975 |
135 |
Snowflake¶
Résultat¶
TRUNC_UDF(1.000001) |
TRUNC_UDF(15.79) |
TRUNC_UDF(-975.975) |
TRUNC_UDF(135.135) |
|---|---|---|---|
1 |
15 |
-975 |
135 |
TRUNC_UDF(n1, n2)¶
It calls Snowflake TRUNC function with the input number and the scale. This overload exists to handle the different types of parameter scenarios, in case that information is not available during the migration.
Paramètres
INPUT :
NUMBERqui doit être tronqué.SCALE : Représente le nombre de chiffres que la sortie inclura après la virgule décimale.
UDF¶
Oracle¶
Résultat¶
TRUNC(1.000001,-2) |
TRUNC(1.000001,-1) |
TRUNC(1.000001,0) |
TRUNC(1.000001,1) |
TRUNC(1.000001,2) |
TRUNC(15.79,-2) |
TRUNC(15.79,-1) |
TRUNC(15.79,0) |
TRUNC(15.79,1) |
TRUNC(15.79,50) |
TRUNC(-9.6,-2) |
TRUNC(-9.6,-1) |
TRUNC(-9.6,0) |
TRUNC(-9.6,1) |
TRUNC(-9.6,2) |
TRUNC(-975.975,-3) |
TRUNC(-975.975,-2) |
TRUNC(-975.975,-1) |
TRUNC(-975.975,0) |
TRUNC(-975.975,1) |
TRUNC(-975.975,2) |
TRUNC(-975.975,3) |
TRUNC(-975.975,5) |
TRUNC(135.135,-10) |
TRUNC(135.135,-2) |
TRUNC(135.135,0) |
TRUNC(135.135,1) |
TRUNC(135.135,2) |
TRUNC(135.135,3) |
TRUNC(135.135,5) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 |
0 |
1 |
1 |
1 |
0 |
10 |
15 |
15.7 |
15.79 |
0 |
0 |
-9 |
-9.6 |
-9.6 |
0 |
-900 |
-970 |
-975 |
-975.9 |
-975.97 |
-975.975 |
-975.975 |
0 |
100 |
135 |
135.1 |
135.13 |
135.135 |
135.135 |
Snowflake¶
Résultat¶
TRUNC_UDF ( 1.000001, -2 ) |
TRUNC_UDF ( 1.000001, -1 ) |
TRUNC_UDF ( 1.000001, 0 ) |
TRUNC_UDF ( 1.000001, 1 ) |
TRUNC_UDF ( 1.000001, 2 ) |
TRUNC_UDF ( 15.79, -2) |
TRUNC_UDF ( 15.79, -1) |
TRUNC_UDF ( 15.79, 0) |
TRUNC_UDF ( 15.79, 1 ) |
TRUNC_UDF ( 15.79, 50 ) |
TRUNC_UDF ( -9.6, -2 ) |
TRUNC_UDF ( -9.6, -1 ) |
TRUNC_UDF ( -9.6, 0 ) |
TRUNC_UDF ( -9.6, 1 ) |
TRUNC_UDF ( -9.6, 2 ) |
TRUNC_UDF ( -975.975, -3 ) |
TRUNC_UDF ( -975.975, -2 ) |
TRUNC_UDF ( -975.975, -1 ) |
TRUNC_UDF ( -975.975, 0 ) |
TRUNC_UDF ( -975.975, 1 ) |
TRUNC_UDF ( -975.975, 2 ) |
TRUNC_UDF ( -975.975, 3 ) |
TRUNC_UDF ( -975.975, 5 ) |
TRUNC_UDF ( 135.135, -10 ) |
TRUNC_UDF ( 135.135, -2 ) |
TRUNC_UDF ( 135.135, 0 ) |
TRUNC_UDF ( 135.135, 1 ) |
TRUNC_UDF ( 135.135, 2 ) |
TRUNC_UDF ( 135.135, 3 ) |
TRUNC_UDF ( 135.135, 5 ) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 |
0 |
1 |
1,0 |
1,00 |
0 |
10 |
15 |
15.7 |
15.79 |
0 |
0 |
-9 |
-9.6 |
-9.6 |
0 |
-900 |
-970 |
-975 |
-975.9 |
-975.97 |
-975.975 |
-975.975 |
0 |
100 |
135 |
135.1 |
135.13 |
135.135 |
135.135 |
Problèmes connus¶
Aucun problème n’a été constaté.
EWIs connexes¶
Pas d’EWIs connexes.
SnowConvert AI - Oracle - INTERVAL UDFs¶
Code nécessaire pour exécuter les INTERVAL UDFs¶
To run any of the interval UDFs, it is necessary to run the following code before:
DATEADD UDF INTERVAL¶
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Cette UDF est utilisée pour résoudre les opérations avec des intervalles comme :
INTERVAL + DATE
INTERVAL + TIMESTAMP
DATE + INTERVAL
DATE + TIMESTAMP
INTERVAL + UNKNOWN
UNKNOWN + INTERVAL
Note
An UNKNOWN type is a column or expression whose type could not be resolved by Snow Convert, it tends to happen when the DDLs for tables are not included in the migration or when there is an expression or subquery that can return different data types.
Surcharges UDF personnalisées¶
DATEADD_UDF(string, date)¶
Paramètres
INTERVAL_VALUE : L’intervalle
Stringde l’opération.D :
DATEoù l’intervalle sera ajouté.
UDF¶
DATEADD_UDF(date, string)¶
Paramètres
D :
DATEoù l’intervalle sera ajouté.INTERVAL_VALUE : L’intervalle
Stringde l’opération.
UDF¶
DATEADD_UDF(string, timestamp)¶
Paramètres
INTERVAL_VALUE : L’intervalle
Stringde l’opération.D :
TIMESTAMPoù l’intervalle sera ajouté.
UDF¶
DATEADD_UDF(timestamp, string)¶
Paramètres
D :
TIMESTAMPoù l’intervalle sera ajouté.INTERVAL_VALUE : L’intervalle
Stringde l’opération.
UDF¶
Exemple d’utilisation¶
Note
--disableDateAsTimestamp
Indicateur spécifiant si SYSDATE doit être transformé en CURRENT_DATE ou CURRENT_TIMESTAMP. Cela affectera également toutes les colonnes DATE qui seront transformées en TIMESTAMP.
Oracle¶
Résultats¶
Snowflake¶
Note
Cette configuration a été utilisée dans Snowflake
Résultats¶
Problèmes connus¶
1. INTERVAL + INTERVAL Operation is not supported¶
Snowflake ne prend pas en charge les opérations INTERVAL + INTERVAL.
EWIs connexes¶
SSC-EWI-OR0036: Problèmes de résolution des types, l’opération arithmétique peut ne pas se comporter correctement entre la chaîne et la date.
SSC-EWI-OR0095: L’opération entre le type d’intervalle et le type de date n’est pas prise en charge.
SSC-FDM-0007: Élément avec dépendances manquantes.
SSC-FDM-OR0042: Le type de date transformé en horodatage a un comportement différent.
DATEDIFF UDF INTERVAL¶
Note
Certaines parties du code de sortie sont omises pour des raisons de clarté.
Description¶
Cette UDF est utilisée pour résoudre les opérations avec des intervalles comme :
INTERVAL - UNKNOWN
UNKNOWN - INTERVAL
DATE - INTERVAL
TIMESTAMP - INTERVAL
Note
An UNKNOWN type is a column or expression whose type could not be resolved by Snow Convert, it tends to happen when the DDLs for tables are not included in the migration or when there is an expression or subquery that can return different data types.
Surcharges UDF personnalisées¶
DATEADD_DDIF(string, date)¶
Paramètres
INTERVAL_VALUE : L’intervalle
Stringde l’opération.D :
DATEoù l’intervalle sera soustrait.
UDF¶
DATEADD_DIFF(date, string)¶
Paramètres
D :
DATEoù l’intervalle sera soustrait.INTERVAL_VALUE : L’intervalle
Stringde l’opération.
UDF¶
DATEADD_DIFF(string, timestamp)¶
Paramètres
INTERVAL_VALUE : L’intervalle
Stringde l’opération.D :
TIMESTAMPoù l’intervalle sera soustrait.
UDF¶
DATEADD_DIFF(timestamp, string)¶
Paramètres
D :
TIMESTAMPoù l’intervalle sera soustrait.INTERVAL_VALUE : L’intervalle
Stringde l’opération.
UDF¶
Exemple d’utilisation¶
Note
--disableDateAsTimestamp
Indicateur spécifiant si SYSDATE doit être transformé en CURRENT_DATE ou CURRENT_TIMESTAMP. Cela affectera également toutes les colonnes DATE qui seront transformées en TIMESTAMP.
Oracle¶
Résultat¶
Snowflake¶
Note
Cette configuration a été utilisée dans Snowflake
Résultat¶
Problèmes connus¶
1. INTERVAL - INTERVAL Operation is not supported¶
Snowflake ne prend pas en charge les opérations INTERVAL - INTERVAL.
EWIs connexes¶
SSC-EWI-OR0036: Problèmes de résolution des types, l’opération arithmétique peut ne pas se comporter correctement entre la chaîne et la date.
SSC-EWI-OR0095: L’opération entre le type d’intervalle et le type de date n’est pas prise en charge.
SSC-FDM-0007: Élément avec dépendances manquantes.
SSC-FDM-OR0042: Le type de date transformé en horodatage a un comportement différent.