BigQuery Graph Measures'ı kullanmaya başlama

1. Genel Bakış

Kod incelemesinden geçen SQL hatalarının çoğu toplama hatalarıdır. Bir sayı, bulunduğu tabloda doğruyken birleştirme işlemi bu sayıyı kopyalıyor ve toplam sessizce yanlış oluyor.

BigQuery Graph, tablolarınızın nasıl bağlandığını bir kez özellik grafiği olarak tanımlamanıza ve ardından bağlantıları sorgulamanıza olanak tanır. Grafik ölçümleri, bu açıklamaya bir şey daha ekler: toplama işleminin kendisi. Sayıya sahip olan düğümde MEASURE(SUM(streams)) bildirimi yaparsınız ve grafiği okuyan her sorgu, doğru toplamı doğru ayrıntı düzeyinde alır. GROUP BY hilesi veya birinin hatırlaması gereken CTE yoktur.

Bu codelab'de beş tablodan oluşan bir müzik kataloğu oluşturacak, kataloğa bir ölçü ekleyecek ve aynı sorunun iki farklı yanıt verdiğini göreceksiniz: SUM ile 12,6 milyar, AGG ile 5,1 milyar. Boşluk, kataloğun şeklidir. Dört oynatma listesinde yer alan bir şarkı, grafik düzleştirildiğinde dört satır haline gelir ve SUM bu dört satırı da ekler. Ardından, ikinci cümleyi doğru kılan kuralları öğrenirsiniz.

Bir Şarkılar satırı dört yerleşim satırına kopyalanır: SUM, kopyaları ekler, AGG ise song_id üzerinde daraltır.

Yazacağınız yer

Bu laboratuvarda tam olarak iki yer kullanılır ve bu yerler şu sırayla gösterilir:

burada

orada yaptığınız işlemler

1

Cloud Shell terminali

Yalnızca Kurulum adımında birkaç komut

2

BigQuery konsolu

Diğer tüm işlemler: sorguları sorgu düzenleyiciye yapıştırma, grafik modelleyicide tıklama, bir temsilciyle sohbet etme

Her talimat etiketlenir. Böylece her zaman hangi talimatın kastedildiğini bilirsiniz:

  • 👉💻 Cloud Shell: Cloud Shell terminaline bunu yazın.
  • 👉📋 Sorgu düzenleyici: Bunu BigQuery sorgu düzenleyiciye yapıştırıp Çalıştır'ı tıklayın.
  • 👉🌐 Konsol: BigQuery konsolunda tıklayarak gezinin. Adımda belirtilmediği sürece hiçbir şey yazmayın.
  • 👀 — Sonuca bakın.

Neler öğreneceksiniz?

  • Görsel grafik modelleyicide veya SQL'de bir düğüm tablosunda ölçü beyan etme
  • GRAPH_EXPAND işlevi, grafiği nasıl tek bir geniş tabloya düzleştirir?
  • Neden AGG işlevi, ölçü okuyabilen tek işlevdir ve diğer tüm denemeler ne yanıtını verir?
  • Bir ölçünün desteklediği altı toplama ve bunlar arasında aritmetik işlemlerin nasıl yapılacağı
  • Bir ölçünün, farklı şekilde gruplandırılmış bir soruyu değişiklik yapmadan nasıl yanıtladığı
  • İsteğe bağlı: GQL ve Grafik sekmesinin, toplamın yanıtlayamadığı bir soruyu nasıl yanıtladığı ve BigQuery veri aracısının, ölçüleriniz hakkında bilgi verilmeden bunları nasıl kullandığı

İhtiyacınız olanlar

  • Faturalandırmanın etkin olduğu bir Google Hesabı ve bir tarayıcı. Başlangıçta Google Cloud projesine ihtiyacınız yoktur. Kurulum, sizin için bir proje oluşturur.
  • Yalnızca isteğe bağlı sohbet adımı için: Gemini Data Analytics API'nin etkinleştirilmesi ve Gemini Data Analytics Data Agent Creator rolü.

Bilgisayarınıza herhangi bir şey yüklemeniz gerekmez. Her şey Cloud Shell ve BigQuery konsolunda çalışır.

Ürün durumu ve maliyeti

BigQuery Graph genel kullanıma sunuldu. Grafik ölçümleri, görsel grafik modelleyici, grafik görselleştirme ve grafiği veri aracısı bilgi kaynağı olarak kullanma özellikleri önizleme aşamasındadır ve GKST Öncesi Teklif Şartları'na tabidir.

GRAPH_EXPAND ve AGG, isteğe bağlı fiyatlandırma kapsamında çalışır. GQL sorguları (isteğe bağlı yol adımı), dokümanlara göre Enterprise veya Enterprise Plus sürümünü kullanan bir rezervasyon gerektirir. Bu nedenle bu adım isteğe bağlıdır.

Veri kümesi birkaç kilobayt boyutundadır. İsteğe bağlı fiyatlandırma kapsamında her sorgu için minimum 10 MB üzerinden faturalandırma yapılır. Bu nedenle, tüm codelab'in maliyeti bir sentin çok küçük bir kısmıdır.

2. Kurulum

Cloud Shell'in kullanıldığı tek adım budur. Bu araç bir proje oluşturur, faturalandırmayı etkinleştirir ve ham tabloları oluşturur. Grafik, ölçü ve her sorgu, daha sonra BigQuery konsolunda çalıştırabileceğiniz öğelerdir.

Bu laboratuvarda size verilemeyecek tek şey, faturalandırmanın etkin olduğu bir Google Cloud projesidir. 1. adımda, ödeme yapabilecek bir hesap oluşturursunuz. 4. adımda ise bu hesabı projeye dönüştürürsünüz. Bu adımları sırayla uygulayın. 4. adımdan sonraki her adım, 4. adımda oluşturulan projeyi okur.

1. Faturalandırma özellikli bir hesap edinin (~1 dakika)

👉🌐 Başka bir işlem yapmadan önce bunu yapın. Faturalandırmanın etkin olduğu bir Google Hesabı ile oturum açın. Bu tür hesapların herhangi birini kullanabilirsiniz. Sizinki yoksa ücretsiz deneme başlatın. Bu işlemle, 4. adım için gereken faturalandırma hesabını elde edersiniz.

2. Cloud Shell'i açın (~1 dakika).

👉🌐 Konsol: Google Cloud Console'un üst kısmındaki Cloud Shell'i etkinleştir'i tıklayın. Bu, başlıktaki terminal şeklindeki simgedir. Sayfanın en altında bir terminal açılır.

Google Cloud konsolunun üstbilgisinden Cloud Shell'i etkinleştirme

👉🌐 Console: Bugün herhangi bir noktada yetkilendirme yapmanız istenirse devam etmek için Authorize'ı (Yetkilendir) tıklayın.

