keboola / db-writer-snowflake

Snowflake database writer
MIT License
0 stars 1 forks source link

NULL values handling #6

Closed Halama closed 7 years ago

Halama commented 7 years ago

Prázdné hodnoty u sloupců které jsou v konfiguraci writeru nastaveny jako null by se měly automaticky zkonvertovat na null. Stačí do COPY commandu přidat NULL_IF('').

https://keboola.productboard.com/inbox/notes/241001

Halama commented 7 years ago

Upravil jsem to tak ale je problém v tom že ten NULL_IF se aplikuje i na sloupce které jsou NOT NULL a potom to v případě že do not null sloupce jde prázdná hodnota zařve SQL error: NULL result in a non-nullable column

Zkouším to obejít pomocí transformace v COPY commandu ale zatím mi nějak nefunguje https://docs.snowflake.net/manuals/sql-reference/sql/copy-into-table.html hlásí SQL compilation error: COPY statement only supports simple SELECT from stage statements for import.

Halama commented 7 years ago

Přes stage to vypadá šlape:

 CREATE OR REPLACE STAGE simple
  FILE_FORMAT = (TYPE=CSV FIELD_DELIMITER = ',' FIELD_OPTIONALLY_ENCLOSED_BY = '\"' ESCAPE_UNENCLOSED_FIELD = NONE ESCAPE_UNENCLOSED_FIELD = '\\')
  URL = 's3://kbc-sapi-files'
  CREDENTIALS = (AWS_KEY_ID = '' AWS_SECRET_KEY = ''  AWS_TOKEN = '')
  ;

  COPY INTO "development"."simple"
  FROM  (SELECT t.$1, t.$2, t.$3, iff(t.$4 = '', null, t.$4) FROM @simple/exp-30/236/table-exports/in/c-test-wr-db-redshift/simple/231571663.csv.gz t)
   PATTERN="^.*(?<!manifest)$"