ํƒ์ƒ‰ ๋ฉ”๋‰ด ๋ฐ ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ ๋ณ€๊ฒฝ

๋‹ค์–‘ํ•œ LookML ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ๋ณธ LookML์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ ๋„ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์— ํ•„๋“œ๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•˜์—ฌ ๋ณด๋‹ค ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ Explore๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํŽ˜์ด์ง€์—์„œ๋Š” Looker Explore ๋ฉ”๋‰ด ๋ฐ ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์˜ ๋ชจ์–‘์„ ์ˆ˜์ •ํ•˜๋Š” LookML ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ๊ฐ„๋žตํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๋Š” Looker์—์„œ Explore ๋ฉ”๋‰ด์— ๋‚˜์—ด๋œ Explore๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Explore์—์„œ ์‚ฌ์šฉ์ž๋Š” ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ฟผ๋ฆฌ์— ์‚ฌ์šฉํ•  ํ•„๋“œ(์ธก์ •๊ธฐ์ค€ ๋ฐ ์ธก์ •๊ฐ’)๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Explore๋Š” ์ž๊ธฐ๊ฐ€ ์†ํ•œ ๋ชจ๋ธ ์ด๋ฆ„ ์•„๋ž˜์˜ Explore ๋ฉ”๋‰ด์— ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค. Explore์˜ ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์— ์ฟผ๋ฆฌ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ํ•„๋“œ๊ฐ€ ํฌํ•จ๋œ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ทฐ ๋ชฉ๋ก์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€์—๋Š” ํ”ํžˆ ์‚ฌ์šฉ๋˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ „์ฒด ์ฐธ์กฐ ํŽ˜์ด์ง€ ๋งํฌ, ํ•ด๋‹น ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์„ค๋ช…, ๊ธฐ๋Šฅ ์ด๋ฏธ์ง€๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์นœํ™”์  Explore ๋งŒ๋“ค๊ธฐ์— ๋Œ€ํ•œ ๋„์›€๋ง๊ณผ ์ œ์•ˆ์€ ๊ถŒ์žฅ์‚ฌํ•ญ: Looker ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ๊ธ์ •์ ์ธ ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ ๋งŒ๋“ค๊ธฐ ๊ถŒ์žฅ์‚ฌํ•ญ ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Explore ์ด๋ฆ„ ๋ฐ ๋ฉ”๋‰ด

์ด ์„น์…˜์—์„œ๋Š” Explore ๋ฉ”๋‰ด์—์„œ Explore์˜ ์ด๋ฆ„ ๋ฐ ๋ชจ์–‘์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๋™์ž‘์„ ์„ค๋ช…ํ•˜๊ณ , ์ด๋Ÿฌํ•œ ๋™์ž‘์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” LookML ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Explore ๋ฉ”๋‰ด ๊ธฐ๋ณธ ๋™์ž‘

๋ชจ๋ธ ์ด๋ฆ„

๊ธฐ๋ณธ์ ์œผ๋กœ Explore ๋ฉ”๋‰ด๋Š” ๋ชจ๋ธ ์ด๋ฆ„์œผ๋กœ ๊ตฌ์„ฑ๋˜๊ณ , ๋ชจ๋ธ ์ด๋ฆ„์€ ๊ฐ ๋ชจ๋ธ ํŒŒ์ผ์˜ ์ด๋ฆ„์— ๋”ฐ๋ผ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. Explore ๋ฉ”๋‰ด์—๋Š” ๋ชจ๋ธ ์ด๋ฆ„์˜ ํ˜•์‹์ด ์ง€์ •๋œ ๋ฒ„์ „์ด ํ‘œ์‹œ๋˜๋Š”๋ฐ, ๋ฐ‘์ค„์€ ๊ณต๋ฐฑ์œผ๋กœ ๋ณ€๊ฒฝ๋˜๊ณ  ๊ฐ ๋‹จ์–ด๋Š” ๋Œ€๋ฌธ์ž๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ชจ๋ธ ์ด๋ฆ„ ์•„๋ž˜์—๋Š” ํ•ด๋‹น ๋ชจ๋ธ ํŒŒ์ผ์— ์ •์˜๋œ Explore ๋ชฉ๋ก์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Explore ์ด๋ฆ„

