데이터베이스17 [Biguqery] 뉴비를 위한 빅쿼리 User Defined Function(사용자 정의 함수) 설명 및 쿼리 사용법 DBMS 들은 대부분 UDF 기능을 가지고 있는데, 알아두면 프로시저와 같이 유용하게 쓰일 수 있다! 꼭 Bigquery가 아니어도 되지만, 이번 포스팅에선 빅쿼리를 기준으로 설명하도록 한다. 0. Function 함수란 ? 일단, 함수라는 기본 개념은 y=f(x) 인데, x에다 원하는 값을 넣으면 출력되는 y값이 있도록 만든 것이다. 프로그래밍에서도, DB에서도 똑같은 개념으로 쓰인다. 값을 넣으면 내가 정의한 처리를 거쳐 결과가 나오게끔 설정해주는 것. 그게 함수이다. 즉 사용자 정의 함수를 정의한다는 것은 내가 스스로 저 네모박스를 만들어주는 것! *왜 쓰나요?1.기니까.... 내가 막 ~~~~~~~ a라는 값을 입력하면 +2를 하고 -3을 하고 x10을하고 루트를 씌우고 이런 과정을 해야하는데 .. 데이터베이스/데이터베이스 2024. 10. 25. [SQL 뉴비 가이드북] 0.컨텐츠 아카이브 SQL을 공부하게 되면, SELECT , FROM , WHERE, JOIN 등으로 시작할 것이다. 하지만 이런 예쁜 문법만 쓰는 코딩테스트의 문제는 실제 현업과 좀 다르다.코테에서 리텐션을 구하는 문제를 본 적이 있는가..? 프로그램 코테는 최적화를 시키는데 SQL 코테는 왜 안그럴까? 이처럼 SQL 문법은 익혔는데, 업무에선 어떤 쿼리를 작성할지 잘 모르는 주니어들을 위한케이스 별 쿼리 작성법에 대한 가이드를 기록해보려고 한다. 나중에 SQL 어디서 배워? 라고 했을 때 이 블로그를 전달해주는 그날까지 차곡차곡 쌓아나가보자! [SQL 뉴비 가이드북] 1.로그인 로그에서 SQL로 리텐션 뽑기SQL 뉴비 가이드북의 첫 탄! 내가 첫 회사 입사 후 맡은 첫 업무였기도 하고, SELECT FROM .. 데이터베이스/SQL 2024. 10. 2. [RDB] DB별 포트 번호 연결 정보를 늘 어떤 DB인지 주지 않고 받아서 아니 도대체 어떤 데이터베이스에 연결하라는거지? 라는 생각을 계속했었는데 포트번호로 구별하면 되었던 것이다... 😅 아래 포트가 포함되어있으면 그 데이터베이스로 연결하면 된다. DB포트번호MySQL,MariaDB3306Oracle1521MSSQL1433PostgreSQL5432DB250000Infomix1526Sybase5000Derby1527 참고자료https://java119.tistory.com/91 데이터베이스/데이터베이스 2024. 8. 7. [MSSQL] MSSQL에서 MERGE 구문과 WITH절 같이 쓰기 Biguqery에서는 Merge 구문 안에 With절을 사용해도 정상적으로 작동한다.Bigquery ver MERGE INTO `` AS targetUSING (WITH signup_log AS (쿼리를 입력하세요)SELECT a, FROM signup_log) AS source ON target.date = source.dateWHEN MATCHED THEN UPDATE SET target.dau = source.dau,WHEN NOT MATCHED THEN INSERT (date) VALUES (source.date); 그러나, MSSQL에서 이렇게 사용해버리면 With절이 옳지 않다는 오류가 발생하는데, 순서를 바꿔주면 가볍게 해결가능하다 MSSQL에서 이렇게 사용하세요Merge 구문을 사용하기.. 데이터베이스/SQL 2024. 8. 7. [SSMS] SQL Server Management Studio 에서 CSV로 테이블 만들기 할 때마다 맨날 까먹어가지고 적어두는 SSMS CSV 플랫 파일 가져오기 주로 빅쿼리에 적재는 되어있지만 실시간으로 쌓이지 않는 테이블들을 분석을 위해 사내DB로 떠올 때 사용한다. 방법 2가 조금 더 간단합니다! 방법1) 데이터 가져오기 방법1.데이터베이스 오른쪽마우스 후 태스크 클릭 후 데이터 가져오기 선택 2.데이터 원본에서 Flat File Source 선택 후 찾아보기! 그런데 찾아보기 하고 해당 경로에 가면 파일이 없다. 그럴 땐 열기창 우측 하단에 파일 종류를 CSV 파일로 바꿔주면 된다등록 후 Next 버튼 클릭하기 3.컬럼과 데이터를 잘 불러왔는지 보고 Next 4.어디다가 불러올지를 선택해준다. 나는 SQL 서버에 불러올 건데, 나는 SQL Server인증으로 사용자 이름과 암.. 데이터베이스/데이터베이스 2024. 7. 1. [Bigquery] 빅쿼리 SELECT * REPLACE 빅쿼리에서는 일부 컬럼만 바꿔주는 기능이 있다. 바로 이것이다. SELECT * REPLACE(원하는 데이터 AS 바꿀 데이터)-- A컬럼을 모두 A+1로 바꾸고 싶으면SELECT * REPLACE(A+1 AS A) -- 한번에 다중 컬럼을 변경하고 싶으면 SELECT * REPLACE(A+1 AS A, B+1 AS B) 아래 빅쿼리 공공 데이터를 통해 SELECT * 을 해보면 다음과 같은 결과가 출력된다. SELECT * FROM `bigquery-public-data`.utility_us.zipcode_area WHERE zipcode='87505' 내가 이 중 zipcode 컬럼에 속한 데이터를 1로 다 바꾸고 싶다면 이렇게 써주면 된다SELECT * REPLACE('1' AS zipcod.. 데이터베이스/SQL 2024. 6. 26. [MSSQL] 해당 날짜 월의 1일에 해당하는 날짜 추출하기 / 월 추출 주 추출 👇 [MSSQL] 해당 날짜 주차의 월요일에 해당하는 날짜 추출하기빅쿼리에서는 DATE_TRUNC(date,week(monday))로 엄청 편하게 쓰는데 MsSQL은 조금 복잡하다.SET DATEFIRST 1;을 사용해주는게 제일 편리해서 나는 이 방법으로 사용하고 있다. *SET DATEFIRST란? 주에서 첫번째sseozytank.tistory.com 앞선 포스팅과 마찬가지로, 빅쿼리에서는 DATE_TRUNC(month,date) 로 할 수 있는 것을 MSSQL에선 조금 복잡하게 해줘야 한다. 어렵진 않은데 모르면 만들어 내기는 힘든.. 1번. 연과 월을 추출해서 포맷팅해주기SELECT DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1) AS .. 데이터베이스/SQL 2024. 6. 12. [MSSQL] 해당 날짜 주차의 월요일에 해당하는 날짜 추출하기 빅쿼리에서는 DATE_TRUNC(date,week(monday))로 엄청 편하게 쓰는데 MsSQL은 조금 복잡하다.SET DATEFIRST 1;을 사용해주는게 제일 편리해서 나는 이 방법으로 사용하고 있다. *SET DATEFIRST란? 주에서 첫번째 시작일을 지정해주는 것 월화수목금토일1234567 오늘이 2024-06-12라고 했을 때, MsSQL에서 해당 날짜 주차의 월요일에 해당되는 2024-06-10을 뽑는 쿼리SET DATEFIRST 1;SELECT CONVERT(DATE, DATEADD(DAY, 1 - DATEPART(WEEKDAY, GETDATE()), GETDATE())) 따라서 사용할 때는 GETDATE() 부분을 내가 사용할 날짜 컬럼으로 바꾸어주면 된다! 데이터베이스/SQL 2024. 6. 12. [MSSQL] SQL Server에서 SAFE_DIVIDE 사용하기 Divide by zero error encountered 이 오류는 분모가 0이 들어갈 때 나누기를 시도할 때 발생하는 에러임! 빅쿼리 같은 경우 SAFE_DIVIDE라는 함수가 있어서 아주 편하게 사용할 수 있는데 ... 😥SELECT IFNULL(SAFE_DIVIDE(a,b),0) AS safe_exampleFROM sample_table MsSQL에서 사용할려하니 당연히 없는 함수라 뜬다. 그럼 어떻게 사용하면 될까 ? 1.case when 으로 0일 때 null 처리 해주기. SELECT CASE WHEN b=0 THEN null ELSE a / b END AS sample FROM sample_table 분모가 0이 될 때, case when으로 null로.. 데이터베이스/SQL 2024. 6. 10. [Lock] MSSQL의 Lock과 트랜잭션 격리 개념 1.Lock 이란? - 데이터 베이스에서 동시성 제어를 할 때 사용하는 기술 - 많게는 수천 명의 사용자(트랜잭션)가 액세스 하는 애플리케이션 환경에서 여러 요청을 동시에 처리 하기 위해 사용 * Transcation - 나누어지지 않는 최소한의 데이터 베이스 처리 단위 - SELECT, INSERT, UPDATE, DELETE 등과 같은 조작어를 사용하는 행동 왜 사용할까 ? - 어떤 프로세스가 먼저 해당 자원을 수정할지 확실하지 않기 때문에 예측 불가능한 결과 발생 가능 - 데드락 발생 가능 * 데드락 - 두개 이상의 프로세스가 서로 가진 자원을 대기하면서 무한정 대기되는 상황 - SQL Server에서는 일반적으로 데드락 발생 시 가장 손해가 적은 트랙잭션을 실행하는 스레드를 희생자로 선택 - 여러.. 데이터베이스/데이터베이스 2023. 12. 28. [ SQL Server] SQL Server Agent를 이용해 Daily Job을 생성해보자 빅쿼리의 데이터들을 사내 서버로 옮기고 있다. 이 과정에서 기존 빅쿼리에서 설정해주었던 프로시저 실행 Daily Job을 MSSQL에서도 걸어줘야하는데 어떻게 하면될까!? SQL Server Agent를 이용하면 빅쿼리와 동일하게 실행 가능하다. 엄청 쉬우니 차근차근 따라오면 된다. (__) 1.SQL Server 에이전트 활성화 - 개체 탐색기를 살펴보면 SQL Server 에이전트가 아래와 같이 떠있는 사람도, 빨간불이 떠있는 사람도, 없는 사람도 있을 것이다. 나는 없는 케이스였다. CASE 1. 에이전트가 잘 나타나고, 활성화 된 상태 - 위에 사진 처럼 파란불이 정상적으로 들어와있다면 잘 되어있는 상태이다. 패스! CASE 2. 에이전트가 나타나지만, 비활성화 된 상태 -아래 처럼 에이전트.. 데이터베이스/데이터베이스 2023. 12. 12. [Bigquery] GCS를 활용한 대용량 쿼리 데이터 다운로드 빅쿼리 내에 결과 저장을 통한 csv (로컬 파일) 다운로드는 최대 10mb 까지 가능하다. 그런데, 다른 팀에서 약 1GB가 넘는 raw 데이터를 보내달라고한다... 퇴근해야하는데.. 어떡하지? Google Drive로 보낸다면 1GB까지 저장이 가능하지만, 이걸로 커버쳐지지 않는다. 이럴 때, GCS 버킷을 활용해서 데이터를 저장하면 된다. (우리 짱 멋진 팀장님이 알려주셨다.) 0.데이터를 내보내는 권한 필요 | BigQuery 테이블에서 데이터를 내보내는 권한 BigQuery 테이블에서 데이터를 내보내려면 bigquery.tables.export IAM 권한이 필요합니다. 사전 정의된 다음 각 IAM 역할에는 bigquery.tables.export 권한이 포함되어 있습니다. roles/bigqu.. 데이터베이스/데이터베이스 2023. 11. 28. 이전 1 2 다음