[STARTERS 4๊ธฐ TIL] #31์ผ์ฐจ(23.03.21)


๐Ÿ“š ์˜ค๋Š˜์˜  ํ•™์Šต

ํƒœ๋ธ”๋กœ ํ•จ์ˆ˜, ํ…Œ์ด๋ธ” ๊ณ„์‚ฐ ๋ชจ์Œ
์ฐจ์› ์ง‘๊ณ„

· MIN
· MAX
· COUNT
· COUNTD
· ATTR - ํŠน์„ฑ

 

์ธก์ •๊ฐ’ ์ง‘๊ณ„

· SUM
· AVG
· VAR
· VARP
๋“ฑ๋“ฑ

 

Primary ํ•จ์ˆ˜

· TOTAL
· PREVIOUS_VALUE
· LOOKUP
· RUNNING
· WINDOW

 

Partition

· INDEX
· FIRST - window ํ•จ์ˆ˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
· LAST

 

RANK ํ•จ์ˆ˜

· RANK : ๊ณต๋™ 1์œ„๊ฐ€ 3๋ช… → 1์œ„ / 1์œ„ / 1์œ„ / 4์œ„
· RANK_DENSE : ๊ณต๋™ 1์œ„๊ฐ€ 3๋ช…  1์œ„ / 1์œ„ / 1์œ„ / 2์œ„
· RANK_UNIQUE : ๊ณต๋™ 1์œ„๊ฐ€ 3๋ช…  1์œ„ / 2์œ„ / 3์œ„ / 4์œ„

 

์ž์ฃผ ๋‚˜์˜ค๋Š” ์งˆ๋ฌธ
ํ€ตํ…Œ์ด๋ธ”์€ ๊ผญ ๋‚˜์œ ๊ฒƒ์ผ๊นŒ?

์•„๋‹ˆ๋‹ค.

๋งŒ์•ฝ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ VLOD์— ๋‚˜์—ด๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์‹œํŠธ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋Œ€์‹œ๋ณด๋“œ์— ๋ณด์ด๋Š” ๊ฒฝ์šฐ๋Š”

ํ€ตํ…Œ์ด๋ธ” ์‚ฌ์šฉ์„ ๊ถŒํ•œ๋‹ค.

๊ทธ๋ ‡์ง€๋งŒ ํ…์ŠคํŠธ ํ…Œ์ด๋ธ”์— ํ•˜๋‚˜์˜ ํ…์ŠคํŠธ๋กœ ๋ณด์ด๊ฑฐ๋‚˜

๋‹ค์–‘ํ•œ ๋™์ž‘, ์ฐจ์› ๊ณ ์ •, ํ•„ํ„ฐ๋ง์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋˜ํ•œ ์ œ3์ž๊ฐ€ ๋ณด์•˜์„ ๋•Œ ๊ณ„์‚ฐ๋œ ์‹๋ณด๋‹ค๋Š” ํ•ด์„์ด ์–ด๋ ต๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

 

ํ…Œ์ด๋ธ” ๊ณ„์‚ฐ์—์„œ (์˜†์œผ๋กœ) (์•„๋ž˜๋กœ) ๋“ฑ๋“ฑ์€ ์ •ํ™•ํ•˜๊ฒŒ ๋ฌด์—‡์ธ๊ฐ€์š”?

ํŠน์ • ์˜ต์…˜์„ ์„ ํƒํ–ˆ์„ ๋•Œ ๊ณ„์‚ฐ์ด ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์ง€๋Š”์ง€ ํ•˜์ด๋ผ์ดํŠธ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์œ„ ๊ฒฝ์šฐ, ๊ฐ ์ง€์—ญ์—์„œ ์—ฐ๋„์— ๋”ฐ๋ฅธ ํŒ๋งค์•ก ์ฐจ์ด๋ฅผ ๋ณด๋Š” ๊ฒƒ์€ ์œ ์˜๋ฏธํ•œ ๋ถ„์„์ด๋‹ค.

๋”ฐ๋ผ์„œ ํ…Œ์ด๋ธ”(์•ž์œผ๋กœ)๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ, 2022๋…„ Central ์˜ ๋งค์ถœ๊ณผ 2019๋…„ East์˜ ๋งค์ถœ ์ฐจ๋ฅผ ๋ณด๋Š” ๊ฑด ์œ ์˜๋ฏธํ•œ ๋ถ„์„์ด ์•„๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ํ…Œ์ด๋ธ”(์˜†์—์„œ ์•„๋ž˜๋กœ)๋Š” ์„ ํƒํ•˜๋ฉด ์•ˆ๋œ๋‹ค.