๋ฉ”๋‰ด์˜ ๊ฐ Explore ์ด๋ฆ„์€ ๋ชจ๋ธ ํŒŒ์ผ์˜ ํ•ด๋‹น explore ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ ์ด๋ฆ„๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Explore ์ด๋ฆ„์€ ๋ฉ”๋‰ด์—์„œ ํ˜•์‹์ด ์ง€์ •๋˜๋ฏ€๋กœ ๋ฐ‘์ค„์ด ๊ณต๋ฐฑ์œผ๋กœ ๋ณ€๊ฒฝ๋˜๊ณ  ๊ฐ ๋‹จ์–ด๊ฐ€ ๋Œ€๋ฌธ์ž๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. Explore ์ด๋ฆ„์€ ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ ํŒจ๋„์— Explore ์ œ๋ชฉ์œผ๋กœ๋„ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ์‹œ์—์„œ order_items Explore๋Š” ๋ชจ๋ธ ํŒŒ์ผ e_commerce_model.model์— ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.


explore: order_items {
  join: orders {
    type: left_outer
    sql_on: ${order_items.order_id} = ${orders.id} ;;
    relationship: many_to_one
  }
}

order_items Explore๋Š” Explore ๋ฉ”๋‰ด ๋ฐ ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์— ์ฃผ๋ฌธ ํ•ญ๋ชฉ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Explore ๋ฉ”๋‰ด: ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ:

์ฃผ๋ฌธ ํ•ญ๋ชฉ์€ Explore ๋ฉ”๋‰ด์˜ Explore ๋ชฉ๋ก์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ฃผ๋ฌธ ํ•ญ๋ชฉ ๋ผ๋ฒจ์€ ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ ํŒจ๋„์˜ ์™ผ์ชฝ ์ƒ๋‹จ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋ธ ํŒŒ์ผ์— ๋Œ€ํ•œ ์ƒ์„ธ ์„ค๋ช…์€ ๋ชจ๋ธ ๋ฐ ๋ทฐ ํŒŒ์ผ ์ดํ•ด ๋ฌธ์„œ ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. Explore ์ •์˜์— ๋Œ€ํ•œ ์ƒ์„ธ ์„ค๋ช…์€ explore ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฌธ์„œ ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

label(๋ชจ๋ธ)

๋ชจ๋ธ์˜ label ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” LookML์—์„œ ๋ชจ๋ธ์„ ์ฐธ์กฐํ•˜๋Š” ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  Explore ๋ฉ”๋‰ด์—์„œ ๋ชจ๋ธ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. Explore URL, Looker IDE, SQL Runner์—๋Š” ์‹ค์ œ ๋ชจ๋ธ ์ด๋ฆ„์ด ๊ณ„์† ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. LookML ๋ฐ ๊ด€๋ฆฌ์ž ์„ค์ •์—์„œ ๋ชจ๋ธ์„ ์ฐธ์กฐํ•˜๋Š” ๋ฐฉ์‹์€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ market_research.model ๋ชจ๋ธ์€ Explore ๋ฉ”๋‰ด์— ์‹œ์žฅ ์กฐ์‚ฌ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

label ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Explore ๋ฉ”๋‰ด์—์„œ ๋ชจ๋ธ ์ด๋ฆ„์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด label: "Marketing R&D" ์ฝ”๋“œ๋ฅผ market_research.model ๋ชจ๋ธ ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.


label: "Marketing R&D"

์ด ์˜ˆ์‹œ์—์„œ Looker๋Š” Explore ๋ฉ”๋‰ด์— ๋ชจ๋ธ ์ด๋ฆ„์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

์‹œ์žฅ ์กฐ์‚ฌ ๋ชจ๋ธ์€ Explore ๋ฉ”๋‰ด์— ๋งˆ์ผ€ํŒ… R&D ๋ผ๋ฒจ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

