What a Beautiful Data!

SQL 노가다 최적화 & 업무 효율화 띵킹

by darami

### 시간을 효율적으로 쓰자


1. 사내 분석 툴로 할 수 없는 퍼널 분석인가? >> 몇번 실패했더라도 실험 같은 경우에는 , 특히 분기 없을 때 간단하게 확인 할 수 있음으로 시도해본다. 그리고 작은 성공 경험을 조금이라도 경험하고 같은 케이스들에서 분석 시간을 줄인다.

2. 이슈가 있는 로그, 그 로그가 분석에 꼭 필요한가? 빼고 보면 문제가 생기는가? 아니라면 이슈있는 로그는 무시하고 가자.

3. 해 달라는 분석을 다 수용하고 있지는 않은가? 그래서 이 분석 후에 어떤 액션 아이템을 발굴할 수 있는가? 할 수 없다면 왜 필요한가? 필요한 최소 방법이 있는가?
    1. 액션 아이템이 있다면, 그 액션 아이템을 실행 했을 때 예상 임팩트가 큰가? 더 이탈률이 큰 구간이 있지는 않은가?

4. 도메인을 잘 몰라서 partial한 데이터를 보고 action item을 내기 어려운가? 자신이 없는가? dom 뿐 아니라 담당 da, dom분에게 직접 물어보고 집계의 차이, 도메인에 대한 이해를 얻어 confidence level 을 높이자. 틀릴 가능성에 대한 무서움을, 이것으로 극복하자.

5. 이 큰 회사에서, 내 데이터로 의사 결정이 휙휙 바뀔 수 있는 곳에서, 틀릴 가능성이 너무 무서운가? 정합성 체크 쿼리를 보완하고, 처음에 로우 쿼리를 먼저 보는 것을 습관화 하고, 액션 아이템 5개 중에 1~2개만 선택되면 된다는 생각으로 가자

6. 배치를 돌릴 때 웬만하면 로그 자체만 넣고 분석 쿼리는 따로 집계하자!
    1. 그렇게 해야 나중에 쿼리 변경이 있을 때 또다시 커밋하고 배치 말지 않아도 된다!

7. 고민을 po와 lead와 서로 공유하고, 피드백을 상시로 받자. 말하지 않으면 아무도 모른다.

8. 몇 달 전의 나 처럼, 의지를 높일 생각을 하지 말고 시스템을 구축하자.
    1. 내 목표를 볼 수 밖에 없게 만들고, 피드백을 반영하여 block 시간을 정하자

Mysql, impala, MSSQL,PostgreSQL, 분석 환경 등에 따라 다른 날짜 함수 헷갈리지 말고 구하자!


## 🚀 **결론: Impala(Hue)에서 날짜 함수 제대로 활용하기!**

1. **현재 날짜/시간 가져오기** → `now()`, `current_date()`
2. **날짜 변환** → `cast()`, `unix_timestamp()`, `from_unixtime()`
3. **날짜 연산** → `date_add()`, `date_sub()`, `timestampdiff()`
4. **포맷 변환** → `date_format()`, `to_date()`
5. **특정 값 추출** → `year()`, `month()`, `day()`, `hour()`

분 차이 구하기

```sql
SELECT (unix_timestamp('2024-02-16 14:30:00') - unix_timestamp('2024-02-16 08:00:00')) / 60 AS diff_minutes;
```
시간 차이 구하기
```sql
SELECT (unix_timestamp('2024-02-16 14:30:00') - unix_timestamp('2024-02-16 08:00:00'))
/ 3600 AS diff_hours;
```

최근 7일 구하기
```sql
SELECT *
FROM orders
WHERE order_time >= date_sub(current_date(), 7);
```

최근 1일 부터 현재까지 _파티션 걸어주어 더 좋게
- partition_day >= date_add(to_date(now()),-1)
    and partition_day <= to_date(now())




Multi- cusrsor 멀티 커서를 실습하여 노가다에 쓰이는 시간을 줄이자

```sql
Ctrl-Shift-U Ctrl-Shift-U 소문자로변환
Ctrl-U Ctrl-U 대문자로 변환
기Ctrl-E Command-E 쿼리 초기화
Ctrl-S Command-S 쿼리 저장
Command-Option-T  (Ctrl-Alt-T ) : 다크모드
ctrl + i                        쿼리 프리티어?
멀티셀렉션
Ctrl-Shift-L Ctrl-Shift-L 해당 줄 선택(여러번 누르면 아래로 계속 범위 지정됨)
Ctrl-Alt-Up Ctrl-Option-Up 위쪽으로 멀티커서
Ctrl-Alt-Down Ctrl-Option-Down 아래쪽으로 멀티커서
Ctrl-Alt-Right Ctrl-Option-Right 범위지정해서 쓰면, 같은 단어를 찾아서 자동지정
Ctrl-Alt-Left Ctrl-Option-Left 범위지정해서 쓰면, 같은 단어를 찾아서 자동지정(뒤로)
```

정합성 체크 쿼리 basic


- 유저의 정보가 내가 원하는 수준 이상으로 더블링 되어있지는 않은지 확인해보자

```sql
-- SELECT partition_day
--         , os
--         , app_ver
--       , funnel_name
--       , count(DISTINC user)
--       , count(*)
-- from mydata_add_df
-- group by 1,2,3,4
-- having  count(DISTINC user) !=  count(*)
```


블로그의 정보

다람

darami

활동하기