👉💻 Cloud Shell: Cloud Shell'in hangi hesapla oturum açtığını kontrol edin:

gcloud auth list

👀 Hesabınızın * ile işaretlenmesini bekleyin. Bu hesap, 1. adımda oturum açtığınız hesapla aynı olmalıdır. Doğru değilse gcloud auth login komutunu çalıştırın ve doğru olanı seçin.

3. Laboratuvarı edinin (~1 dakika)

👉💻 Cloud Shell — depoyu klonlayın:

cd ~
rm -rf ~/bq-graph-measures-lab
git clone https://github.com/cuppibla/bq-graph-measures-lab.git
cd ~/bq-graph-measures-lab

4. Projenizi oluşturun (~2 dakika)

👉💻 Cloud Shell: Bir komut dosyası, faturalandırma hesabınızı bulur, bu hesapta bir proje oluşturur ve Cloud Shell'i bu projeye yönlendirir:

cd ~/bq-graph-measures-lab
./setup_project.sh

👀 Seçtiği faturalandırma hesabı için beklenen ✓, oluşturduğu proje için ✓ ve şu şekilde bir son:

Project ready: bq-graph-4271
  Next:  ./setup.sh

bq-graph-4271, proje kimliğinizdir. Sizinki farklı rakamlardan oluşur. Bu süreçte dört şey olur:

billing

varsa en yeni [YYYY-MM-DD] GDP Credit: hesabını, aksi takdirde açık olan diğer faturalandırma hesaplarını kullanır.

project

bq-graph-XXXX oluşturur ve bu faturalandırma hesabını ona bağlar

seçer

Kimliği ~/project_id.txt konumuna yazar ve gcloud config set project komutunu çalıştırır. Bu nedenle, bundan sonraki hiçbir işlemde kimliği yazmanız istenmez.

waits

yeni proje gerçekten yayınlanmaya başlayana kadar iki dakika boyunca anketler gösterilir.

🌐 Aynı proje artık konsolda. Projenin kimliği, kontrol panelindeki Proje bilgileri kartında yer alıyor:

Konsol kontrol panelindeki proje kimliğiniz

5. Veri kümesini oluşturun (~3 dakika)

👉💻 Cloud Shell: Tabloları oluşturan bir komut dosyası daha vardır:

cd ~/bq-graph-measures-lab
./setup.sh

Komut dosyası, her adımı çalıştırırken yazdırır. Bu kod sırasıyla şu işlemleri yapar:

project

proje gcloud config'dan okunur ve bu olmadan devam etmeyi reddeder.

API

bigquery.googleapis.com özelliğini etkinleştirir.

dataset

ABD'deki çok bölgeli music veri kümesini ve her biri PRIMARY KEY ... NOT ENFORCED içeren beş tabloyu oluşturur.

check

Her tablodaki satırları sayar ve herhangi bir sayı yanlışsa durur.

👀 Beklenenler:

BigQuery Graph Measures · setup
  ✓ project: bq-graph-4271
  ✓ BigQuery API enabled

Creating dataset music (US) and five tables...
  ✓ music.Labels              2 rows
  ✓ music.Artists             3 rows
  ✓ music.Songs               5 rows
  ✓ music.Playlists           4 rows
  ✓ music.PlaylistEntries    10 rows

🎉 ready — open BigQuery Studio: https://console.cloud.google.com/bigquery?project=bq-graph-4271

Cloud Shell'i kullanmayı bitirdiniz. Bu pencereyi kapatabilirsiniz.

6. BigQuery'yi ve bir sorgu düzenleyiciyi açın.

👉🌐 Konsol: Çıkışın sonundaki bağlantıyı tıklayın veya gezinme menüsünden BigQuery'yi açın. Soldaki Explorer (Gezgin) bölmesinde projenizi genişletin: beş tablonun bulunduğu bir music veri kümesi.

Gezgin bölmesi, müzik genişletilmiş: Sanatçılar, Müzik Şirketleri, Oynatma Listesi Girişleri, Oynatma Listeleri, Şarkılar

👉🌐 Konsol: BigQuery Studio'nun üst kısmındaki Yeni oluştur satırında SQL sorgusu'nu tıklayın. Boş bir düzenleyici sekmesi açılır.

SQL sorgusuyla yeni satır oluşturma ve altındaki boş düzenleyici sekmesi

Bu sekmeyi tutun. Bu laboratuvardaki her 👉📋 blok buraya gider: Düzenleyicideki her şeyi seçin, yeni bloğu üzerine yapıştırın ve Çalıştır'ı tıklayın. Sonuç, alttaki panelde gösterilir.

Tablolarla tanışma

Bu tablolarla ilgili iki nokta daha sonra önem kazanır. Her tablo, birincil anahtarını NOT ENFORCED olarak bildirir: BigQuery bunu kontrol etmez ancak oluşturmak üzere olduğunuz mülk grafiğinin, bir satırı neyin tanımladığını bilmesi için açık bir anahtar gerekir. Son tablo olan PlaylistEntries ise bir bağlantı tablosudur: Dört oynatma listesinde yer alan bir şarkı, bu tabloda dört satır olarak gösterilir. Hikayenin tamamı bu tabloda gerçekleşir.

Tablolar şu şekilde birbirine bağlanır: Bir plak şirketi sanatçılarla sözleşme imzalar, sanatçı şarkı yayınlar, şarkı PlaylistEntries aracılığıyla oynatma listelerine eklenir. Cymbal Records, Ava Sterling ve Mina Okafor'un yanı sıra bu sanatçıların dört şarkısının da sahibidir. Northwind Audio, Kai Nakamura'ya ve Midnight Drive adlı şarkıya sahiptir.

masa

satırlar

anahtar

İçeriği

Etiketler

2

label_id

ad, pazarlama bütçesi

Sanatçılar

3

artist_id

name, which label

Şarkılar

5

song_id

başlık, sanatçı, akış sayısı

Oynatma listeleri

4

playlist_id

ad, takipçi sayısı

PlaylistEntries

10

entry_id

hangi şarkı hangi oynatma listesinde yer alıyor?

✅ Kontrol noktası: Cloud Shell'de 🎉 ready, Explorer'da music altında beş tablo ve boş bir sorgu düzenleyici sekmesi açık olmalıdır.

3. Grafiği oluşturma: A seçeneği (görsel modelleyici)

Özellik grafiği, tabloların nasıl bağlandığını gösteren bir açıklamadır. Bu kodu görsel grafik modelleyicide birlikte tıklayabilir (bu adımda tüm tıklamalar) veya SQL olarak yazabilirsiniz (sonraki adımda tek bir yapıştırma). İkisi de aynı nesneyi üretir. İkisini birden değil, yalnızca birini kullanın.

1. Grafik kabuğunu oluşturma

