Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu öğretici, TPC-H veri kümesini kullanarak kapsamlı bir satış analizi ölçüm görünümü oluşturma işleminde size yol gösterir. Sonunda şunları içeren bir ölçüm görünümünüz olacak:
- Kar tanesi şemasını kullanarak siparişleri ve müşterileri birden çok tablo arasında birleştirir
- Zaman, coğrafya ve sipariş öznitelikleri için boyutları tanımlar
- Oranlar, filtrelenmiş toplamalar ve pencere ölçüleri gibi basit ve karmaşık ölçüleri hesaplar
- Daha basit ölçülerden karmaşık ölçümler oluşturmak için birleştirmeyi kullanır
- Panolar ve yapay zeka araçları için aracı meta verilerini içerir
Ölçüm görünümlerini kullanmaya yeni başladıysanız temel bilgileri öğrenmek için Ölçüm görünümleri oluşturma ve düzenleme ile başlayın. Bu öğretici, temeli gerçek dünya karmaşıklığıyla genişletir.
Gereksinimler
Bu eğitimi tamamlamak için şunlara ihtiyacınız olacak:
- Unity Kataloğu için çalışma alanınızın etkinleştirilmesi gerekir.
- Databricks Runtime 17.3 veya üzerini çalıştıran bir SQL ambarı veya işlem kaynağı.
Veri modeli
TPC-H veri kümesi, toptan tedarik zincirini modeller. Bu öğreticide kar tanesi şemasında birleştirilen üç tablo kullanılır:
-
orderscustomerileo_custkey = c_custkeyüzerinde bağlanır -
customernationilec_nationkey = n_nationkeyüzerinde bağlanır
| Tabela | Rol | Anahtar sütunlar |
|---|---|---|
orders |
Olgu tablosu (sipariş hareketleri) |
o_orderkey, o_custkey, o_totalprice, o_orderdate, , o_orderstatus |
customer |
Boyut tablosu (müşteri ayrıntıları) |
c_custkey, c_name, c_mktsegment, c_nationkey |
nation |
Boyut tablosu (ülke veya bölge referansı) |
n_nationkey, n_name, n_regionkey |
1. Adım: YAML düzenleyicisini açma
Bu öğreticide ölçüm görünümü tanımınızı oluşturmak için YAML düzenleyicisi kullanılır. Diğer yöntemler için bkz . Ölçüm görünümleri oluşturma ve düzenleme.
YAML düzenleyicisini açmak için:
-
Çalışma alanı kenar çubuğunda katalog.
- bulmak
samples.tpch.ordersiçin arama çubuğunu kullanın. - Tablo ayrıntılarını göstermek için tablo adına tıklayın.
- Ölçüm görünümü> tıklayın. Ölçüm görünümü oluştur iletişim kutusunda bir ad girin ve bir katalog ve şema hedefi seçin. Ardından Oluştur'a tıklayın.
- Gerekirse YAML düzenleyicisini açmak için YAML'ye tıklayın.
2. Adım: Ölçüm görünümünü ayarlama
Sürüm ve açıklayıcı bir açıklama ile başlayın.
version: 1.1
comment: |-
Sales analytics metric view for order performance analysis.
Joins orders with customers and geography.
Owner: Analytics Team
Last updated: 2025-01-15
Bu örnek sürümü ayarlar ve bir açıklama ekler:
-
version: 1.1YAML belirtiminin sürümünü belirler. -
comment, Katalog Gezgini'nde görünen ölçüm görünümünün amacını belgeler.
3. Adım: Kaynağı ve birleşimleri tanımlama
Birincil kaynak tabloyu tanımlayın ve ilişkili tabloları birleştirin. Birleştirme nation , birleştirmenin altında, ulusun customer müşterinin bir alt lisansı olduğu kar tanesi şemasını yansıtacak şekilde iç içe yerleştirilmiştir.
source: SELECT * FROM samples.tpch.orders
joins:
- name: customer
source: samples.tpch.customer
'on': o_custkey = c_custkey
joins:
- name: nation
source: samples.tpch.nation
'on': c_nationkey = n_nationkey
filter: o_orderdate >= '1995-01-01'
Bu örnek kaynak tabloyu, birleşimleri ve filtreyi tanımlar:
-
sourceolgu tablosunu (siparişler) dilim olarak ayarlar. -
joinsçoktan bire ilişki kullanarak müşteri verilerini alır. - İç içe
nationbirleştirme, coğrafi verilere ulaşmak içincustomeraracılığıyla birleşmiş bir kar tanesi şeması modelini gösterir. -
filterbu ölçüm görünümündeki tüm sorgular için geçerli olan son verilere yönelik sınırlar.
4. Adım: Boyutları tanımlama
Boyutlar, kullanıcıların gruplandırdığı ve filtrelediği özniteliklerdir.
dimensions:
- name: order_date
expr: o_orderdate
- name: order_month
expr: "DATE_TRUNC('MONTH', o_orderdate)"
- name: order_year
expr: YEAR(o_orderdate)
- name: order_status
expr: |-
CASE o_orderstatus
WHEN 'O' THEN 'Open'
WHEN 'P' THEN 'Processing'
WHEN 'F' THEN 'Fulfilled'
END
- name: order_priority
expr: "SPLIT(o_orderpriority, '-')[0]"
- name: customer_name
expr: customer.c_name
- name: market_segment
expr: customer.c_mktsegment
- name: customer_nation
expr: customer.nation.n_name
Bu örnekte boyut desenleri gösterilmektedir:
- Birden çok ayrıntı düzeyindeki zaman boyutları (tarih, ay, yıl) farklı analiz gereksinimlerini destekler.
-
CASEifadeleri, şifreleme kodlarını iş dostu etiketlere dönüştürür. - Birleştirilmiş sütunlar,
joinsiçinde tanımlanan ve örneğincustomer.c_namegibi olan bir diğer ad kullanarak tablolara başvurur. - İç içe birleştirme sütunları, kar tanesi şemasında dolaşmak için zincirleme nokta notasyonunu (örneğin
customer.nation.n_name) kullanır.
5. Adım: Ölçüleri tanımlama
Ölçüler, kullanıcıların analiz etmek istediği hesaplamalardır. Önce atomik ölçüleri tanımlayın, ardından MEASURE() işlevini kullanarak daha önce tanımlanmış ölçülere başvuran karmaşık ölçümler oluşturmak için birleştirilebilirlikten yararlanın.
measures:
- name: order_count
expr: COUNT(DISTINCT o_orderkey)
- name: total_revenue
expr: SUM(o_totalprice)
- name: unique_customers
expr: COUNT(DISTINCT o_custkey)
- name: avg_order_value
expr: MEASURE(total_revenue) / MEASURE(order_count)
- name: revenue_per_customer
expr: MEASURE(total_revenue) / MEASURE(unique_customers)
- name: open_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
- name: fulfilled_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')
- name: t7d_customers
expr: COUNT(DISTINCT o_custkey)
window:
- order: order_date
semiadditive: last
range: trailing 7 day
Bu örnekte ölçü desenleri gösterilmektedir:
- Atomik ölçüler (
order_count,total_revenue,unique_customers) yapı taşları oluşturan basit toplamalardır. - Oluşturulan ölçüler (
avg_order_value,revenue_per_customer), toplama mantığını çoğaltmak yerineMEASURE()kullanarak daha önce tanımlanmış ölçülere başvurur. Değişiklik olursatotal_revenue, bu ölçüler otomatik olarak güncelleştirilmiş tanımı kullanır. Bkz. Oluşturma. -
FILTERyan tümce öbekleri ayrı boyutlar olmadan koşullu metrikler oluşturur. - Pencere
t7d_customersölçüsü, zaman içindeki etkileşim eğilimlerini izlemek için yararlı olan benzersiz müşterilerin 7 günlük hareketli sayısını hesaplar. Daha fazla pencere ölçüsü deseni için bkz. Pencere ölçüleri.
6. Adım: Aracı meta verilerini ekleme
Aracı meta verileri, görünen adlar, biçim belirtimleri ve eş anlamlılar sağlayarak veri görselleştirmesini geliştirir ve LLM doğruluğunu geliştirir. Ölçümlerinize iş bağlamı sağlamak için bu özellikleri boyutlarınıza ve ölçülerinize ekleyin.
dimensions:
- name: order_date
expr: o_orderdate
display_name: Order Date
- name: order_month
expr: "DATE_TRUNC('MONTH', o_orderdate)"
display_name: Order Month
- name: order_year
expr: YEAR(o_orderdate)
display_name: Order Year
- name: order_status
expr: |-
CASE o_orderstatus
WHEN 'O' THEN 'Open'
WHEN 'P' THEN 'Processing'
WHEN 'F' THEN 'Fulfilled'
END
display_name: Order Status
synonyms:
- status
- fulfillment status
- name: order_priority
expr: "SPLIT(o_orderpriority, '-')[0]"
display_name: Priority
- name: customer_name
expr: customer.c_name
display_name: Customer Name
- name: market_segment
expr: customer.c_mktsegment
display_name: Market Segment
synonyms:
- segment
- industry
- name: customer_nation
expr: customer.nation.n_name
display_name: Country
synonyms:
- nation
- country
measures:
- name: order_count
expr: COUNT(DISTINCT o_orderkey)
display_name: Order Count
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: total_revenue
expr: SUM(o_totalprice)
display_name: Total Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- revenue
- sales
- name: unique_customers
expr: COUNT(DISTINCT o_custkey)
display_name: Unique Customers
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: avg_order_value
expr: MEASURE(total_revenue) / MEASURE(order_count)
display_name: Avg Order Value
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- AOV
- name: revenue_per_customer
expr: MEASURE(total_revenue) / MEASURE(unique_customers)
display_name: Revenue per Customer
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: open_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
display_name: Open Order Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- backlog
- name: fulfilled_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')
display_name: Fulfilled Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: t7d_customers
expr: COUNT(DISTINCT o_custkey)
window:
- order: order_date
semiadditive: last
range: trailing 7 day
display_name: 7-Day Rolling Customers
format:
type: number
decimal_places:
type: exact
places: 0
Bu örnek aşağıdaki aracı meta verilerini ekler:
-
display_name, teknik sütun adları yerine görselleştirme araçlarında görünen, insan tarafından okunabilir etiketler sağlar. -
format, değerlerin panolarda nasıl görüntüleneceğini (para birimi, sayı, yüzde) tanımlar. -
synonymsGenie gibi yapay zeka araçlarının doğal dil sorguları aracılığıyla boyutları ve ölçüleri bulmasına yardımcı olun.
Aracı meta veri seçenekleriyle ilgili tüm ayrıntılar için bkz. Ölçüm görünümlerinde aracı meta verileri.
7. Adım: YAML tanımını tamamlama
İşte tam ölçüm görünümünün tanımı:
version: 1.1
source: SELECT * FROM samples.tpch.orders
joins:
- name: customer
source: samples.tpch.customer
'on': o_custkey = c_custkey
joins:
- name: nation
source: samples.tpch.nation
'on': c_nationkey = n_nationkey
filter: o_orderdate >= '1995-01-01'
comment: |-
Sales analytics metric view for order performance analysis.
Joins orders with customers and geography.
Owner: Analytics Team
Last updated: 2025-01-15
dimensions:
- name: order_date
expr: o_orderdate
display_name: Order Date
- name: order_month
expr: "DATE_TRUNC('MONTH', o_orderdate)"
display_name: Order Month
- name: order_year
expr: YEAR(o_orderdate)
display_name: Order Year
- name: order_status
expr: |-
CASE o_orderstatus
WHEN 'O' THEN 'Open'
WHEN 'P' THEN 'Processing'
WHEN 'F' THEN 'Fulfilled'
END
display_name: Order Status
synonyms:
- status
- fulfillment status
- name: order_priority
expr: "SPLIT(o_orderpriority, '-')[0]"
display_name: Priority
- name: customer_name
expr: customer.c_name
display_name: Customer Name
- name: market_segment
expr: customer.c_mktsegment
display_name: Market Segment
synonyms:
- segment
- industry
- name: customer_nation
expr: customer.nation.n_name
display_name: Country
synonyms:
- nation
- country
measures:
- name: order_count
expr: COUNT(DISTINCT o_orderkey)
display_name: Order Count
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: total_revenue
expr: SUM(o_totalprice)
display_name: Total Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- revenue
- sales
- name: unique_customers
expr: COUNT(DISTINCT o_custkey)
display_name: Unique Customers
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: avg_order_value
expr: MEASURE(total_revenue) / MEASURE(order_count)
display_name: Avg Order Value
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- AOV
- name: revenue_per_customer
expr: MEASURE(total_revenue) / MEASURE(unique_customers)
display_name: Revenue per Customer
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: open_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
display_name: Open Order Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- backlog
- name: fulfilled_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')
display_name: Fulfilled Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: t7d_customers
expr: COUNT(DISTINCT o_custkey)
window:
- order: order_date
semiadditive: last
range: trailing 7 day
display_name: 7-Day Rolling Customers
format:
type: number
decimal_places:
type: exact
places: 0
SQL kullanarak ölçüm görünümünü oluşturma
Bu tanımı Katalog Gezgini'nin dışında oluşturuyorsanız ölçüm görünümünü oluşturmak için aşağıdaki SQL'i çalıştırın. Yukarıdaki tüm YAML'yi sınırlayıcılar arasına yapıştırın $$ .
CREATE OR REPLACE VIEW catalog.schema.tpch_sales_analytics
WITH METRICS
LANGUAGE YAML
AS $$
version: 1.1
source: SELECT * FROM samples.tpch.orders
joins:
- name: customer
source: samples.tpch.customer
'on': o_custkey = c_custkey
joins:
- name: nation
source: samples.tpch.nation
'on': c_nationkey = n_nationkey
filter: o_orderdate >= '1995-01-01'
comment: |-
Sales analytics metric view for order performance analysis.
Joins orders with customers and geography.
Owner: Analytics Team
Last updated: 2025-01-15
dimensions:
- name: order_date
expr: o_orderdate
display_name: Order Date
- name: order_month
expr: "DATE_TRUNC('MONTH', o_orderdate)"
display_name: Order Month
- name: order_year
expr: YEAR(o_orderdate)
display_name: Order Year
- name: order_status
expr: |-
CASE o_orderstatus
WHEN 'O' THEN 'Open'
WHEN 'P' THEN 'Processing'
WHEN 'F' THEN 'Fulfilled'
END
display_name: Order Status
synonyms:
- status
- fulfillment status
- name: order_priority
expr: "SPLIT(o_orderpriority, '-')[0]"
display_name: Priority
- name: customer_name
expr: customer.c_name
display_name: Customer Name
- name: market_segment
expr: customer.c_mktsegment
display_name: Market Segment
synonyms:
- segment
- industry
- name: customer_nation
expr: customer.nation.n_name
display_name: Country
synonyms:
- nation
- country
measures:
- name: order_count
expr: COUNT(DISTINCT o_orderkey)
display_name: Order Count
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: total_revenue
expr: SUM(o_totalprice)
display_name: Total Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- revenue
- sales
- name: unique_customers
expr: COUNT(DISTINCT o_custkey)
display_name: Unique Customers
format:
type: number
decimal_places:
type: exact
places: 0
abbreviation: compact
- name: avg_order_value
expr: MEASURE(total_revenue) / MEASURE(order_count)
display_name: Avg Order Value
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- AOV
- name: revenue_per_customer
expr: MEASURE(total_revenue) / MEASURE(unique_customers)
display_name: Revenue per Customer
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: open_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'O')
display_name: Open Order Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
synonyms:
- backlog
- name: fulfilled_order_revenue
expr: SUM(o_totalprice) FILTER (WHERE o_orderstatus = 'F')
display_name: Fulfilled Revenue
format:
type: currency
currency_code: USD
decimal_places:
type: exact
places: 2
abbreviation: compact
- name: t7d_customers
expr: COUNT(DISTINCT o_custkey)
window:
- order: order_date
semiadditive: last
range: trailing 7 day
display_name: 7-Day Rolling Customers
format:
type: number
decimal_places:
type: exact
places: 0
$$;
Ölçüm görünümü oluşturmanın diğer yolları için bkz. Ölçüm görünümleri oluşturma ve düzenleme.
8. Adım: Ölçüm görünümünüzü sorgulama
Artık iş dostu söz dizimlerini kullanarak sorgulayabilirsiniz:
-- Aggregates total revenue, order count, and average order value
-- by customer nation and market segment, ranked by highest revenue first.
SELECT
customer_nation,
market_segment,
MEASURE(total_revenue) AS total_revenue,
MEASURE(order_count) AS order_count,
MEASURE(avg_order_value) AS avg_order_value
FROM catalog.schema.tpch_sales_analytics
GROUP BY customer_nation, market_segment
ORDER BY total_revenue DESC;
-- Monthly trend with backlog analysis
SELECT
order_month,
order_status,
MEASURE(total_revenue) AS total_revenue,
MEASURE(open_order_revenue) AS open_order_revenue
FROM catalog.schema.tpch_sales_analytics
GROUP BY order_month, order_status
ORDER BY order_month;
Öğrendiklerin
Şunları gösteren bir ölçüm görünümü oluşturdunuz:
| Özellik | Example |
|---|---|
| Snowflake şema birleştirmeleri | Müşteriden ülkeye siparişler (iç içe çoktan bire bağlantılar) |
| Zaman boyutları | Tarih, ay, yıl ayrıntı düzeyi |
| Dönüştürülen boyutlar |
CASE ifadeler, SPLIT işlevler |
| Basit ölçüler |
COUNT, SUM |
| Bestelenebilirlik |
avg_order_value ve revenue_per_customer, MEASURE() kullanarak önceki tanımlı ölçülere atıfta bulunur |
| Filtrelenmiş ölçüler |
FILTER (WHERE ...) koşullu toplamalar için |
| Pencere ölçüleri | 7 günlük hareketli müşteri sayısını trailing 7 day kullanarak hesaplama |
| Aracı meta verileri |
display_name, format, synonyms |
Sonraki Adımlar
- Sıralı ortalamaları ve yıllık toplamları hesaplamak için pencere ölçüleri.
- Büyük veri kümelerinde sorgu performansını geliştirmek için metrik görünümleri malzemeleşmesi.
- Ölçüm görünümlerini kullanın AI/BI panolarında ölçüm görünümünüzü kullanmak için.