label(Explore)

Explore์˜ label ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” LookML์—์„œ ์ฐธ์กฐ๋˜๋Š” ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  Explore ๋ฉ”๋‰ด ๋ฐ Explore ํŽ˜์ด์ง€์—์„œ Explore ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

label ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ Explore ์ด๋ฆ„์€ ๊ธฐ๋ณธ ๋™์ž‘์— ๋”ฐ๋ผ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Explore ๋ฉ”๋‰ด ๋ฐ ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์— ์ฃผ๋ฌธ ํ•ญ๋ชฉ ์ •๋ณด ๋ผ๋ฒจ์ด ์žˆ๋Š” Explore์ž…๋‹ˆ๋‹ค.

group_label(Explore)

Explore์˜ group_label ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” Explore ๋ฉ”๋‰ด์˜ ๊ธฐ๋ณธ ์กฐ์ง์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ ์ด๋ฆ„ ์•„๋ž˜์— ๊ฐ Explore๋ฅผ ๋‚˜์—ดํ•˜๋Š” ๋Œ€์‹  group_label๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜๋‚˜ ์ด์ƒ์˜ Explore๋ฅผ ๋‚˜์—ดํ•  ์ปค์Šคํ…€ ์ œ๋ชฉ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์˜ˆ์‹œ์—์„œ ๊ณ ๊ฐ, ์ธ๋ฒคํ† ๋ฆฌ, ์ฃผ๋ฌธ ํ•ญ๋ชฉ, ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ Explore๋Š” ์˜จ๋ผ์ธ ์ƒ์  ์ฟผ๋ฆฌ ๊ทธ๋ฃน ๋ผ๋ฒจ ์•„๋ž˜์— ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.

Explore ๋ฉ”๋‰ด์˜ ์˜จ๋ผ์ธ ์ƒ์  ์ฟผ๋ฆฌ ๊ทธ๋ฃน ๋ผ๋ฒจ ์•„๋ž˜์— ๋‚˜์—ด๋œ Explore์ž…๋‹ˆ๋‹ค.

description(Explore)

Explore์˜ description ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Explore์— ๋Œ€ํ•œ ์„ค๋ช…์„ UI์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉ์ž๋Š” Explore ์ฟผ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๋™์•ˆ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ ์ƒ๋‹จ์— ์žˆ๋Š” Explore ์ด๋ฆ„ ์˜†์˜ ์ •๋ณด ์•„์ด์ฝ˜ ์œ„๋กœ ๋งˆ์šฐ์Šค๋ฅผ ๊ฐ€์ ธ๊ฐ€๋ฉด ์„ค๋ช…์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ •๋ณด ์•„์ด์ฝ˜์€ Explore์˜ ๋“œ๋กญ๋‹ค์šด ๋ชฉ๋ก์—๋„ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์„ค๋ช…์„ Explore์— ๋ช…์‹œ์ ์œผ๋กœ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์œผ๋ฉด ์„ค๋ช…์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

hidden(Explore)

Explore์˜ hidden ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” Explore ๋ฉ”๋‰ด์—์„œ Explore๋ฅผ ์ˆจ๊น๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ hidden์€ ์‚ฌ์šฉ ์ค‘์ง€๋˜์–ด ์žˆ๊ณ  Explore๋Š” ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. hidden์€ LookML์„ ์ˆจ๊ธฐ๊ฑฐ๋‚˜ URL์„ ํ†ตํ•œ Explore์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ฐจ๋‹จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. hidden์€ ๋ณด์•ˆ ๊ธฐ๋Šฅ์ด ์•„๋‹ˆ๋ผ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ์˜ˆ์‹œ์—์„œ LookML ์ฝ”๋“œ hidden: yes๋ฅผ inventory Explore์šฉ LookML์— ์ถ”๊ฐ€ํ•˜๋ฉด Explore ๋ฉ”๋‰ด์—์„œ ์ธ๋ฒคํ† ๋ฆฌ Explore๊ฐ€ ์ˆจ๊ฒจ์ง‘๋‹ˆ๋‹ค.