👉🌐 Konsol: BigQuery Studio'da, Yeni oluştur satırında Yapay zeka ve bilgi menüsünü açıp Grafik'i tıklayın.

👉🌐 Console: MusicGraph değerini Grafik adı, music değerini ise Veri kümesindeki grafik hedefi olarak girin. Bölge, veri kümesinden (ABD) doldurulur.

👉🌐 Console: Veri kaynakları bölümünde beş tabloyu (Sanatçılar, Plak Şirketleri, PlaylistEntries, Oynatma Listeleri, Şarkılar) seçin ve Oluştur'u tıklayın.

modeler create page: Graph name MusicGraph, dataset music, five tables ticked

👀 Tuval, aralarında çizgi olmayan beş renkli düğümle açılıyor. Sağdaki Ayrıntılar panelinde Düğümler (5) ve Kenarlar (0) listelenir. Her düğüm, tablosunun birincil anahtarını ve tüm sütunlarını özellik olarak taşır. Bunları görmek için herhangi bir düğümü tıklayın.

Beş düğümlü tuval, Düğümler (5) / Kenarlar (0) gösteren Ayrıntılar paneli

2. Dört kenarı çizin

Kenar, çizilmiş bir yabancı anahtardır. Her biri, anahtarı tutan tablodan işaret ettiği tabloya gider.

👉🌐 Console (Konsol): New edge'i (Yeni kenar) tıklayın. Tablo seçin iletişim kutusunda PlaylistEntries simgesini seçip Ekle'yi tıklayın. Kenar ekle panelinde:

  1. Ad'ı EntryToSong olarak ayarlayın.
  2. Birincil anahtar ekle'yi tıklayın ve entry_id'yi kabul edin.
  3. Kaynak bölümünde Kaynak düğümü'nü PlaylistEntries olarak ayarlayın, ardından her ikisi için de entry_id seçmek üzere Referans verilen sütunları düğüme ekle ve Referans verilen sütunları kenara ekle'yi kullanın.
  4. Hedef bölümünde Hedef düğümü'nü Şarkılar olarak ayarlayın, ardından hem Düğümdeki referans sütunları hem de Kenardaki referans sütunları için song_id simgesini seçin.
  5. Bitti'yi tıklayın.

EntryToSong için "Kenar paneli ekle" alanı doldurulmuş olmalıdır.

👉🌐 Console (Konsol) kelimesini üç kez daha tekrarlayın:

kenar adı

masa

kaynak düğüm → hedef düğüm

Her iki tarafta da seçilecek sütun

EntryToPlaylist

PlaylistEntries

PlaylistEntries → Playlists

kaynak entry_id, hedef playlist_id

SongToArtist

Şarkılar

Şarkılar → Sanatçılar

kaynak song_id, hedef artist_id

ArtistToLabel

Sanatçılar

Sanatçılar → Müzik Şirketleri

kaynak artist_id, hedef label_id

Her kenarı ek özellikler olmadan bırakın.

👀 Ayrıntılar panelinde artık Kenarlar (4) yazıyor ve tuvalde şu zincir gösteriliyor: Etiketler ← Sanatçılar ← Şarkılar ← OynatmaListesiGirişleri → Oynatma Listeleri.

Beş düğüm ve dört kenar içeren tuval, Kenarlar (4) gösteren Ayrıntılar

3. Ölçü ekleme

👉🌐 Konsol: Şarkılar düğmesini, ardından Ayrıntılar panelinin üst kısmındaki düzenle (kalem) simgesini tıklayın. Plak şirketinin Özellikler bölümünde Özellik ekle'yi, ardından Alan ekle'yi tıklayın.

👉🌐 Console (Konsol): Alan adı olarak total_streams girin ve İfade kutusuna şunu yazın:

MEASURE(SUM(streams))

👉🌐 Konsol: Ekle'yi, ardından Bitti'yi tıklayın.

Yeni mülk kartı: Alan adı total_streams, İfade MEASURE(SUM(streams))

4. Yazdığı kodu okuyun ve yayınlayın.

👉🌐 Konsol: Sağ panelde Kod sekmesini açın. Modelleme uzmanı, sizin için CREATE PROPERTY GRAPH ifadesini yazdı. Şarkılar düğümüne gidin: Özellik listesi artık

MEASURE(SUM(streams)) AS `total_streams`

Bu, özelliğin tek satırlık özetidir. Bu adımdan sonraki her şey, bu satırın ne yaptığıyla ilgilidir.

Şarkılar düğümüne kaydırılmış kod sekmesi, MEASURE(SUM(streams)) AS total_streams görünür

👉🌐 Console: Yayınla'yı tıklayın.

✅ Kontrol noktası: Gezgin'deki music artık MusicGraph'ı içeren bir Grafikler klasörüne sahip. Beş düğüm, dört kenar ve Kod sekmesindeki MEASURE(SUM(streams)) satırını tıklayın. Sonraki adımı atlayın ve YAN YANA TOPLAMA ve TOPLU'ya gidin.

4. Grafiği oluşturma: B seçeneği (SQL)

Grafiği modelleyicide oluşturduysanız bu adımı atlayın.

👉📋 Sorgu düzenleyici: Kodu yapıştırın ve Çalıştır'ı tıklayın:

CREATE OR REPLACE PROPERTY GRAPH music.MusicGraph
  NODE TABLES (
    music.Labels KEY (label_id)
      PROPERTIES (label_id, label_name, marketing_budget,
        MEASURE(SUM(marketing_budget)) AS total_budget),
    music.Artists KEY (artist_id)
      PROPERTIES (artist_id, artist_name, label_id,
        MEASURE(COUNT(artist_id)) AS artist_count),
    music.Songs KEY (song_id)
      PROPERTIES (song_id, title, artist_id, streams,
        MEASURE(SUM(streams))   AS total_streams,
        MEASURE(COUNT(song_id)) AS song_count),
    music.Playlists KEY (playlist_id)
      PROPERTIES (playlist_id, playlist_name, followers,
        MEASURE(SUM(followers)) AS total_followers),
    music.PlaylistEntries KEY (entry_id)
      PROPERTIES (entry_id, playlist_id, song_id,
        MEASURE(COUNT(entry_id)) AS placement_count)
  )
  EDGE TABLES (
    music.PlaylistEntries AS EntryToSong
      SOURCE KEY (entry_id) REFERENCES PlaylistEntries(entry_id)
      DESTINATION KEY (song_id) REFERENCES Songs(song_id) NO PROPERTIES,
    music.PlaylistEntries AS EntryToPlaylist
      SOURCE KEY (entry_id) REFERENCES PlaylistEntries(entry_id)
      DESTINATION KEY (playlist_id) REFERENCES Playlists(playlist_id) NO PROPERTIES,
    music.Songs AS SongToArtist
      SOURCE KEY (song_id) REFERENCES Songs(song_id)
      DESTINATION KEY (artist_id) REFERENCES Artists(artist_id) NO PROPERTIES,
    music.Artists AS ArtistToLabel
      SOURCE KEY (artist_id) REFERENCES Artists(artist_id)
      DESTINATION KEY (label_id) REFERENCES Labels(label_id) NO PROPERTIES
  )