์œ„์™€ ๊ฐ™์€ ๋…ผ๋ฆฌ๋กœ ์˜ต์…˜์„ ์„ ํƒํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

๊ณ„์‚ฐ๋œ ํ•„๋“œ ์˜ค๋ฅ˜ ์˜ˆ์‹œ ๋ฐ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

โ˜… ์ง‘๊ณ„๋˜์ง€ ์•Š์€ ์ธ์ˆ˜ ํ˜ผํ•ฉ โ˜…
[Case 1]
ex) SUM(profit)/sales

 

์ง‘๊ณ„๋œ ๊ฒƒ๊ณผ ์ง‘๊ณ„๋˜์ง€ ์•Š์€๊ฒƒ์˜ ํ˜ผํ•ฉ์œผ๋กœ ์˜ค๋ฅ˜ ๋ฐœ์ƒ
-> SUM(profit)/SUM(sales) or profit / sales ๋กœ ์ˆ˜์ •


[Case 2]
ex) IF [Region] = "West" THEN SUM([Sales]) END
-> SUM(IF [Region] = "West" THEN [Sales] END) ์œผ๋กœ ์ˆ˜์ •

 

[Case 3]
ex) IF [Order Date] = #2022-06-28# then COUNTD ([Customer Name]) END


์ฃผ๋ฌธ ์ผ์ž๋ณ„ ์ฃผ๋ฌธ ๊ณ ๊ฐ ์ˆ˜ ์ง‘๊ณ„
์ง‘๊ณ„๋˜์ง€ ์•Š์€ ์ฃผ๋ฌธ์ผ์ž์™€ ์ง‘๊ณ„๋œ ๊ณ ๊ฐ๋ช… ๊ฒฐ๊ณผ ํ˜ผํ•ฉ์œผ๋กœ ์—๋Ÿฌ ๋ฐœ์ƒ
-> IF ATTR([Order Date]) = #2022-06-28# then COUNTD ([Customer Name]) END

 

ATTR

1. ATTR ์€ ํ•จ์ˆ˜๋‹ค.
2. ํ•จ์ˆ˜์—๋Š” ๋กœ์ง์ด ์žˆ๋‹ค.
3. Y=ax+b
*๋Š” ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๊ฐ’์ด๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ์— ATTR์ด *์„ ๋ฐ˜ํ™˜ํ•˜๋Š”๊ฐ€


ATTR์€ ์ง‘๊ณ„ ํ•จ์ˆ˜๋‹ค. ๊ทธ ๊ฒฐ๊ณผ๊ฐ€ view level of detail์—์„œ ๊ฒฐ์ •๋œ๋‹ค๋Š” ๋œป์ด๋‹ค.
VLOD์— ๋”ฐ๋ผ์„œ ATTR ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๊ฐ’์ด ๋‹ฌ๋ผ์ง„๋‹ค.
ํƒœ๋ธ”๋กœ์—์„œ ์ง‘๊ณ„๋Š” VLOD์—์„œ ์ด๋ฃจ์–ด์ง„๋‹ค.

 

ATTR์˜ ์ •์˜๋Š”
if min(์ฐจ์›) = max(์ฐจ์›) then ์ฐจ์› else * end

 

ํ˜„์žฌ VLOD์—์„œ ํ•ด๋‹น ํ•„๋“œ๊ฐ€ ๋‹จ ํ•˜๋‚˜์˜ ๊ฐ’์„ ๊ฐ€์ง€๋Š๋ƒ, ๋ณต์ˆ˜์˜ ๊ฐ’์„ ๊ฐ€์ง€๋Š๋ƒ์— ๋”ฐ๋ผ

๋‹จ ํ•˜๋‚˜์˜ ๊ฐ’์„ ๊ฐ€์ง€๋ฉด ๊ทธ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์˜ค๊ณ , ์•„๋‹ˆ๋ฉด *์„ ๊ฐ€์ง€๊ณ  ์˜ค๋ผ.

์˜ˆ์‹œ

 

๋‚ ์งœ ํ•„ํ„ฐ๋ง
MTD(Month To Date) / QTD(Quarter To Date) / YTD(Year To Date)

