Glue의 choice형으로 빠진 건
자기소개
온프레 출신 인프라 엔지니어, AWS 초보자를 위해 공부 중
Qiita 첫글
개요
하고 싶은 것은 간단하고, S3의 json 데이터를 Athena로 검색하거나 가공하여 S3로 내보내고 싶습니다!
다른 부서 분들에게 최신 데이터를 제공하고 다양한 분석하고 받고 싶다!
구현 방법
Glueのクローラーを毎日実行
↓Glueのテーブルを毎日更新
↓jobを毎日実行(不要なカラム削除)
↓S3にエクスポート
문제점
어느 칼럼안에 int형과 double형이 혼재하고 있으므로, export 했을 때 어느 쪽인가가 null가 되어 버린다. 제공한 다른 부서에게 지적되어 눈치챘습니다.
그 절은 폐를 끼쳤습니다. . 이 자리를 빌려 사과드립니다.
실시한 것
복수의 형태가 있었을 경우는 choice형이 선택되어 좋은 느낌에 해 주는 것 같기 때문에, 출력 방법을 변경해 본다
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "int", "columnA", "string")]
에서 문자열로 출력, 하지만 할 수 없다!
그렇다면 double 형으로 여러 가지 시도해 보자.
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "int", "columnA", "double")]
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "double", "columnA", "double")]
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "double", "columnA", "int")]
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "double", "columnA", "string")]
할 수 없다! ! !
resolveChoice 사용하면 할 것 같아! !
서포트에게 물어 보았다.
ResolveChoice 의 제1 인수는 JSON 파일의 속성과 일치시킬 필요가 있으므로, 이하와 같이 기술하는 것으로 int 형에의 캐스트가 가능합니다.
해결 방법
datasource1 = datasource0.resolveChoice(specs = [('columnA','cast:int')])
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "int", "columnA", "int")]
과연~!
choice형으로 들어가 있기 때문에, 한번 형을 가지런히 하고 나서 출력해 주면 할 수 있네요.
미래의 망상
S3내의 데이터를 Athena로 골고리 검색할 수 있는, export하고 다른 부서에 전개할 수 있다!
불필요한 컬럼을 삭제함으로써 검색 시간을 절감, 요금 절감도 할 수 있다!
참고
Reference
이 문제에 관하여(Glue의 choice형으로 빠진 건), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/atsusics/items/85ae9a1c08ec5ea97052
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
하고 싶은 것은 간단하고, S3의 json 데이터를 Athena로 검색하거나 가공하여 S3로 내보내고 싶습니다!
다른 부서 분들에게 최신 데이터를 제공하고 다양한 분석하고 받고 싶다!
구현 방법
Glueのクローラーを毎日実行
↓Glueのテーブルを毎日更新
↓jobを毎日実行(不要なカラム削除)
↓S3にエクスポート
문제점
어느 칼럼안에 int형과 double형이 혼재하고 있으므로, export 했을 때 어느 쪽인가가 null가 되어 버린다. 제공한 다른 부서에게 지적되어 눈치챘습니다.
그 절은 폐를 끼쳤습니다. . 이 자리를 빌려 사과드립니다.
실시한 것
복수의 형태가 있었을 경우는 choice형이 선택되어 좋은 느낌에 해 주는 것 같기 때문에, 출력 방법을 변경해 본다
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "int", "columnA", "string")]
에서 문자열로 출력, 하지만 할 수 없다!
그렇다면 double 형으로 여러 가지 시도해 보자.
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "int", "columnA", "double")]
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "double", "columnA", "double")]
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "double", "columnA", "int")]
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "double", "columnA", "string")]
할 수 없다! ! !
resolveChoice 사용하면 할 것 같아! !
서포트에게 물어 보았다.
ResolveChoice 의 제1 인수는 JSON 파일의 속성과 일치시킬 필요가 있으므로, 이하와 같이 기술하는 것으로 int 형에의 캐스트가 가능합니다.
해결 방법
datasource1 = datasource0.resolveChoice(specs = [('columnA','cast:int')])
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "int", "columnA", "int")]
과연~!
choice형으로 들어가 있기 때문에, 한번 형을 가지런히 하고 나서 출력해 주면 할 수 있네요.
미래의 망상
S3내의 데이터를 Athena로 골고리 검색할 수 있는, export하고 다른 부서에 전개할 수 있다!
불필요한 컬럼을 삭제함으로써 검색 시간을 절감, 요금 절감도 할 수 있다!
참고
Reference
이 문제에 관하여(Glue의 choice형으로 빠진 건), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/atsusics/items/85ae9a1c08ec5ea97052
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
어느 칼럼안에 int형과 double형이 혼재하고 있으므로, export 했을 때 어느 쪽인가가 null가 되어 버린다. 제공한 다른 부서에게 지적되어 눈치챘습니다.
그 절은 폐를 끼쳤습니다. . 이 자리를 빌려 사과드립니다.
실시한 것
복수의 형태가 있었을 경우는 choice형이 선택되어 좋은 느낌에 해 주는 것 같기 때문에, 출력 방법을 변경해 본다
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "int", "columnA", "string")]
에서 문자열로 출력, 하지만 할 수 없다!
그렇다면 double 형으로 여러 가지 시도해 보자.
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "int", "columnA", "double")]
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "double", "columnA", "double")]
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "double", "columnA", "int")]
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "double", "columnA", "string")]
할 수 없다! ! !
resolveChoice 사용하면 할 것 같아! !
서포트에게 물어 보았다.
ResolveChoice 의 제1 인수는 JSON 파일의 속성과 일치시킬 필요가 있으므로, 이하와 같이 기술하는 것으로 int 형에의 캐스트가 가능합니다.
해결 방법
datasource1 = datasource0.resolveChoice(specs = [('columnA','cast:int')])
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "int", "columnA", "int")]
과연~!
choice형으로 들어가 있기 때문에, 한번 형을 가지런히 하고 나서 출력해 주면 할 수 있네요.
미래의 망상
S3내의 데이터를 Athena로 골고리 검색할 수 있는, export하고 다른 부서에 전개할 수 있다!
불필요한 컬럼을 삭제함으로써 검색 시간을 절감, 요금 절감도 할 수 있다!
참고
Reference
이 문제에 관하여(Glue의 choice형으로 빠진 건), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/atsusics/items/85ae9a1c08ec5ea97052
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "int", "columnA", "string")]
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "int", "columnA", "double")]
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "double", "columnA", "double")]
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "double", "columnA", "int")]
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "double", "columnA", "string")]
datasource1 = datasource0.resolveChoice(specs = [('columnA','cast:int')])
applymapping1 = ApplyMapping.apply(frame = datasource3, mappings = [("columnA", "int", "columnA", "int")]
과연~!
choice형으로 들어가 있기 때문에, 한번 형을 가지런히 하고 나서 출력해 주면 할 수 있네요.
미래의 망상
S3내의 데이터를 Athena로 골고리 검색할 수 있는, export하고 다른 부서에 전개할 수 있다!
불필요한 컬럼을 삭제함으로써 검색 시간을 절감, 요금 절감도 할 수 있다!
참고
Reference
이 문제에 관하여(Glue의 choice형으로 빠진 건), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/atsusics/items/85ae9a1c08ec5ea97052
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Glue의 choice형으로 빠진 건), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/atsusics/items/85ae9a1c08ec5ea97052텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)