explore: inventory {
  hidden: yes

  join: order_facts {
    view_label: "Orders"
    relationship: many_to_one
    sql_on: ${order_facts.order_id} = ${order_items.order_id} ;;
  }
}

ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ

์ด ์„น์…˜์—์„œ๋Š” ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์˜ ๊ธฐ๋ณธ ๋™์ž‘๊ณผ ๊ทธ ๋™์ž‘์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” LookML ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์— ๋ทฐ ์ด๋ฆ„์ด ํ‘œ์‹œ๋˜๋Š” ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•˜์„ธ์š”.

๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์— ํ‘œ์‹œ๋˜๋Š” ๊ฐœ๋ณ„ ํ•„๋“œ์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜์„ธ์š”.

๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ ๋‚ด์—์„œ ํ•„๋“œ ๊ตฌ์„ฑ ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•˜์„ธ์š”.

ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ ๊ธฐ๋ณธ ๋™์ž‘

๊ธฐ๋ณธ์ ์œผ๋กœ ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ๋Š” LookML view ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ง€์ •ํ•œ ๋ทฐ์— ํ•ด๋‹นํ•˜๋Š” ์ œ๋ชฉ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ทฐ์˜ ํ•„๋“œ๋Š” ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ๋กœ ๊ทธ๋ฃนํ™”๋ฉ๋‹ˆ๋‹ค. ํ•„๋“œ ์œ ํ˜•(์ธก์ •๊ธฐ์ค€, ์ธก์ •๊ธฐ์ค€ ๊ทธ๋ฃน, ์ธก์ •๊ฐ’, ํ•„ํ„ฐ ํ•„๋“œ, ๋งค๊ฐœ๋ณ€์ˆ˜ ํ•„๋“œ)์— ๋”ฐ๋ผ ๋ทฐ์—์„œ ๋ทฐ๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ์œ„์น˜๊ฐ€ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. label ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œ์‹œ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ํ•œ ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์— ํ˜•์‹์ด ์ง€์ •๋œ LookML ๋ทฐ ๋˜๋Š” ํ•„๋“œ ์ด๋ฆ„์ด ํ‘œ์‹œ๋˜๋ฉฐ ๋ฐ‘์ค„์€ ๊ณต๋ฐฑ์œผ๋กœ ๋ณ€๊ฒฝ๋˜๊ณ  ๊ฐ ๋‹จ์–ด๋Š” ๋Œ€๋ฌธ์ž๋กœ ํ‘œ๊ธฐ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ์‹œ์—์„œ Looker๋Š” ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์— accounts ๋ทฐ๋ฅผ Accounts๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ธฐ๋ณธ ๋™์ž‘์ž…๋‹ˆ๋‹ค.


view: accounts {
  sql_table_name: accounts ;;
}

๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” ์ธก์ •๊ธฐ์ค€, ์ธก์ •๊ธฐ์ค€ ๊ทธ๋ฃน, ์ธก์ •๊ฐ’์˜ ์ด๋ฆ„์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ํ‘œ์‹œ๋˜๋Š”์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ํ•„ํ„ฐ ํ•„๋“œ ๋ฐ ๋งค๊ฐœ๋ณ€์ˆ˜ ํ•„๋“œ์˜ ์ด๋ฆ„์— ๋™์ผํ•œ ์„œ์‹์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.


dimension: account_number {
  primary_key: yes
  type: number
  sql: ${TABLE}.account_number ;;
}

dimension: name {
  type: string
  sql: ${TABLE}.name ;;
}

dimension_group: created {
  type: time
  timeframes: [raw, time, date, week, month, quarter, year]
  sql: ${TABLE}.created_date ;;
}

measure: average_annual_revenue {
  type: average
  sql: ${annual_revenue} ;;
  value_format_name: custom_amount_value_format
}

