๋ค์ํ LookML ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ธฐ๋ณธ LookML์ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ํ๋๊ฐ ํ์๋๋ ๋ฐฉ์์ ๋ณ๊ฒฝํ์ฌ ๋ณด๋ค ์ฌ์ฉ์ ์นํ์ ์ธ Explore๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ด ํ์ด์ง์์๋ Looker Explore ๋ฉ๋ด ๋ฐ ํ๋ ์ ํ ๋๊ตฌ์ ๋ชจ์์ ์์ ํ๋ LookML ๋งค๊ฐ๋ณ์์ ๋ํด ๊ฐ๋ตํ ์ค๋ช ํฉ๋๋ค.
์ฌ์ฉ์๋ Looker์์ 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
๋งค๊ฐ๋ณ์ ๋ฌธ์ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
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 ๋ฉ๋ด์ ๋ชจ๋ธ ์ด๋ฆ์ ๋ค์๊ณผ ๊ฐ์ด ํ์ํฉ๋๋ค.
label
(Explore)
Explore์ label
๋งค๊ฐ๋ณ์๋ LookML์์ ์ฐธ์กฐ๋๋ ๋ฐฉ์์ ๋ณ๊ฒฝํ์ง ์๊ณ Explore ๋ฉ๋ด ๋ฐ Explore ํ์ด์ง์์ Explore ์ด๋ฆ์ ๋ณ๊ฒฝํฉ๋๋ค.
label
๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ Explore ์ด๋ฆ์ ๊ธฐ๋ณธ ๋์์ ๋ฐ๋ผ ํ์๋ฉ๋๋ค.
group_label
(Explore)
Explore์ group_label
๋งค๊ฐ๋ณ์๋ Explore ๋ฉ๋ด์ ๊ธฐ๋ณธ ์กฐ์ง์ ๋ณ๊ฒฝํฉ๋๋ค. ๋ชจ๋ธ ์ด๋ฆ ์๋์ ๊ฐ Explore๋ฅผ ๋์ดํ๋ ๋์ group_label
๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ ์ด์์ 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
๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ ์ ํ ๋๊ตฌ์ ๋ทฐ ๋ด์ ์๋ ๊ณตํต ๋๋กญ๋ค์ด ๋ชฉ๋ก์ผ๋ก ํ๋๋ฅผ ํจ๊ป ๊ฒฐํฉํ ์ ์์ต๋๋ค.
์ด ์์์์๋ ๋ฐฐ์ก ์ ๋ณด ๊ทธ๋ฃน์ ๋ฐฐ์ก ๋์, ๋ฐฐ์ก ๊ตญ๊ฐ, ๋ฐฐ์ก ์ฃผ ํ๋๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
group_item_label
(ํ๋)
ํ๋๊ฐ ๊ทธ๋ฃน ๋ผ๋ฒจ ์๋์ ํ์๋๋ฉด ํ๋ ์ ํ ๋๊ตฌ์ ์ ์ฒด ํ๋ ์ด๋ฆ์ด๋ ๋ผ๋ฒจ์ ํ์ํ์ง ์์๋ ๋ฉ๋๋ค. ์์ ํ์๋ group_label
(ํ๋) ์์์์ ๊ทธ๋ฃน ๋ผ๋ฒจ์ ํ๋๊ฐ ๋ฐฐ์ก๊ณผ ๊ด๋ จ๋์ด ์์์ ๋ํ๋
๋๋ค. ์ด ๊ฒฝ์ฐ group_item_label
๋งค๊ฐ๋ณ์๋ฅผ ๊ทธ๋ฃนํ๋ ๊ฐ ํ๋์ ์ถ๊ฐํ์ฌ ๊ทธ๋ฃน ๋ผ๋ฒจ ์๋์ ํ์๋๋ ๋ฐฉ์์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
์ด ์์์์๋ ๋ฐฐ์ก ์ ๋ณด ๊ทธ๋ฃน์ ๋์, ๊ตญ๊ฐ, ์ฃผ ํ๋๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.