👀 Sonuç panelinde, mülk grafiğinin oluşturulduğu belirtiliyor.

Düzenleyicideki CREATE PROPERTY GRAPH ifadesi ve altındaki başarı mesajı

Bir kez okuma

Grafikte beş düğüm tablosu ve dört kenar tablosu vardır. Her düğüm tablosu KEY adını verir ve PROPERTIES listeler. MEASURE ile başlayan satırlar yeni kısımdır: Her biri, desteklenen toplama işlemlerinden birini bir özellik etrafında sarmalar ve buna gerekli olan bir takma ad verir.

Her kenar tablosu, yabancı anahtardır. Anahtarı tutan tabloda SOURCE KEY, işaret ettiği tabloda DESTINATION KEY olarak yazılır. NO PROPERTIES, kenarın kendi başına hiçbir şey taşımadığı anlamına gelir.

PlaylistEntries öğesinin üç kez göründüğünü fark edin: bir kez düğüm tablosu olarak, iki kez daha EntryToSong ve EntryToPlaylist kenarlarının arkasındaki fiziksel tablo olarak. Bu kasıtlı olarak yapılmıştır ve nedenini daha sonra açıklayacağız.

Oluşturduğunuz içeriklere göz atma

👉🌐 Console: Gezgin bölmesinde music, ardından Graphs'i genişletin ve MusicGraph'i tıklayın. Grafik sayfası, beş düğüm ve dört kenar içeren bir tuvalde açılır. Özelliklerini görmek için bir düğümü tıklayın. Metrikler, toplamlarıyla birlikte listelenir. Resmin arkasındaki ifadeyi görmek için Kod sekmesini açın.

MusicGraph sayfası: solda tuval, sağda Kod sekmesi

✅ Kontrol noktası: music, MusicGraph'ı içeren bir Graphs klasörüne sahip ve Kod sekmesinde MEASURE(SUM(streams)) AS total_streams gösteriliyor.

5. YANALAN ve TOPLA, yan yana

Bu, tüm codelab'i tek bir sorguda birleştirir. Her iki sütun da aynı tablodan aynı soruyu (etiket başına toplam yayın sayısı) yanıtlamaya çalışır.

Bu tablo, GRAPH_EXPAND tarafından oluşturulur. Grafiği düzleştirir: Bir tablodan başlar ve her kenarı dışa doğru LEFT JOIN olarak takip eder. Böylece, bağlı olan tüm tablolar tek bir geniş sonuçta yan yana yer alır. Şarkı başına değil, yerleşim başına bir satır ve TableLabel_property adlı her sütun. Sorgulamadan önce inceleyin.

👉📋 Sorgu düzenleyici: Kodu yapıştırın ve Çalıştır'ı tıklayın:

SELECT Labels_label_name, Songs_title, Songs_streams, Playlists_playlist_name
FROM GRAPH_EXPAND("music.MusicGraph")
ORDER BY Songs_title, Playlists_playlist_name

👀 Beklenen: 10 satır (PlaylistEntries içindeki her yerleşim için bir satır). Kurulum tam olarak bunu yükledi. Neon Summer, bulunduğu her oynatma listesinde bir kez olmak üzere dört yer kaplıyor ve her birinde Songs_streams okunuyor. Bu satırlarda bir sorun yok. Oynatma listeleri gerçekten dört tane. Ancak bir şarkıya ait olan sütun artık yerleşimlere ait satırlarda tekrarlanıyor ve bu, sonraki sorgunun ölçtüğü asıl sorun.

Şimdi de karşılaştırma.

👉📋 Sorgu düzenleyici: Kodu yapıştırın ve Çalıştır'ı tıklayın:

SELECT
  Labels_label_name,
  SUM(Songs_streams)       AS with_sum,
  AGG(Songs_total_streams) AS with_agg
FROM GRAPH_EXPAND("music.MusicGraph")
GROUP BY 1 ORDER BY 1

👀 Sonuç:

Labels_label_name

with_sum

with_agg

Cymbal Records

12.600.000.000

5.100.000.000

Northwind Audio

9.000.000.000

4.500.000.000

Sonuç ızgarası: Cymbal Records için with_sum 12.600.000.000 ve with_agg 5.100.000.000

Elle kontrol edin. Cymbal'ın dört şarkısı sırasıyla 2,0 milyar, 1,5 milyar, 1,2 milyar ve 0,4 milyar kez yayınlandı. Bu sayı 5,1 milyar. AGG doğru. SUM iki buçuk kat fazla büyük ve Northwind'in tek şarkısı iki katına çıktı.

Üç yeni söz dizimi

  • GRAPH_EXPAND("music.MusicGraph"), her kenarı LEFT JOIN olarak izleyerek grafiği geniş bir tabloya dönüştüren tablo değerli bir işlevdir. Her sütun TableLabel_property olarak adlandırılır. Bu nedenle, Songs_streams, Songs tablosundaki ham sütun, Songs_total_streams ise bildirdiğiniz ölçüdür.
  • SUM(Songs_streams), bu geniş tablo üzerinde normal SQL'dir ve düzleştirmenin oluşturduğu her yineleneni devralır.
  • AGG(Songs_total_streams), ölçüyü bildirildiği şekilde değerlendirir: SUM(streams) bir şarkı geniş tabloda kaç satır kaplarsa kaplasın song_id başına bir kez.

✅ Kontrol noktası: İki etiket, iki sütun ve with_agg sayıları el sayısıyla eşleşiyor.

6. TOPLA işlevi neden fazla sayar?

Bir şarkı seçip bu birleştirme işlemlerinin şarkı üzerinde ne gibi etkileri olduğunu görün.

👉📋 Sorgu düzenleyici: Kodu yapıştırın ve Çalıştır'ı tıklayın:

SELECT 'BEFORE - the Songs table' AS step, title, streams, CAST(NULL AS STRING) AS playlist
FROM music.Songs WHERE title = 'Neon Summer'
UNION ALL
SELECT 'AFTER - joined to playlists', s.title, s.streams, pl.playlist_name
FROM music.Songs s
LEFT JOIN music.PlaylistEntries e ON e.song_id = s.song_id
LEFT JOIN music.Playlists pl ON pl.playlist_id = e.playlist_id
WHERE s.title = 'Neon Summer'
ORDER BY step DESC, playlist

👀 Sonuç:

adım

title

dinlenme

oynatma listesi

ÖNCESİ - Şarkılar tablosu