์ด ์˜ˆ์‹œ์—์„œ๋Š” ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์— account_number ๋ฐ name ์ธก์ •๊ธฐ์ค€, created ์ธก์ •๊ธฐ์ค€ ๊ทธ๋ฃน, average_annual_revenue ์ธก์ •๊ฐ’์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ํ•„๋“œ ์ด๋ฆ„์ธ ๊ณ„์ • ๋ฒˆํ˜ธ, ์ด๋ฆ„, ์ƒ์„ฑ์ผ, ํ‰๊ท  ์—ฐ๊ฐ„ ์ˆ˜์ต์ด ๊ฐ๊ฐ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

ํ•„๋“œ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๋ฉด ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ๊ฐ€ ์ƒˆ ์ด๋ฆ„์— ๋งž๊ฒŒ ์กฐ์ •๋˜์ง€๋งŒ alias ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํ•„๋“œ์˜ ์ด์ „ ์ด๋ฆ„๊ณผ ํ•จ๊ป˜ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ฟผ๋ฆฌ์˜ URL์— ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ๋Š” ํ•„๋“œ์˜ ๋Œ€์ฒด ์ด๋ฆ„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ๋ชจ๋ธ์˜ ํ•„๋“œ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋˜์—ˆ์ง€๋งŒ ์ผ๋ถ€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋งํฌ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์ด๋Ÿฌํ•œ ๊ธฐ์กด URL์„ ๊ณ„์† ์œ ์ง€ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

view_label(Explore)

Explore์˜ view_label ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” LookML์—์„œ Explore ๋ฐ ํ•ด๋‹น ํ•„๋“œ๊ฐ€ ์ฐธ์กฐ๋˜๋Š” ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์—์„œ Explore ๊ธฐ๋ณธ ๋ทฐ์˜ ํ•„๋“œ ๊ทธ๋ฃน์— ๋ผ๋ฒจ์ด ์ง€์ •๋˜๋Š” ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด order_facts ๋ทฐ๋ฅผ order_items๋ผ๋Š” Explore์— ์กฐ์ธํ•˜๋Š” ๊ฒฝ์šฐ view_label ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์—์„œ Looker๊ฐ€ order_facts ๋ทฐ์— ํ‘œ์‹œํ•˜๋Š” ๋ผ๋ฒจ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

explore: order_items {
  label: "Order Items"
  join: order_facts {
    view_label: "Orders and more"
    relationship: many_to_one
    sql_on: ${order_facts.order_id} = ${order_items.order_id} ;;
  }
}

์ด ์˜ˆ์‹œ์—์„œ order_facts ๋ทฐ๋Š” ์ฃผ๋ฌธ ํ•ญ๋ชฉ Explore์˜ ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์— ์ฃผ๋ฌธ ๋ฐ ๊ธฐํƒ€๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

view_label(์กฐ์ธ)

์กฐ์ธ์˜ view_label ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์—์„œ ํ•œ ๋ทฐ์˜ ํ•„๋“œ๋ฅผ ๋‹ค๋ฅธ ๋ทฐ์˜ ์ด๋ฆ„ ์•„๋ž˜์— ๊ทธ๋ฃนํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. view_label์„ ์กฐ์ธ์— ๋ช…์‹œ์ ์œผ๋กœ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์œผ๋ฉด view_label์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์กฐ์ธ์˜ ์ด๋ฆ„์œผ๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด products ๋ทฐ๋ฅผ product_facts Explore์— ์กฐ์ธํ•ฉ๋‹ˆ๋‹ค.


explore: product_facts {
  join: products {
    type: left_outer
    sql_on: ${product_facts.product_id} = ${products.id} ;;
    relationship: many_to_one
  }
}

์ด ์˜ˆ์‹œ์—์„œ๋Š” ๋ทฐ ๋ผ๋ฒจ์ด ์ง€์ •๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ products ๋ทฐ์˜ ํ•„๋“œ๋Š” ์ œํ’ˆ ์ •๋ณด ๋ทฐ์™€ ๋ณ„๋„๋กœ ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์˜ ์ œํ’ˆ ๋ทฐ ๋ผ๋ฒจ ์•„๋ž˜์— ๊ทธ๋ฃนํ™”๋ฉ๋‹ˆ๋‹ค.

