TreasureData와 깨짐

2192 단어 TreasureData

편지에 부딪히다



갑작스럽지만, Treasure Data(이하 TD)로 Presto 쿼리를 실행하면 깨져 버리고 있었다, 뭐가 없습니까?


애초에 글자 깨져



문자가 깨지면 UTF-8 파일을 Shift-jis로 열어 버렸을 때 발생하는 이미지를 가지고 있는지 생각합니다.
텍스트 편집기에서 문자 코드를 지정하여 열어보십시오.
# UTF-8で開いた場合
col1,col2,col3
テスト1,テスト2,テスト3
# Shift-jisで開いた場合
col1,col2,col3
繝�繧ケ繝茨シ�,繝�繧ケ繝茨シ�,繝�繧ケ繝茨シ�

예상대로 문자가 깨져 있네요.
이것과 같은 것은 TD로 데이터를 가져올 때 발생합니다.

Treasure Data 문자 코드



TD는 UTF-8에서 데이터를 보유하고 있습니다.
그 때문에, 예를 들면 Shift-jis의 csv 파일을 TD에 업로드하는 경우는 「Shift-jis의 데이터가 대상이야」라고 가르쳐 줄 필요가, 올바르게 설정하고 있으면 데이터 업로드시에 UTF-8로 자동 변환 해줍니다.

의도적으로 문자 깨짐을 발생시켜 본다



UTF-8 파일을 업로드하여 깨짐을 발생시킵니다.

TD 콘솔(브라우저)에서 업로드하는 경우 Advanced Settings에서 문자 코드를 지정할 수 있습니다.


UTF-8 파일이지만 굳이 Shift-JIS로 설정해 보겠습니다.


그러면 앞에서 설명한 것처럼 미리보기 시점에서 깨져버립니다. 물론 이대로 업로드하면 미리 보기 대로 문자화된 상태로 저장됩니다.


TD에서 깨짐이 발생하면



앞에서 언급했듯이 깨진 상태에서 TD에 데이터를 업로드하면 문자 코드는 당연히 UTF-8이지만 잘못된 문자가 저장되어있는 상태입니다. 무리하게 해석한 결과가 들어 있는 것입니다.

사후 대응으로서는 대상 레코드를 DELETE 하고 나서, 올바르게 데이터 투입해 다시 할 필요가 있습니다.
미리보기에서 확인하고 나서 데이터 업로드 할 수 있으면 좋지만 업무 중에 매번 미리보기를 표시하고 체크하는 것은 꽤 어렵다고 생각합니다.

사전에 충분한 테스트를 실시하여 문자 깨짐이 발생하지 않도록 합시다.

다운로드결과만 깨진 경우



TD 콘솔에서 Presto/Hive 쿼리를 실행하면 결과를 다운로드할 수 있습니다.
현시점에서는 문자 코드가 UTF-8의 일택이므로, 다운로드한 파일을 Shift-jis로서 열어 버려 문자화해 있는 것처럼 보일 수 있습니다.
그렇다면 TD에 데이터가 올바르게 저장되어 있으므로 어떤 문자 코드로 처리하고 있는지 진정하고 정리해보십시오.

좋은 웹페이지 즐겨찾기