2017-07-11 2 views
0

Ich habe versucht, die Daten z. 49.9999 in numerische (9,4) Spalte. Wie auch immer, durch den Kopierbefehl werden die Werte auf 50,00 aufgerundet.Amazon Redshift falsch aufgerundet Numerisch (9,4) Wert

Befehl Kopieren Beispiel:

COPY <table_name> (PRICE_BAND_CODE,PRICE_BAND_DESC,PROD_LEVEL1_CODE,PRICE_BAND_LOWER,PRICE_BAND_UPPER,PRICE_BAND_SEQ) 
FROM '<s3 path>/PriceBandDIM.gz' 
credentials 'aws_access_key_id=xxxxxxxxxxxx;aws_secret_access_key=xxxxxxxxxxxxxxxx' 
delimiter '|' 
IGNOREBLANKLINES EMPTYASNULL GZIP NULL AS '\000' 
ROUNDEC BLANKSASNULL TRIMBLANKS REMOVEQUOTES 
STATUPDATE ON IGNOREHEADER 0; 

PRICE_BAND_LOWER und PRICE_BAND_UPPER werden als numerisches (9,4) Datentyp aufweisen, aber die Daten während der Verarbeitung ist es, die Daten Aufrundung.

Bitte lassen Sie mich wissen, wie Sie mit diesem Szenario umgehen.

+1

Verhält es sich korrekt, wenn Sie den 'ROUNDEC' Parameter ausschließen? –

Antwort

0

Der ROUNDEC-Parameter muss gehen. Rundet numerische Werte auf, wenn die Skalierung des Eingabewerts größer als die Skalierung der Spalte ist. COPY schneidet Werte standardmäßig ab, wenn dies für die Skalierung der Spalte erforderlich ist.

COPY <table_name> (PRICE_BAND_CODE,PRICE_BAND_DESC,PROD_LEVEL1_CODE,PRICE_BAND_LOWER,PRICE_BAND_UPPER,PRICE_BAND_SEQ) 
FROM '<s3 path>/PriceBandDIM.gz' 
credentials 'aws_access_key_id=xxxxxxxxxxxx;aws_secret_access_key=xxxxxxxxxxxxxxxx' 
delimiter '|' 
IGNOREBLANKLINES EMPTYASNULL GZIP NULL AS '\000' 
BLANKSASNULL TRIMBLANKS REMOVEQUOTES 
STATUPDATE ON IGNOREHEADER 0; 

Wenn ich eine schlechte Annahme gemacht habe, bitte Kommentar und ich werde meine Antwort neu fokussieren.

Verwandte Themen