์ œํ’ˆ ๋ทฐ์˜ ํ•„๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œํ’ˆ ๋ทฐ ๋ผ๋ฒจ ์•„๋ž˜์— ๊ทธ๋ฃนํ™”๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ์‹œ์™€ ๊ฐ™์ด view_label ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ทฐ ๋ผ๋ฒจ์„ ์กฐ์ธ๋œ products ๋ทฐ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


explore: product_facts {
  join: products {
    view_label: "Product Facts"
    type: left_outer
    sql_on: ${product_facts.product_id} = ${products.id} ;;
    relationship: many_to_one
  }
}

๊ทธ๋Ÿฌ๋ฉด ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์˜ ๋ทฐ ๋ผ๋ฒจ ์ œํ’ˆ ์ •๋ณด ์•„๋ž˜์— ์žˆ๋Š” products ๋ทฐ์˜ ํ•„๋“œ๊ฐ€ ๊ทธ๋ฃนํ™”๋ฉ๋‹ˆ๋‹ค.

์ œํ’ˆ ๋ทฐ์˜ ํ•„๋“œ๋Š” ์ œํ’ˆ ์ •๋ณด ๋ทฐ ๋ผ๋ฒจ ์•„๋ž˜์— ๊ทธ๋ฃนํ™”๋ฉ๋‹ˆ๋‹ค.

label(๋ทฐ)

๋ทฐ์˜ label ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” LookML์—์„œ ๋ทฐ๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์—์„œ ๋ทฐ๊ฐ€ ๋ผ๋ฒจ๋ง๋˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ผ๋ฒจ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ทฐ ์ด๋ฆ„์œผ๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. view_label(Explore) ๋ฐ view_label(์กฐ์ธ)๊ณผ ๋‹ฌ๋ฆฌ, ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋ทฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  Explore์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด label ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ inventory_items ๋ทฐ์˜ ๋ผ๋ฒจ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


view: inventory_items {
  label: "Items in Inventory"
  sql_table_name: inventory_items ;;
}

์ด ์˜ˆ์‹œ์—์„œ ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ๋Š” ๊ธฐ๋ณธ ๋ผ๋ฒจ ์ธ๋ฒคํ† ๋ฆฌ ํ•ญ๋ชฉ์ด ์•„๋‹ˆ๋ผ inventory_items ๋ทฐ์— ๋Œ€ํ•œ ์ธ๋ฒคํ† ๋ฆฌ ํ•ญ๋ชฉ ๋ผ๋ฒจ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

description(ํ•„๋“œ)

description์„ ๋ชจ๋“  ํ•„๋“œ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. BigQuery ์—ฐ๊ฒฐ์˜ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ LookML ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด Looker๋Š” BigQuery ์—ด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ์„ค๋ช…(์žˆ๋Š” ๊ฒฝ์šฐ)์œผ๋กœ ํ•„๋“œ ์„ค๋ช…์„ ์ž๋™์œผ๋กœ ์ฑ„์›๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๋Š” ์—ฌ๋Ÿฌ ์œ„์น˜์—์„œ ์ด ์„ค๋ช…์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์—์„œ ํ•„๋“œ ์ด๋ฆ„ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ์ •๋ณด ์•„์ด์ฝ˜์„ ์„ ํƒํ•˜๋ฉด Looker์— ์„ค๋ช…์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ Explore, ๋Œ€์‹œ๋ณด๋“œ ๋˜๋Š” Look์˜ ํ…Œ์ด๋ธ”์ด๋‚˜ ํ…Œ์ด๋ธ” ์ฐจํŠธ ์‹œ๊ฐํ™”์—์„œ ์—ด ์ด๋ฆ„ ์œ„๋กœ ๋งˆ์šฐ์Šค๋ฅผ ๊ฐ€์ ธ๊ฐ€๋„ Looker์— ์„ค๋ช…์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

hidden(ํ•„๋“œ)

