반응형
반응형
안녕하세요. 주형권입니다. 최근에 올린 도베르만(데이터레이크 모니터링 시스템)을 만들 때 Superset을 통해서 UI를 구성하였는데요. 이 과정에 여러가지 기능 중에 Superset의 표 형태 또는 Text Box등에서 hyperlink를 넣는 방법에 대해서 소개하고자 합니다. 대단한 기술은 아니고 HTML의 기능을 통해서 하는 방법을 소개 하고자 합니다. 사용자가 표를 볼때 해당 로그를 바로 볼 수 있도록 hyperlink를 걸어주면 굉장히 만족도가 올라갑니다. 적용 방법 저의 경우 MySQL 데이터베이스에서 데이터를 불러서 표에 보여주는데요. SELECT 'https://www.naver.com' AS url UNION ALL SELECT 'https://www.google.com' UNION AL..
안녕하세요. 주형권입니다. 현재 회사에서 AWS 기반의 환경에서 Athena Iceberg(이하 Iceberg)를 이용하여 Data Lake를 구축하고 있습니다. Iceberg 테이블에 데이터를 마이그레이션 하거나 ELT를 할때 다음과 같은 오류가 발생 하여서 간략하게 글을 써봅니다. 무슨 오류가 발생 하였는가? TOO_MANY_OPEN_PARTITIONS : Exceeded limit of 100 open writers for partitions/buckets 다음과 같이 파티션이 100개 이상 쓸 수 없다고 나오는데요. 이는 INSERT 및 UPDATE , MERGE등에서 모두 발생 하였습니다. 어떻게 해결 하였는가? 이 부분은 해결 방법이 없습니다... 공식 홈페이지에 내용이 나오긴 하는데, 단순히..
안녕하세요. 주형권입니다. 2023년 6월 30일 기준으로 어느덧 GS리테일에 입사한 지 2달을 넘었습니다. 현재 잘 적응하고 있으며 입사 이후에 정말 많은 것들을 만들고 있습니다. 이번 글은 그 첫 번째 프로젝트에 대해서입니다. 저는 어느 회사를 가던지 무조건 처음에 하는 작업이 있습니다. 바로 모니터링 시스템을 만드는 작업입니다. 데이터엔지니어를 5년 정도 하면서 많은 실무자들이 개발 베이스로 일을 하다 보니 운영에 대해서 경험이 없는 경우가 많고 어떠한 것을 만들어야 할지 어떻게 만들어야 할지 모르는 경우가 매우 많았습니다. 운영이 생각보다 신경 쓸게 많고, 많은 지식을 요하는 경우가 있어서 쉬운 부분이 아닙니다. 그래서 이러한 노하우(?)를 공유하고 어떻게 도입하였는지 공유하여 많은 분들께서 도움..
안녕하세요. 주형권입니다. 이직을 하고 최근에 AWS 환경에서 DataLake를 구축하다보니 AWS 기반의 작업을 많이 하고 있습니다. 저 같은 경우 회사를 옮기면 우선 모니터링부터 만들고 시작하니, 초반에 모니터링에 관련 된 여러가지 글을 작성하게 되었습니다. 이 글에서 나오는 내용은 Python의 boto3의 LakeFormation의 list_permissions를 이용하였습니다. 추출 결과값 Name(Kor) boto3 dict result Key Name describe 유저 ID (arn) DataLakePrincipalIdentifier (string) An identifier for the Lake Formation principal. 권한 리스트 Permissions (list) The ..
안녕하세요. 주형권입니다. Redshift에 관련하여 오랜만에 글을 작성하는거 같습니다. 최근 입사한 회사에서 Redshift를 사용하려고 하고 있어서 여러가지 테스트를 하는 와중에 오류를 발견하고 해결하는 과정에서 여러가지 삽질(?)을 경험하고 쉽게 해결하는 방법을 찾아서 공츄 차원에서 글을 작성 하였습니다. 🤔 무엇을 하려고 하였는가? Redshift의 COPY를 이용하여 S3에 Parquet 형태로 저장된 데이터를 Redshift 테이블에 입력하고자 하였습니다. COPY의 경우 테이블을 만들면서 들어가는 경우는 지원하지 않는것 같고 이미 있는 테이블에 INSERT만 지원하는 것으로 보였습니다. 그래서 최초에 테이블을 만들어줘야 하는데요. Glue 카탈로그를 이용하여 Athena에 있는 데이터의 DD..
안녕하세요. 해당 글을 MySQL 문법을 사용 하였습니다. 지난번에 Query를 통해서 Airflow의 스케줄 시간을 파싱 하는 글을 작성하였는데요. ( 바로가기 ) 이번에는 파싱하여 일반 사용자가 보기 편하게 나타내는 Query를 만들었습니다. 위와 같이 Crontab시간을 사용자가 보기 편한 형태로 보여 주도록 하였습니다. 아무래도 규치적을 주고 파싱을 하다 보니 영어 표현과 어순이 조금 어색하거나 안 맞는 경우가 있습니다. 이 부분은 감안해 주세요. (도저히.. 어떻게 바꿀지 모르겠습니다.) SELECT schedule_interval ,CASE WHEN schedule_interval = '"@once"' THEN 'Schedule once and only once' WHEN schedule_in..
안녕하세요. 데이터엔지니어 주형권입니다. 오랜만에 꽤나 길고 범용적인 주제에 관해서 글을 쓰려고 합니다. 많은 회사에서 데이터를 활용하여 많은 업무를 하고 데이터를 이용해서 많은 의사결정을 하고 있습니다. 그러면서 데이터의 양도 방대하고 종류도 꽤나 다양해졌습니다. 제가 처음에 일할 때는 RDB(Relational Database)에서 발생하는 데이터만 주로 다루었습니다. 하지만 최근에는 너무도 많고 너무도 다양한 데이터를 이용해서 의사결정과 업무를 진행합니다. 하지만 데이터가 아무리 다양하고 많아져도 RDB에서 발생하는 트랜잭션 데이터는 절대적으로 필요합니다. 그렇기에 RDB에서 데이터를 가져오는 것은 절대로 필요하다고 볼 수 있습니다. 회원 데이터 또는 빌링 데이터등은 무결성이 무조건이기 때문에 RD..
BigQuery에서 가끔씩 Error: 80324028이 발생하면서 실행이 실패하는 경우가 있습니다. 이러한 현상을 구글링 해봤으나 별다른 성과가 없었으며, Slack overflow에서만 몇몇 답글이 달렸지만 해결방법은 없고 대부분이 "아마도 그럴 것이다?"라는 추측이었습니다. 무슨 작업을 했을 때 발생 하였는가? 그래서 몇 가지 의심 가는 정황을 포착해서 여러 가지 테스트를 해보았는데, 현재는 발생하지 않고 있습니다. 제가 하려던 작업은 ETL 작업이었고 Python Operator를 이용해서 작업을 부르고 그 안쪽에 BigQuery의 Query를 수행하는 작업이 몇 개 있었습니다. 대략 이러한 작업이었습니다. 이러한 여러 번의 Query를 수행하는 작업이 순차적으로 수행됩니다. drop_query ..
안녕하세요. 오랜만에 BI 관련해서 글을 작성합니다. 최근에 회사에서 Data Studio를 통해서 BI를 만들기 시작하면서 다시 한번 Data Studio를 통해서 BI를 만들기 시작하였습니다. 그리고 Data Studio가 Looker Studio로 명칭이 변경되었습니다. 하지만 아직도 Data Studio로 이름이 많이 불리고 있어서 Data Studio라고 글을 작성하였습니다. "채워진 지도" 지표는 Data Studio에서 구글맵을 이용하여 지도를 제공하며 기본적으로 Data Studio에서 제공하는 지표입니다. 구글맵답게 "로드 뷰" , "항공 뷰"등의 여러 가지 기능을 제공합니다. 지난번에 작성하였던 지하철 노선도 지표 그리기가 위경도를 이용하여 데이터를 표현하였다면 이번에는 지역명을 통해서..
안녕하세요. 데이터 엔지니어 주형권입니다. 지난번에 작성 한 Cloud Build를 이용한 Github와 GCS의 동기화 작업을 소개한 적이 있는데요. ( 링크 ) 오늘 다시 한번 세팅해야 하는 일이 생겨서 세팅 하는 중에 오류를 발견하여 이를 어떻게 해결했는지 소개하고자 합니다. 오류 내용 "ERROR: build step 1 "gcr.io/cloud-builders/gsutil" failed: step exited with non-zero status: 1" 오류는 위와 같이 발생 하였습니다. 이게 무슨 내용인지 전혀 알 수가 없고, 무슨 말인지 알 수가 없어서 구글에 검색해도 해결 방법이 나오진 않았습니다. 더욱 자세한 내용을 스크린숏으로 보면 다음과 같습니다. yaml 파일이 잘못 된것이라고 생각..
안녕하세요. 주형권입니다. 데이터웨어하우스 관련 글을 오랜만에 쓰는 것 같습니다. 글을 읽기 전에 이 글의 내용은 제가 알고 있고 공부한 내용을 바탕으로 설명하였습니다. 이 내용을 꼭 맹신하지 않고 혹시라도 다른 내용이 있다면, 서로 비교하여 읽기를 추천드립니다. 데이터웨어하우스 (이하 DW) 관련한 여러 가지 글이 있는데 그중에 DW의 설계 기법인 Star Schema와 Snowflake Schema에 대해서 설명해 보려고 합니다. DW를 하다 보면 가히 필수로 알아야 하는 개념이며 추가적으로 Galaxy Schema라는 설계 기법도 존재합니다. 최근에는 BigQuery와 같은 컬럼 형식으로 저장하면서 이러한 기법을 굳이 사용하지 않아도 최적의 저장 효율을 제공합니다. DW 기법이 필요한 이유는? DW..
안녕하세요. 최근 이직으로 인해서 오랜만에 인사를 드립니다. 이직을 하면서 새로운 환경에서 새로운 데이터 파이프라인을 만들다 보니 처음 접하는 도구를 사용하는 일이 많아졌습니다. GCP에 새로운 기능이 많이 생겼고 인원이 없는 경우 Saas를 이용해서 빠르게 무언가를 구축해야 하는 경우가 있어서 이번에는 GCP의 Composer를 사용하게 되었습니다. Composer란? https://cloud.google.com/composer/docs/composer-2/run-apache-airflow-dag 빠른 시작: Cloud Composer 2에서 Apache Airflow DAG 실행 | Google Cloud Cloud Composer 환경을 만들고 Cloud Composer 2에서 Apache Airf..
안녕하세요. Python으로 BigQuery에 Json 형태의 데이터를 Import 하려고 할 때 다음과 같은 오류가 발생하여 계속해서 삽질을 하다가 원인을 찾고 해결하여 이러한 삽질을 방지하기 위해서 글을 올립니다. 1. 무엇을 하려고 하였나? RDB에 있는 데이터를 Json 형태로 Local에 다운로드 다운로드 한 Json 파일을 GCS로 업로드 GCS에 있는 Json 파일을 BigQuery에 Import 3번에서 에러가 발생하였습니다. 에러 내용은 python과 BigQuery web UI에서 테이블 생성 기능으로 2가지 상황에서 각각 다르게 발생하였습니다. 2. Error 내용 1. python에서 발생하는 Error google.api_core.exceptions.BadRequest: 400 E..
글을 읽기 전에 이 내용은 저의 경험을 토대로 작성하였습니다. 현재 사용하시는 도구 및 방법과 다르다고 하여 무엇이 맞고 틀리고를 이야기하고자 하는 글이 아닌 경험을 공유하고자 작성된 글이므로 참고 차원에서 봐주시길 바랍니다. 데이터를 보기 위해서는 많은 과정이 필요합니다. SQL을 이용해서 데이터를 추출하고 이를 엑셀로 다운로드하거나 리포트를 만들어서 보는 과정이 아닌 전체적인 과정을 설명하고자 합니다. 이 글의 내용은 제가 아는 범위에서 작성하였으나 회사마다 모두 다르고 사람마다 모두 다른 방식으로 할 수 있기 때문에 어느 정도 감안해서 글을 읽어 주시길 바랍니다. 보통 데이터는 크게 3가지의 데이터가 있습니다. 정형 데이터 : 관계형 데이터베이스 (MySQL , SQL Server , Oracle)..
안녕하세요. 최근에 이직을 하면서 많이 바빠서 글을 쓰지 못하였습니다. 어느정도 정리하고 여유가 생기면서 이번에 발생했던 오류에 대해서 글을 간략하게 쓰려고 합니다. 1. 무슨 작업을 하려고 하였는가? 현재 재직중인 회사는 Redshift를 사용하고 있으며 이를 BigQeury로 이관하려고 합니다. 그래서 GCP의 BigQuery 기능인 BigQuery Data Transfer를 이용해서 Redshift를 BigQuery 이관 하려고 합니다. https://cloud.google.com/bigquery-transfer/docs/redshift-migration?hl=ko Amazon Redshift에서 데이터 마이그레이션 | BigQuery Data Transfer Service | Google Clou..