Neon Yaz

2.000.000.000

null

SONRA: Oynatma listelerine eklenir.

Neon Yaz

2.000.000.000

Gym Pump

SONRA: Oynatma listelerine eklenir.

Neon Yaz

2.000.000.000

Şu Anda Popüler Olanlar

SONRA: Oynatma listelerine eklenir.

Neon Yaz

2.000.000.000

Yükselen Pop

SONRA: Oynatma listelerine eklenir.

Neon Yaz

2.000.000.000

Yolculuk

Sonuç tablosu: BİR ÖNCE satırı ve DÖRT SONRA satırı, hepsi 2.000.000.000

Bir satır dört satır oldu. Akış sayısı değişmedi, kopyalandı. Kopyaların Cymbal Records'a katkısını toplayın: Dört oynatma listesinde 2 milyar dinlenen Neon Summer 8 milyar, iki oynatma listesinde 1,5 milyar dinlenen Paper Crown 3 milyar, bir oynatma listesinde 1,2 milyar dinlenen Double Shot 1,2 milyar, bir oynatma listesinde 0,4 milyar dinlenen Slow Arrow 0,4 milyar. Bu, 12,6 milyar yani SUM döndürülen sayıdır. Northwind's Midnight Drive, iki oynatma listesinde yer aldığından 4,5 milyar, 9,0 milyara yükseldi.

Bu, fan-out işlemidir ve birleştirme işleminde hata yoktur. Oynatma listesi satırları gerçektir. Hata, yerleşimlere ait satırlarda bir şarkıya ait sayının toplanmasıdır.

Şarkılar düğümünde KEY (song_id) ile birlikte bildirildiği için ölçü bunu düzeltir. Önemli olan tahıldır. AGG işlevi total_streams olarak değerlendirildiğinde, şarkı anahtarı başına bir kez toplanır ve yalnızca o zaman gruplandırdığınız öğeye göre özetlenir.

Ne değişti?

Eskiden şöyle yazıyordunuz:

Ölçüyle

SUM(streams) gereken her sorguda

Grafikte MEASURE(SUM(streams)) kez

SUM(...) tuşuna basın.

AGG(...) okuyabilir.AGG

Üç JOIN

GRAPH_EXPAND(), bir düz tablo

Birleştirme işleminden önce toplama yapan bir CTE

Hiç. Greni KEY belirler.

✅ Kontrol noktası: Beş satır (BİRİ ÖNCE, DÖRDÜ SONRA) ve bunlardan 12,6 milyar yeniden oluşturabilirsiniz.

7. Kural: Yalnızca AGG bir ölçü okur

Ölçülerin kendi türü (MEASURE) vardır ve tam olarak bir işlev bunu kabul eder. Aşağıdaki dört sorgu bilerek başarısız olur. Her birini çalıştırıp kırmızı hatayı okuyun. Herkesin ilk denediği dört yöntem bunlardır. Bu yöntemlerin ne işe yaradığını bilmek daha sonra zamandan tasarruf etmenizi sağlar.

👉📋 Sorgu düzenleyici — AGG düz bir sütunda:

SELECT AGG(Songs_streams) FROM GRAPH_EXPAND("music.MusicGraph")

👀 No matching signature for aggregate function AGG ... Argument 1: expected MEASURE, found INT64

Düzenleyicinin altındaki kırmızı hata

👉📋 Sorgu düzenleyici: AGG içermeyen bir ölçü sütunu:

SELECT Songs_total_streams FROM GRAPH_EXPAND("music.MusicGraph") LIMIT 1

👀 Returning expressions of type MEASURE is not allowed

Düzenleyicinin altındaki kırmızı hata

👉📋 Sorgu düzenleyici: GQL'de referans verilen ve hiçbir zaman ölçü görmeyen bir ölçü (bu bir GQL sorgusudur. Genel bakıştaki sürüm notuna bakın):

GRAPH music.MusicGraph
MATCH (s:Songs)
RETURN s.total_streams
LIMIT 1

👀 total_streams is not exposed by element type GRAPH_NODE(...)

Düzenleyicinin altındaki kırmızı hata

👉📋 Sorgu düzenleyici: Bir ölçüm sütununun üzerine SUM getirin.

SELECT Labels_label_name, SUM(Songs_total_streams)
FROM GRAPH_EXPAND("music.MusicGraph")
GROUP BY 1

👀 MEASURE-typed arguments are only permitted in the AGG function

Düzenleyicinin altındaki kırmızı hata

Bu nedenle, tür sistemi kuralı sizin için zorunlu kılar. Ölçü yalnızca GRAPH_EXPAND üzerinden görülebilir ve yalnızca AGG üzerinden okunabilir. Daha önce fazla sayılan 12,6 milyar yalnızca ham sütunun toplanmasıyla elde edilebilir.Bu değer, hiçbir zaman ölçünün yanlış işlenmesinden kaynaklanmaz.

✅ Kontrol noktası: Dört kırmızı hata var ve her birinin hangi kuralı uyguladığını söyleyebilirsiniz.

8. Bir ölçünün desteklediği her toplama

MEASURE(), altı toplama işleminden birini kapsar: SUM, AVG, MIN, MAX, COUNT ve COUNT(DISTINCT). Şarkılar düğümünde altı öğenin tamamını kullanarak grafiği yeniden oluşturun. Kenarlar NO PROPERTIES olarak kalır. Bu, bir kenarın fiziksel tablosunu bir düğümle paylaştığı durumlarda belgelenmiş en iyi uygulamadır.

👉📋 Sorgu düzenleyici: Kodu yapıştırın ve Çalıştır'ı tıklayın:

CREATE OR REPLACE PROPERTY GRAPH music.MusicGraph
  NODE TABLES (
    music.Labels KEY (label_id)
      PROPERTIES (label_id, label_name, marketing_budget,
        MEASURE(SUM(marketing_budget)) AS total_budget),
    music.Artists KEY (artist_id)
      PROPERTIES (artist_id, artist_name, label_id,
        MEASURE(COUNT(artist_id)) AS artist_count),
    music.Songs KEY (song_id)
      PROPERTIES (song_id, title, artist_id, streams,
        MEASURE(SUM(streams))              AS total_streams,
        MEASURE(AVG(streams))              AS avg_streams,
        MEASURE(MIN(streams))              AS min_streams,
        MEASURE(MAX(streams))              AS max_streams,
        MEASURE(COUNT(song_id))            AS song_count,
        MEASURE(COUNT(DISTINCT artist_id)) AS distinct_artists),
    music.Playlists KEY (playlist_id)
      PROPERTIES (playlist_id, playlist_name, followers,
        MEASURE(SUM(followers)) AS total_followers),
    music.PlaylistEntries KEY (entry_id)
      PROPERTIES (entry_id, playlist_id, song_id,
        MEASURE(COUNT(entry_id)) AS placement_count)
  )
  EDGE TABLES (
    music.PlaylistEntries AS EntryToSong
      SOURCE KEY (entry_id) REFERENCES PlaylistEntries(entry_id)
      DESTINATION KEY (song_id) REFERENCES Songs(song_id) NO PROPERTIES,
    music.PlaylistEntries AS EntryToPlaylist
      SOURCE KEY (entry_id) REFERENCES PlaylistEntries(entry_id)
      DESTINATION KEY (playlist_id) REFERENCES Playlists(playlist_id) NO PROPERTIES,
    music.Songs AS SongToArtist
      SOURCE KEY (song_id) REFERENCES Songs(song_id)
      DESTINATION KEY (artist_id) REFERENCES Artists(artist_id) NO PROPERTIES,
    music.Artists AS ArtistToLabel
      SOURCE KEY (artist_id) REFERENCES Artists(artist_id)
      DESTINATION KEY (label_id) REFERENCES Labels(label_id) NO PROPERTIES
  )

