Talend를 사용하여 Snowflake로 데이터를 업데이트 할 때의주의 사항
Snowflake의 현재 일시 취득 함수 CURRENT_DATE ()에 당황
Snowflake로 당일의 데이터를 씻어내기 위해서, CURRENT_DATE()를 사용해 당일 데이터를 Delete 하고 있었습니다만, 잘 동작하는 경우와 잘 되지 않는 경우가 있었습니다. show parameters에서 현재의 Timezone을 확인해 보았을 때, Timezone의 초기값이 America/Los_Angeles가 되어 있었습니다. 여기를 Asia/Tokyo로 변경하여 올바르게 당일의 날짜를 얻을 수 있는 것을 확인했습니다.
show parameters
Alter session set TIMEZONE = 'Asia/Tokyo'
그래도 Talend의 날짜가 어긋납니다.
Snowflake측의 CURRENT_DATE()의 시간 어긋남은 해소할 수 있었습니다만, Talend로부터 처리를 실행하면 아직 일자가 어긋난 채로 있었습니다. 제가 사용하고 있는 Talend의 버전(7.3.1)에서는, Snowflake의 컴퍼넌트에서 도쿄 리전이 선택할 수 없는(2020년 7월 현재) 때문에, 미국 서부를 사용하고 있습니다. 이것이 원인이 되어 CURRENT_DATE()가 미국 서부 시간이 되고 있었다고 생각하고 있습니다.
현재는 그 밖에 선택사항이 없기 때문에, 배치의 시간을 변경해 16시까지 데이터 세탁을 끝내게 하기로 했습니다. (16시까지라면 CURRENT_DATE () + 1로 당일 데이터가되기 때문에)
만약, 이쪽의 대응 방법 이외에 좋은 방법이 있으면, 의견을 받을 수 있으면 도움이 됩니다.
덤
현재 날짜 취득 함수의 차이
핵심 시스템 DB에 Oracle을 사용하고 있으며, 다른 마스터 데이터는 SQLserver에서 데이터를 관리합니다. 이번 DWH로서 Snowflake를 도입했습니다.
(Snowflake 선정까지의 기사는 별도 기재합니다)
Oracle, SQLserver, Snowflake에서 현재 날짜를 검색하는 함수가 다릅니다.
Oracle · Oracle SYSDATE
SQLserver GETDATE()
・Snowflake CURRENT_DATE()
8자리의 날짜 문자열로 취급하는 경우는 아래와 같이 취급합니다.
Oracle · Oracle TO_CHAR (SYSDATE, 'YYYYMMDD')
SQLServer SUBSTRING (CONVERT (VARCHAR, GETDATE (), 112), 1,8)
・Snowflake TO_CHAR(CURRENT_DATE(),'YYYYMMDD')
더
Reference
이 문제에 관하여(Talend를 사용하여 Snowflake로 데이터를 업데이트 할 때의주의 사항), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mrsr6113/items/a8c359b496c6b80f82fd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
show parameters
Alter session set TIMEZONE = 'Asia/Tokyo'
Snowflake측의 CURRENT_DATE()의 시간 어긋남은 해소할 수 있었습니다만, Talend로부터 처리를 실행하면 아직 일자가 어긋난 채로 있었습니다. 제가 사용하고 있는 Talend의 버전(7.3.1)에서는, Snowflake의 컴퍼넌트에서 도쿄 리전이 선택할 수 없는(2020년 7월 현재) 때문에, 미국 서부를 사용하고 있습니다. 이것이 원인이 되어 CURRENT_DATE()가 미국 서부 시간이 되고 있었다고 생각하고 있습니다.
현재는 그 밖에 선택사항이 없기 때문에, 배치의 시간을 변경해 16시까지 데이터 세탁을 끝내게 하기로 했습니다. (16시까지라면 CURRENT_DATE () + 1로 당일 데이터가되기 때문에)
만약, 이쪽의 대응 방법 이외에 좋은 방법이 있으면, 의견을 받을 수 있으면 도움이 됩니다.
덤
현재 날짜 취득 함수의 차이
핵심 시스템 DB에 Oracle을 사용하고 있으며, 다른 마스터 데이터는 SQLserver에서 데이터를 관리합니다. 이번 DWH로서 Snowflake를 도입했습니다.
(Snowflake 선정까지의 기사는 별도 기재합니다)
Oracle, SQLserver, Snowflake에서 현재 날짜를 검색하는 함수가 다릅니다.
Oracle · Oracle SYSDATE
SQLserver GETDATE()
・Snowflake CURRENT_DATE()
8자리의 날짜 문자열로 취급하는 경우는 아래와 같이 취급합니다.
Oracle · Oracle TO_CHAR (SYSDATE, 'YYYYMMDD')
SQLServer SUBSTRING (CONVERT (VARCHAR, GETDATE (), 112), 1,8)
・Snowflake TO_CHAR(CURRENT_DATE(),'YYYYMMDD')
더
Reference
이 문제에 관하여(Talend를 사용하여 Snowflake로 데이터를 업데이트 할 때의주의 사항), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mrsr6113/items/a8c359b496c6b80f82fd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Talend를 사용하여 Snowflake로 데이터를 업데이트 할 때의주의 사항), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mrsr6113/items/a8c359b496c6b80f82fd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)