반응형
반응형
안녕하세요. 데이터엔지니어 주형권입니다. 오랜만에 꽤나 길고 범용적인 주제에 관해서 글을 쓰려고 합니다. 많은 회사에서 데이터를 활용하여 많은 업무를 하고 데이터를 이용해서 많은 의사결정을 하고 있습니다. 그러면서 데이터의 양도 방대하고 종류도 꽤나 다양해졌습니다. 제가 처음에 일할 때는 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..
안녕하세요. 지난번의 BigQuery 운영 1탄 편이었던 불필요한 Dataset 삭제 이후에 2탄 BigQuery 사용량 관리에 대해서 글을 작성하였습니다. 어찌 보면 이 글이 1탄보다 훨씬 더 유용할 것으로 보입니다. Query 사용량의 경우 비용과 직결되는 부분이며, 데이터셋의 저장비용 보다 훨씬 많은 비용이 발생합니다. ( BigQuery 가격 ) Query를 어떻게 실행 하느냐에 따라서 엄청난 비용을 절약할 수 있고 이러한 모니터링을 만들어두면 여러모로 도움이 많이 됩니다. 사용자들에게 무작정 데이터를 많이 쓰지 못하게 하는 것보다는 효율적으로 만드는 방법을 알려줌으로써 모두가 데이터에 손쉽게 접근하고 손쉽게 사용하게 하는 것을 목적으로 하였기에 누구나 접근이 가능한 구조이므로, 데이터를 잘 모르..
안녕하세요. 오랜만에 글을 쓰는 것 같습니다. 연말이라서 대외적으로 여러 가지 약속도 많고 일이 있어서 글을 못 쓴 것 같습니다. 써야 할 글은 많은데, 그러지 못한 거 같습니다. 다시 열심히 써야 할 것 같습니다. 오늘 소개 할 내용은 BigQuery의 클러스터링입니다. 이걸 처음 알았을 때 정말로 신선하고 너무 좋은 기능이라고 생각해서 나름대로 공부를 해서 이렇게 글을 올립니다. 클러스터링은 제가 공부하면서 개인적으로 생각하기에 RDB의 인덱스와 비슷한 것 같습니다. 어디까지나 개인적인 생각이지만 데이터를 정렬해서 가져오는 방법이나 클러스터링의 순서에 따라서 사용 여부가 결정되는 것을 보면 인덱스의 성질과 정말 비슷해 보입니다. RDB에서도 복합 인덱스를 생성할때 순서에 따라서 인덱스를 Seek 할지..
안녕하세요. 이 내용을 쓸지 말지 정말 고민을 많이 했습니다. 예전에 링크드인에 관련하여 포트폴리오 형식으로 PPT를 만들어서 올렸는데요. 조회수가 3만에 육박하여 굉장히 많은 분들이 관심을 가져 주셨습니다. 그래서 매번 써야지 써야지 했는데 내용이 워낙 길어서 고민을 많이 했습니다. 간단하게 쓸 수 없었습니다... 1.0 개발 - 2개월 2.0 개발 - 2개월 3.0 개발 - 2개월 이렇게 총 3번의 버전 업데이트를 하였습니다. 처음에는 데이터를 볼 수 없어서 분석을 하지 못하였는데, BigQuery로 넣는 작업부터 시작하여... 재사용성을 고려하여 코드를 리팩토링 하였고, 마지막으로 multi thread를 적용하였습니다. 코딩을 2019년에 처음 시작하여, 지금의 회사에서 팀장님과 팀원들에게 많이 ..
BigQuery의 다수의 테이블의 스키마를 Json으로 봐야 하는 작업이 있어서 한 땀 한 땀 열심히 만다가 문득 스키마를 추출해서 파일로 저장할 수 없을까?라는 생각이 들어서 찾아봤습니다. 🙋♂️ 들어가며 일단 해당 기능을 사용하기 위해서는 bq가 있어야 합니다. bq 설치는 아래를 참고해 주세요. 👇👇👇👇 https://cloud.google.com/bigquery/docs/bq-command-line-tool?hl=ko bq 명령줄 도구 사용 | BigQuery | Google Cloud 의견 보내기 bq 명령줄 도구 사용 bq 명령줄 도구는 BigQuery용 Python 기반 명령줄 도구입니다. 이 페이지에는 bq 명령줄 도구 사용에 대한 일반적인 정보가 포함되어 있습니다. 모든 bq 명령어 및..
오랜만에 글을 쓰는거 같습니다. 한동안 서버 세팅을 하면서 바쁜 시간을 보내고 재택 근무를 하면서 이런저런 적응을 하다보니 글을 안쓰게 되었습니다. 그러다 이번에 새롭게 Airflow2.0을 실제로 세팅 하면서 이런 저런것을 정리해야겠다 싶어서 글을 씁니다. 들어가며... 이 글을 읽고 참고 하시면 도움이 될 분들은 이런 분들 입니다. 스케줄 처리를 해야하는데, Airflow를 선택 하였다. 하지만 나는 딥하게 알지는 못한다. 대규모 처리가 필요한게 아닌 적당한 처리를 할 예정이다. 일단 실무에 급하게 반영해야 하는데 봐도 잘 모르겠다. 튜토리얼이 아닌 진짜 실무에서 쓸수 있는 Airflow 시스템을 구축 하려고 한다. 반면 읽어도 큰 도움이 안 될 분들은 이런 분들 입니다. 대규모 작업이 필요하며, 빠..
안녕하세요. google compute engine(이하 GCE)을 모니터링해야 해서 stackdriver를 적극적으로 활용하려고 하였는데요. 너무 UI도 별로고 제가 하고싶은데로 변형해서 사용하기에 너무 불편해서 직접 python api를 이용해서 데이터를 읽고 이를 mysql에 넣어서 datastudio로 만드는 방법을 선택하였습니다. (여기서는 API 사용법만 설명합니다..) 그런데 이 python api가 너무 설명도 많이 없고 불친절해서 하면서 겪은 이슈에 대해서 정리하였습니다. 우선 제가 참고한 api는 list_time_series라는 google에서 제공하는 phyton api입니다. 아래의 url을 들어가 보면 python뿐만 아니라 다양한 언어를 지원하는 듯합니다. https://clo..
안녕하세요. big query에서 파티션 컬럼을 사용하여 불필요한 부분을 읽지 않고 데이터를 가져옴으로써 비용과 성능을 최적화하는 부분은 많은 분들이 알고 계실 듯합니다. 위와 같이 파티션 컬럼을 이용할 경우 많은 이점을 가질 수 있지만 그렇게 하지 못하는 경우가 존재할 수 있습니다. 만약에 테이블에 날짜 컬럼이 여러 가지인데, 사용하고자 하는 날짜 컬럼이 파티션 되지 않은 경우가 다음과 같은 경우입니다. big query에서는 일반 RDB처럼 여러 개의 인덱스(파티션 칼럼)를 제공하지 않습니다. 그렇기 때문에 1개의 파티션 칼럼을 통해서 성능을 향상해야 하는데요. 이 경우 매우 난감한 상황이 발생합니다. 기준으로 하는 날짜 컬럼으로 값을 가져올 경우 데이터가 맞지 않는데 성능, 비용 때문에 이를 써야 ..