CREATE PROPERTY GRAPH'ın altı ölçümlük çalışması ve başarı mesajı

Şimdi hepsini tekrar okuyun. Her ölçü AGG işleminden geçer ve son sütun, AGG sonuçlarının aritmetik işlemler yapabileceğiniz normal değerler olduğunu gösterir. Grafik yeni değiştiyse önce Önbelleğe alınmış sonuçları kullan seçeneğinin işaretini kaldırın (Diğer → Sorgu ayarları).

👉📋 Sorgu düzenleyici: Kodu yapıştırın ve Çalıştır'ı tıklayın:

SELECT
  Labels_label_name,
  AGG(Songs_total_streams)    AS total_streams,
  AGG(Songs_avg_streams)      AS avg_streams,
  AGG(Songs_min_streams)      AS min_streams,
  AGG(Songs_max_streams)      AS max_streams,
  AGG(Songs_song_count)       AS songs,
  AGG(Songs_distinct_artists) AS artists,
  AGG(Songs_total_streams) / AGG(Songs_song_count) AS streams_per_song
FROM GRAPH_EXPAND("music.MusicGraph")
GROUP BY 1
ORDER BY 1

👀 Sonuç:

Labels_label_name

total_streams

avg_streams

min_streams

max_streams

şarkı

sanatçılar

streams_per_song

Cymbal Records

5.100.000.000

1.275.000.000

400.000.000

2.000.000.000

4

2

1.275.000.000

Northwind Audio

4.500.000.000

4.500.000.000

4.500.000.000

4.500.000.000

1

1

4.500.000.000

Yedi sütunlu sonuç ızgarası, her iki etiket

Her sayı, on yerleştirme satırı üzerinden değil, Cymbal için dört şarkı ve Northwind için bir şarkı üzerinden hesaplanır. Özellikle AVG, diğer şekilde yanlış olurdu: Yerleşim satırları üzerinden ham sütunun ortalaması alındığında, Neon Summer'ın 2 milyarı dört kez sayıldığından Cymbal için 1,575 milyar elde edilir.

Bu nedenle "TOPLA yerine TOPLA.ÇARPIM kullan" aslında iki karardan oluşur. Ölçümü tanımlarken altı toplama işleminden hangisi olduğunu seçersiniz. Ölçümü okurken işlev her zaman AGG olur.

✅ Kontrol noktası: Etiket başına bir satır, her satırda yedi sayı ve streams_per_song eşittir avg_streams.

9. Ölçüyü değil, gruplandırmayı değiştirme

Aynı ölçü farklı bir soruyu yanıtlıyor. Etiket yerine oynatma listesine göre gruplandırın.

👉📋 Sorgu düzenleyici: Kodu yapıştırın ve Çalıştır'ı tıklayın:

SELECT
  Playlists_playlist_name,
  AGG(Songs_total_streams) AS streams,
  AGG(Songs_song_count)    AS songs
FROM GRAPH_EXPAND("music.MusicGraph")
GROUP BY 1
ORDER BY 2 DESC

👀 Sonuç:

Playlists_playlist_name

dinlenme

şarkı

Yolculuk

6.900.000.000

3

Gym Pump

6.500.000.000

2

Şu Anda Popüler Olanlar

4.700.000.000

3

Yükselen Pop

3.500.000.000

2

Sonuç ızgarası, en üstte 6.900.000.000 izlenmeye sahip Road Trip

İki AGG satırı, YAN YANA TOPLAMA ve AGG'daki satırlarla bayt bayt aynıdır. Yalnızca GROUP BY taşındı. Road Trip oynatma listesinde Neon Summer, Midnight Drive ve Slow Arrow şarkıları yer alıyor. Bu oynatma listesinde her şarkı bir kez çalınıyor. "Bu oynatma listesine ulaşan yayınlar" ifadesi tam olarak bunu ifade ediyor.

Ölçüyü yazan kişi, bir kez tane boyutuna karar verir. Daha sonraki tüm sorgular bu ayarı devralır.

✅ Kontrol noktası: 6,9 milyar ile Road Trip zirvede.

10. GRAPH_EXPAND'in sunduğu avantajları görün

Şeklini öğrenmek için GRAPH_EXPAND komutunu çalıştırmanız gerekmez. BQ.SHOW_GRAPH_EXPAND_SCHEMA sistem yordamı, sütun listesini bir değişkene yazar.

👉📋 Sorgu düzenleyici: Üç satırı da yapıştırın, ardından Çalıştır'ı tıklayın:

DECLARE schema STRING DEFAULT '';
CALL BQ.SHOW_GRAPH_EXPAND_SCHEMA('music.MusicGraph', schema);
SELECT schema;

👀 Sonuç, bir JSON dizesidir. Her alanın adı, türü ve modu vardır ve her ölçü sütunu "is_measure": true taşır. Yeni oluşturduğunuz grafik için aşağıdakiler gibi bilgiler elde edersiniz:

ad

tür

is_measure

Songs_title

Dize

Songs_streams

TAM SAYI

Songs_total_streams

TAM SAYI

doğru

Songs_avg_streams

KAYAN NOKTALI

doğru

Songs_distinct_artists

TAM SAYI

doğru

PlaylistEntries_placement_count

TAM SAYI

doğru

is_measure true değerini gösterecek kadar genişletilmiş tek JSON hücresi

Bir mülkte ayarladığınız tüm açıklamalar veya eş anlamlılar da burada gösterilir. İsteğe bağlı sohbet adımında, bu mesajları kimlerin okuduğu gösterilir.

✅ Kontrol noktası: MEASURE ile tanımladığınız her sütunda is_measure bulunan bir JSON dizesi.

11. GRAPH_EXPAND işlevinin bir grafiğin şekliyle ilgili ihtiyaçları