MTD : ์›”์ดˆ ๋ˆ„๊ณ„.  ์ฆ‰, ์›”์ดˆ๋ถ€ํ„ฐ ๊ธฐ์ค€ ์‹œ์ ๊นŒ์ง€์˜ ๋ˆ„์  ๊ฐ’

๋™์ผํ•œ ๊ฐœ๋…์œผ๋กœ YTD๋Š” ์—ฐ์ดˆ ๋ˆ„๊ณ„, QTD๋Š” ๋ถ„๊ธฐ์ดˆ ๋ˆ„๊ณ„๋ฅผ ๋œปํ•œ๋‹ค.

DATEDIFF('month', [Order Date], [date parameter])=0
AND
DATEDIFF('day', [Order Date], [date parameter])>=0

์œ„ ์‹์„ ๊ณ„์‚ฐ๋œ ํ•„๋“œ๋กœ ์ƒ์„ฑ ํ›„ ํ•„ํ„ฐ๋กœ ์„ค์ •ํ•˜์—ฌ ์ฐธ์ด ๋˜๋Š” ๊ฐ’๋งŒ view์— ํ‘œํ˜„๋˜๋„๋ก ํ•œ๋‹ค.

๋‚ ์งœ ์„ค์ •์„ ์œ„ํ•œ 'date parameter' ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ์œ„์™€ ๊ฐ™์ด ์—ฐ๊ฒฐํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ๋‚ ์งœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ MTD๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ•ฉ๊ณ„ of MTD(Month To Date) / QTD(Quarter To Date) / YTD(Year To Date)
SUM(IF [MTD ์•Œ๋งน์ด] THEN [Sales] END)

 

ํ˜„์žฌ๋กœ๋ถ€ํ„ฐ ๊ธฐ์ค€๋‹ฌ์˜ ํ•ฉ๊ณ„๋ฅผ ๋ณด๊ณ ์‹ถ๋‹ค๋ฉด?
CASE [M-1, M-2]
WHEN '1' THEN SUM(IF DATEDIFF('month', [Order Date], TODAY())=12 THEN [Sales] END)
WHEN '2' THEN SUM(IF DATEDIFF('month', [Order Date], TODAY())=13 THEN [Sales] END)
END

ํ˜„์žฌ๋กœ๋ถ€ํ„ฐ 1๋…„์ „, ๊ทธ๋ฆฌ๊ณ  13๊ฐœ์›” ์ „๊นŒ์ง€์˜ ํ•ฉ๊ณ„๋ฅผ ๋ณด๊ธฐ ์œ„ํ•œ ์‹์ด๋‹ค.

์œ„ ์‹์„ ๋งค๊ฐœ๋ณ€์ˆ˜ 'M-1, M-2'์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 


๐Ÿ’ป ์˜ค๋Š˜์˜  ๊ณผ์ œ

๊ฐœ์ธ ๊ณผ์ œ) ๋‚ ์งœ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ด์šฉํ•˜์—ฌ ๋Œ€์‹œ๋ณด๋“œ ๋งŒ๋“ค๊ธฐ - ๋‚ ์งœ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „์ฒด ๋Œ€์‹œ๋ณด๋“œ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ?

1. ์‹œํŠธ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋Œ€์‹œ๋ณด๋“œ์— ์—ฐ๋™๋˜๊ฒŒ ๋งŒ๋“ค๊ธฐ (๋‚ ์งœ ๋งค๊ฐœ๋ณ€์ˆ˜, ๋ฌธ์ž์—ด ๋งค๊ฐœ๋ณ€์ˆ˜)

2. ๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์ด๋ฏ€๋กœ today()๋Š” ์ž‘๋™์ด ์•ˆ๋œ๋‹ค. ํ˜„์žฌ๋ฅผ x๋ผ๊ณ  ์ง€์ • ํ›„ MoM, YoY, MTD, YTD ๋งŒ๋“ค๊ธฐ

3. ๊ธฐ๋ถ€๋ฐ›์€ ์ˆซ์ž, ์ „์ฒด ๊ธฐ๋ถ€๋ฐ›์€ ์ˆซ์ž ์ค‘ ๋ช‡%์ธ์ง€ ๋‚˜ํƒ€๋‚˜๋„๋ก. ๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„ : ๊ธฐ๋ถ€ ๊ธˆ์•ก, %๋กœ ์ •ํ•ด์„œ ๋งŒ๋“ค๊ธฐ