2017-10-16 8 views
0

Je souhaite répertorier les champs dont la date est invalide. Actuellement, je suis seulement sorti avec des conditions ci-dessous pour vérifier la validité de la date.DataStage-Pour répertorier les champs qui ont une date non valide

If 
IsValid('%dd-%mm-%yyyy',ln_source_1.A_Date) or 
IsValid('%dd-%mm-%yyyy',ln_source_1.B_Date) or 
IsValid('%dd-%mm-%yyyy',ln_source_1.C_Date) 
then 1 else 0 

DATE TABLEAU

ID | A_Date | B_DATE | C_DATE

001 | 16-10-2017 | 16-31-2017 | 16-10-017

002 | 61-10-2017 | 01-01-2017 | 16-10-2017

Selon l'exemple ci-dessus, B_Date et C_Date ne sont pas valides. Alors, est-il possible de lister la date invalide comme ci-dessous et comment?

Statut | Invalid_Date |

001 | B_Date, C_Date |

002 | A_Date |

Note: J'ai beaucoup de champs de date pour vérifier sa validité et certaines d'entre elles peut être nul

Merci

Répondre

0

d'abord toutes les fonctions IsValid doit être appelé comme ceci:

IsValid("date", ln_source_1.A_Date, "%dd-%mm-%yyyy") 

Votre exemple de résultat n'est pas clair car votre deuxième colonne affiche la date mais ce que vous liez est le nom des colonnes. La concaténation peut être une option en fonction du nombre de "nombreuses dates".

Vous pouvez opter pour un Stagevariable

svInvalid => réglé à ""

svValid => mettre à ""

Et faire le chèque comme celui-ci (en supposant que toutes les entrées et hors-champ sont des types de données Varchar)

IF IsValid("date", ln_source_1.A_Date, "%dd-%mm-%yyyy") 
THEN svValid : "A_DATE, " 
ELSE svInvalid : "A_DATE, " 

Dans les colonnes de sortie attribuer svValid dans une nouvelle colonne VALID et svInavalid à une nouvelle colonne INVALID.

+0

ouais, je veux savoir quelle colonne a une date invalide, donc 'Date' il devrait y avoir un nom de colonne. – Kiki

+0

Alors avez-vous essayé ma suggestion? – MichaelTiefenbacher