Bu adımda çalıştırılacak bir şey yok. Sadece okuyun. GRAPH_EXPAND, bir tablodan başlayıp kenarları dışa doğru takip ederek LEFT JOIN zinciriyle geniş tablosunu oluşturur. Bu durumdan üç kural ortaya çıkıyor ve MusicGraph bunların hepsini karşılıyor.

GRAPH_EXPAND şekli için şunlar gerekir: tek kök olarak PlaylistEntries, dışa doğru dört çoktan bire kenar ve çoktan çoğa Songs–Playlists çiftinin bir düğüme yükseltilmesi

Tam olarak bir kök düğüm tablosu. Kök, anahtarı başka hiçbir tabloda görünmeyen düğüm tablosudur. Yani hiçbir kenarın işaret etmediği tablodur. MusicGraph'ta PlaylistEntries: İki kenarın kaynağı ve hiçbirinin hedefi değil. Geniş tabloda, yerleşim başına bir olmak üzere 10 satır bulunur.

Her kenar, çoktan bire, kaynaktan hedefe olacak şekilde çalışır. Her girişte bir şarkı ve bir oynatma listesi, her şarkıda bir sanatçı, her sanatçıda bir etiket bulunur. Bu nedenle, geniş tablo hiçbir zaman kökün kendi satırlarının ötesine geçmez. Kökün erişemediği veriler görünmez: Yerleşimi olmayan bir şarkı, geniş tabloda eksik olur.

Çoktan çoka ilişkiler düğüm haline gelir. Şarkılar ve oynatma listeleri arasında çoktan çoğa ilişki vardır. Birleşim tablosunu Şarkılar'dan Şarkı listeleri'ne giden tek bir kenar olarak tanımladıysanız GRAPH_EXPAND, bunu belirsiz olduğu için yoksayar ve kullanılabilir kenar kalmadığından işlem başarısız olur. PlaylistEntries öğesini, kendisinden çıkan iki çoktan bire kenarı olan bir düğüm tablosuna yükseltmek, belgelenmiş bir kalıptır ve grafiği oluştururken yaptığınız işlemdir.

12. (İSTEĞE BAĞLI) GQL ile yollar

Şimdiye kadar her sorunun yanıtı bir sayı oldu. Bu özellik desteklenmez. Cymbal'ın yayınları dinleyicilere nerede ulaşıyor?, grafikteki rotalarla ilgili bir sorudur ve toplam bu soruyu yanıtlayamaz. Toplama yaptığınızda rota kaybolur.

1. Akışların nereye gittiğini sorun

👉📋 Sorgu düzenleyici: Kodu yapıştırın ve Çalıştır'ı tıklayın:

GRAPH music.MusicGraph
MATCH (l:Labels)<-[:ArtistToLabel]-(a:Artists)<-[:SongToArtist]-(s:Songs)
      <-[:EntryToSong]-(e:PlaylistEntries)-[:EntryToPlaylist]->(pl:Playlists)
WHERE l.label_name = 'Cymbal Records'
RETURN pl.playlist_name, pl.followers,
       SUM(s.streams) AS streams_reaching_this_playlist,
       STRING_AGG(s.title, ', ') AS songs
GROUP BY pl.playlist_name, pl.followers
ORDER BY streams_reaching_this_playlist DESC

👀 Dört oynatma listesi oluşturulur:

pl.playlist_name

pl.followers

streams_reaching_this_playlist

şarkı

Şu Anda Popüler Olanlar

35.000.000

4.700.000.000

Double Shot, Neon Summer, Paper Crown

Yükselen Pop

2.000.000

3.500.000.000

Neon Summer, Paper Crown

Yolculuk

5.000.000

2.400.000.000

Neon Summer, Slow Arrow

Gym Pump

3.000.000

2.000.000.000

Neon Yaz

GQL sonucu: Her birinde belirli sayıda yayın bulunan dört oynatma listesi

MATCH satırını cümle olarak okuyun: Bir etiketten başlayıp sanatçılarına, şarkılarına, bu şarkıların bulunduğu oynatma listesi girişlerine ve ardından oynatma listelerine doğru ilerleyin. Oklar, kenarların bildirildiği yönü gösterir. <-, bir adım geri gider.

Şimdi üçüncü sütunu toplayın. 12, 6 milyar: SUM adımında verdiğimiz yanlış sayı.

Burada doğru. O zamanlar, Cymbal'da ne kadar yayın yapıldığı soruluyordu ve bir şarkı, kaç oynatma listesinde yer alırsa alsın bir kez sayılıyordu. Bu sorunun cevabı, bu akışların ulaştığı yerdir ve dört oynatma listesindeki bir şarkı gerçekten dört kitleye ulaşır. GRAPH_EXPAND işaretlemesiyle oluşturulan kopya, bir sorunun yanıtı ve diğer sorunun cevabı için hata veriyor. AGG, hiçbir zaman yinelenenlerin kötü olmasıyla ilgili değildi. Amaç, aritmetiğin soruyla eşleşmesini sağlamaktı.

2. Yolların kendisini döndürme

Toplamayı bırakıp rotaları isteyin.

👉📋 Sorgu düzenleyici: Kodu yapıştırın ve Çalıştır'ı tıklayın:

GRAPH music.MusicGraph
MATCH p = (l:Labels)<-[:ArtistToLabel]-(a:Artists)<-[:SongToArtist]-(s:Songs)
          <-[:EntryToSong]-(e:PlaylistEntries)-[:EntryToPlaylist]->(pl:Playlists)
WHERE l.label_name = 'Cymbal Records'
RETURN TO_JSON(p) AS path

p = tüm eşleşmeyi adlandırır ve TO_JSON bunu oluşturur.

👀 8 satır ve bir path sütun bekleyin. Her hücre, bir rota üzerindeki düğümlerin ve kenarların JSON dizisidir. Her düğüm, labels ve properties değerlerini taşır.

Sonuçlar bölmesinde bir Grafik sekmesi bulunan, her biri JSON yolu olan 8 satır

Yerleşim başına bir rota olduğundan şarkı başına değil, dört şarkı için sekiz satır.

3. Grafik sekmesini açın.

👉🌐 Konsol: Sonuçların üzerinde Grafik'i tıklayın.

Bu sekme yalnızca bir sonuçta grafik öğeleri olduğunda görünür. Önceki sorgu sayılar döndürdüğü için Grafik sekmesi yoktu. Bu sorgu yollar döndürdüğü için Grafik sekmesi var.

Cymbal'ın alt grafiğini kuvvet düzeninde çizen Grafik sekmesi

Grafiğin Cymbal'a ait köşesi, görünümdeki düğümlerin ve kenarların sayısı ile etiket başına bir çip olacak şekilde zorunlu düzen olarak çizilir. Düzeni ayırmak için bir düğümü sürükleyin, özelliklerini okumak için bir düğümü tıklayın.