๊ธฐ๋ณธ์ ์œผ๋กœ ๋ทฐ์— ์ง€์ •๋œ ํ•„๋“œ๋Š” ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ํ•„๋“œ์˜ hidden ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์—์„œ ํ•„๋“œ๋ฅผ ์ˆจ๊น๋‹ˆ๋‹ค.

์ˆจ๊ฒจ์ง„ ํ•„๋“œ๋Š” URL์— ์ˆ˜๋™์œผ๋กœ ์ถ”๊ฐ€ํ•œ ๊ฒฝ์šฐ ์ผ๋ถ€ UI์—์„œ ๊ณ„์† ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ผ๋ถ€ Looker ์ฐฝ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ hidden์„ ๋ณด์•ˆ ๊ธฐ๋Šฅ์ด ์•„๋‹Œ ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ƒ๊ฐํ•˜์„ธ์š”.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ์˜ˆ์‹œ์—์„œ LookML ์ฝ”๋“œ hidden: yes๋ฅผ product_id ์ธก์ •๊ธฐ์ค€์˜ LookML์— ์ถ”๊ฐ€ํ•˜๋ฉด ์ œํ’ˆ ID ์ธก์ •๊ธฐ์ค€์ด ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์—์„œ ์ˆจ๊ฒจ์ง‘๋‹ˆ๋‹ค.


dimension: product_id {
  hidden: yes
  type: number
  sql: ${TABLE}.product_id ;;
}

fields(ํ•„๋“œ)

fields ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Explore์˜ ๊ธฐ๋ณธ ๋ทฐ ๋ฐ ์กฐ์ธ์—์„œ ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์— ๋…ธ์ถœ๋˜๋Š” ํ•„๋“œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. fields ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ Looker๊ฐ€ ๋ชจ๋“  ํ•„๋“œ๋ฅผ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์— ํ‘œ์‹œํ•  ํ•„๋“œ๋ฅผ ์ง€์ •ํ•˜๋ ค๋ฉด ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ํ•„๋“œ ๋˜๋Š” ์ง‘ํ•ฉ ๋ชฉ๋ก์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์—์„œ ์ˆจ๊ธฐ๋ ค๋Š” ํ•„๋“œ๋ฅผ ์ง€์ •ํ•˜๋ ค๋ฉด ์ œ์™ธํ•  ํ•„๋“œ ๋˜๋Š” ์„ธํŠธ ๋ชฉ๋ก์˜ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ๋ชฉ๋ก๊ณผ ALL_FIELDS* ์„ธํŠธ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ์•ž์— ๊ฐ๊ฐ ํ•˜์ดํ”ˆ(-)์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ LookML ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์˜ aircraft Explore์—์„œ ์ผ๋ถ€ ์„ ๋ณ„๋œ ํ•„๋“œ๋งŒ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


explore: aircraft {
  fields: [
    aircraft.aircraft_model_code,
    aircraft.aircraft_engine_code,
    aircraft.count,
    aircraft.city,
    aircraft.country,
    aircraft.zip,
   ]
}

์ด ์˜ˆ์‹œ์—์„œ ํ•ญ๊ณต๊ธฐ Explore๋Š” ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์— ํ•ญ๊ณต๊ธฐ ๋ชจ๋ธ ์ฝ”๋“œ, ํ•ญ๊ณต๊ธฐ ์—”์ง„ ์ฝ”๋“œ, ๋„์‹œ, ๊ตญ๊ฐ€, ์šฐํŽธ๋ฒˆํ˜ธ ์ธก์ •๊ธฐ์ค€, ์ง‘๊ณ„ ์ธก์ •๊ฐ’๋งŒ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

label(ํ•„๋“œ)

ํ•„๋“œ์˜ label ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด LookML์—์„œ ์ฐธ์กฐ๋˜๋Š” ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์—์„œ ํ•„๋“œ ์ด๋ฆ„์ด ํ‘œ์‹œ๋˜๋Š” ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ผ๋ฒจ์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ผ๋ฒจ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•„๋“œ ์ด๋ฆ„์œผ๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด label ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ cost ์ธก์ •๊ธฐ์ค€์˜ ๋ผ๋ฒจ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