✅ Kontrol noktası: İlk sorgunun üçüncü sütunundaki değerlerin toplamı 12, 6 milyar, ikinci sorgu 8 yol döndürüyor ve Grafik sekmesi bunları çiziyor.

13. (İSTEĞE BAĞLI) Grafikle sohbet etme

Bu adımda SQL yok. BigQuery veri aracıları, bilgi kaynağı olarak grafik kullanabilir ve dokümanlarda, çok düzeyli toplama için ölçüleri kullandıkları belirtilir. Bunun doğru olup olmadığına bakalım.

1. Ajanı oluşturma

👉🌐 Konsol: Soldaki BigQuery gezinme menüsünde Aracılar'ı, ardından Aracı kataloğu'nu ve Aracı oluştur'u tıklayın.

👉🌐 Konsol: Aracı adı alanına Music graph agent, Aracı açıklaması alanına ise şunu girin:

Ask questions about labels, artists, songs and playlists in the music property graph.

👉🌐 Console: Bilgi kaynakları bölümünde Kaynak ekle'yi tıklayın. Kaynakları seçin iletişim kutusunda projenizi, music'ı ve Grafikler'i genişletin, MusicGraph'i işaretleyin ve Onayla'yı tıklayın.

👀 Kaynak ekle düğmesi gri renkte görünür. Bir aracı en fazla bir grafik tutabilir ve grafikleri tablolarla karıştıramaz.

MusicGraph'ın işaretli ve Seçili (1) olduğu Kaynakları seç iletişim kutusu

👉🌐 Console: Region (Bölge) ayarını grafiğin konumundan değiştirin. Kaydet'i, ardından Yayınla'yı tıklayın. Yayınlama kanalları panelinde Temsilciyi yayınla'yı tıklayın ve onayı kapatın.

2. Soruyu sorun

👉🌐 Konsol: Sohbet oluştur'u tıklayın. Bir sohbet sayfası açılır. Aşağıdaki metni en alttaki Bir soru sorun kutusuna yazıp Enter tuşuna basın:

For each label, show total streams and how many playlists their songs are on

👀 Ajan, bir tablo ve tek cümlelik bir özet döndürüyor:

label_name

total_streams

playlist_placements

Cymbal Records

5.100.000.000

8

Northwind Audio

4.500.000.000

2

Müşteri temsilcisinin yanıtı: tablo ve bir cümlelik özeti

5,1 milyar. Ajan, fan-out hakkında bilgilendirilmedi ve bu kategoriye girmedi.

3. Yazdığı sorguyu okuyun.

👉🌐 Konsol: Gezinme menüsünde İş Gezgini'ni ve en yeni işi tıklayın. Etiketleri arasında, aracınızın kimliğinin yer aldığı ca-bq-job: true ve data-agent-id bulunur. Sorgusu ise şöyledir:

SELECT
  Labels_label_name AS label_name,
  AGG(Songs_total_streams) AS total_streams,
  AGG(PlaylistEntries_placement_count) AS playlist_placements
FROM GRAPH_EXPAND("music.MusicGraph")
GROUP BY label_name
ORDER BY total_streams DESC

İş gezgini: İşin etiketleri (ca-bq-job, data-agent-id) ve SQL'i

Ölçüler, okuduğu şemada yer aldığından GRAPH_EXPAND ve AGG kendi başına kullanıldı. Temsilcinin açıklamasında bu durumdan bahsedilmiyor.

✅ Kontrol noktası: Sohbet yanıtında 5,1 milyar, işin SQL'inde ise AGG(...) var.

14. Temizleme

👉💻 Cloud Shell: Veri kümesini, tablolarını ve özellik grafiğini bırakın:

cd ~/bq-graph-measures-lab
./cleanup.sh

👀 Beklenen ✓ dropped YOUR_PROJECT_ID.music (tables and graph).

İsteğe bağlı veri aracısını oluşturduysanız konsolda Agents → Agent catalog (Ajanlar → Ajan kataloğu) bölümünden silin. ./setup_project.sh bu laboratuvar için bir proje oluşturduysa en temiz çözüm, projenin tamamını kapatmaktır. Proje kimliği ~/project_id.txt içinde yer alır.

15. Tebrikler

MEASURE(SUM(streams)) satırını beyan ettiniz ve bu satır, 12,6 milyarı 5,1 milyara düşürdü. Bu değişiklik, sizin için ve bir temsilcinin yazdıkları da dahil olmak üzere, bu grafiğe karşı yazılan her sorgu için geçerli oldu.

Öğrendikleriniz

  • Ölçü, tanesini belirleyen KEY simgesinin yanında bir düğümde beyan edilen bir toplama işlemidir.
  • GRAPH_EXPAND, grafiği TableLabel_property sütunlu geniş bir tabloya düzleştirir.
  • AGG, bir ölçüyü okuyan tek işlevdir ve tür sistemi bunu dört farklı şekilde zorunlu kılar.
  • Altı toplama işlemi kullanılabilir ve AGG sonuçları, bölünebilen normal değerlerdir.
  • GROUP BY değiştirildiğinde soru, ölçüye dokunulmadan yeniden sorulur.
  • GRAPH_EXPAND, bir kök, çoktan bire kenarlar ve düğümlere yükseltilmiş kavşaklar istiyor.

Karar tablosu

Belirti

Neden

Düzelt

Çok büyük bir toplam

SUM yelpaze şeklinde açılmış bir sütunun üzerinde

bir ölçü bildirin, AGG ile okuyun

"expected MEASURE, found INT64" ("MEASURE bekleniyordu, INT64 bulundu")

AGG düz bir sütunda

SUM kullanın veya ölçüyü bildirin

"MEASURE türünde ifadelerin döndürülmesine izin verilmez"

ölçü sütunu olmadan AGG

paketleyin: AGG(...)

"not exposed by element type" (öğe türüne göre kullanıma sunulmadı)

GQL'de referans verilen ölçü

yalnızca GRAPH_EXPAND ile canlı yayın gecikmesini ölçer

GRAPH_EXPAND bir kenarı yoksayıyor veya başarısız oluyor

kavşak, kenar olarak modellenir

birleşim tablosunu düğüme yükseltme

Grafiği değiştirdikten sonraki eski numara

önbelleğe alınmış sonuç

Önbelleğe alınan sonuçları kullan seçeneğinin işaretini kaldırın.

Kasten ele almadığımız konular

Mülklerdeki açıklamalar ve eş anlamlı kelimeler, veri aracıları için doğrulanmış sorgular ve sözlükler, birden fazla MATCH'nın ötesinde GQL, birden fazla grafik genelinde ölçümler. Her biri kendi laboratuvarıdır.

Daha fazla bilgi