dimension: cost {
  label: "price"
  type: number
  sql: ${TABLE}.cost ;;
}

์ด ์˜ˆ์‹œ์—์„œ ๋น„์šฉ ์ธก์ •๊ธฐ์ค€์˜ ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์—๋Š” ๊ฐ€๊ฒฉ ๋ผ๋ฒจ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

view_label(ํ•„๋“œ)

ํ•„๋“œ์˜ view_label ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด LookML์—์„œ ์ฐธ์กฐ๋˜๋Š” ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์—์„œ ํ•„๋“œ๊ฐ€ ๋‚˜์—ด๋˜๋Š” ๋ทฐ์˜ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ผ๋ฒจ์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ํ•„๋“œ๋Š” ํ•ด๋‹น ํ•„๋“œ๊ฐ€ ์ •์˜๋œ ๋ทฐ์˜ ๋ผ๋ฒจ ์•„๋ž˜์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด view_label ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ cost ์ธก์ •๊ธฐ์ค€์˜ ๋ทฐ ๋ผ๋ฒจ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


dimension: cost {
  view_label: "Cost Information"
  type: number
  sql: ${TABLE}.cost ;;
}

์ด ์˜ˆ์‹œ์—์„œ Looker๋Š” ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์˜ ๋น„์šฉ ์ •๋ณด ๋ทฐ ๋ผ๋ฒจ ์•„๋ž˜์— ๋น„์šฉ ์ธก์ •๊ธฐ์ค€์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

group_label(ํ•„๋“œ)

group_label ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์˜ ๋ทฐ ๋‚ด์— ์žˆ๋Š” ๊ณตํ†ต ๋“œ๋กญ๋‹ค์šด ๋ชฉ๋ก์œผ๋กœ ํ•„๋“œ๋ฅผ ํ•จ๊ป˜ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์˜ˆ์‹œ์—์„œ๋Š” ๋ฐฐ์†ก ์ •๋ณด ๊ทธ๋ฃน์— ๋ฐฐ์†ก ๋„์‹œ, ๋ฐฐ์†ก ๊ตญ๊ฐ€, ๋ฐฐ์†ก ์ฃผ ํ•„๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

Explore์˜ ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์— ์žˆ๋Š” ๋ฐฐ์†ก ์ •๋ณด ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค.

group_item_label(ํ•„๋“œ)

ํ•„๋“œ๊ฐ€ ๊ทธ๋ฃน ๋ผ๋ฒจ ์•„๋ž˜์— ํ‘œ์‹œ๋˜๋ฉด ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์— ์ „์ฒด ํ•„๋“œ ์ด๋ฆ„์ด๋‚˜ ๋ผ๋ฒจ์„ ํ‘œ์‹œํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ์œ„์— ํ‘œ์‹œ๋œ group_label(ํ•„๋“œ) ์˜ˆ์‹œ์—์„œ ๊ทธ๋ฃน ๋ผ๋ฒจ์€ ํ•„๋“œ๊ฐ€ ๋ฐฐ์†ก๊ณผ ๊ด€๋ จ๋˜์–ด ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ group_item_label ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ทธ๋ฃนํ™”๋œ ๊ฐ ํ•„๋“œ์— ์ถ”๊ฐ€ํ•˜์—ฌ ๊ทธ๋ฃน ๋ผ๋ฒจ ์•„๋ž˜์— ํ‘œ์‹œ๋˜๋Š” ๋ฐฉ์‹์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์˜ˆ์‹œ์—์„œ๋Š” ๋ฐฐ์†ก ์ •๋ณด ๊ทธ๋ฃน์— ๋„์‹œ, ๊ตญ๊ฐ€, ์ฃผ ํ•„๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

Explore์˜ ํ•„๋“œ ์„ ํƒ ๋„๊ตฌ์— ์žˆ๋Š” ๋ฐฐ์†ก ์ •๋ณด ๊ทธ๋ฃน์ž…๋‹ˆ๋‹ค.