Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Kyselyn Suorituskyvyn Optimointi | Edistyneet BigQuery-sovellukset ja optimointi
BigQueryn Perusteet

bookKyselyn Suorituskyvyn Optimointi

Pyyhkäise näyttääksesi valikon

Ymmärrä materiaalinäkymät BigQueryssa, tehokas ominaisuus kyselyjen suorituskyvyn optimointiin ja kustannusten hallintaan. Materiaalinäkymät tallentavat esilasketut kyselytulokset, mikä tekee niistä ihanteellisia kojelautoihin ja raportteihin, joita suoritetaan usein mutta jotka eivät vaadi reaaliaikaisia päivityksiä.

Mikä on materiaalinäkymä

Materiaalinäkymä tallentaa kyselyn tuloksen fyysisenä taulukkona:

  • Päivittyy automaattisesti pohjana olevan datan muutosten perusteella;
  • Päivitysväli voidaan määrittää, esimerkiksi 60 minuutin välein;
  • Kyselyt materiaalinäkymään ovat nopeampia ja edullisempia kuin pohjatauluun kohdistuvat kyselyt.

Miksi käyttää materiaalinäkymiä

Materiaalinäkymät tarjoavat useita keskeisiä etuja:

  • Parempi suorituskyky välttämällä toistuvaa laskentaa;
  • Alhaisemmat kyselykustannukset vähentämällä luetun datan määrää;
  • Automaattinen kyselyoptimointi, jolloin BigQuery voi käyttää materiaalinäkymää pohjataulun sijaan aina kun mahdollista.

Materiaalinäkymän luominen

Materiaalinäkymät luodaan komennolla CREATE MATERIALIZED VIEW ja tavallisella SELECT-lauseella. Päivityskäyttäytymistä ohjataan konfiguraatioasetuksilla.

-- 1. Create a materialized view for sales analysis by user loyalty status
CREATE MATERIALIZED VIEW `codefinity-442016.codeFinity_test.mv_sales_by_loyalty` 
OPTIONS(
  enable_refresh = true,
  refresh_interval_minutes = 60
) AS
SELECT 
  up.loyalty_status,
  COUNT(DISTINCT ps.user_id) AS user_count,
  COUNT(ps.sale_id) AS transaction_count,
  SUM(ps.quantity) AS total_items_sold,
  SUM(ps.quantity * ps.sale_price) AS total_revenue,
  AVG(ps.sale_price) AS avg_price_per_unit,
  MAX(PARSE_DATE('%Y-%m-%d', ps.sale_date)) AS last_sale_date
FROM 
  `codefinity-442016.codeFinity_test.product_sales_section4` ps
JOIN 
  `codefinity-442016.codeFinity_test.user_profile` up
  ON ps.user_id = up.user_id
GROUP BY 
  up.loyalty_status;

-- 2. Query the materialized view for much faster results
SELECT 
  loyalty_status,
  user_count,
  transaction_count,
  total_revenue,
  total_revenue / transaction_count AS avg_transaction_value,
  total_revenue / user_count AS revenue_per_user
FROM 
  `codefinity-442016.codeFinity_test.mv_sales_by_loyalty`
ORDER BY 
  total_revenue DESC;

Rajoitukset, jotka on hyvä tiedostaa

Materiaalinäkymillä on tärkeitä rajoituksia:

  • Tietyt tilalliset funktiot (kuten CURRENT_TIMESTAMP) eivät ole sallittuja;
  • Tuetut liitokset ja aggregoinnit rajoittuvat deterministisiin malleihin;
  • Pohjataulujen tulee sijaita samassa tietojoukossa materiaalinäkymän kanssa.

Nämä rajoitukset on tärkeä huomioida suunnittelussa, jotta näkymä pysyy automaattisesti päivittyvänä.

Esimerkki

Kojelauta, joka seuraa viikoittaisia myyntimittareita, voi kysyä materiaalinäkymää raakadatatietueen sijaan. Tämä parantaa latausaikoja merkittävästi ja pitää datan riittävän tuoreena.

Keskeinen huomio

Materiaalinäkymät ovat tehokas tapa skaalata BigQuery-työkuormia ja hallita kustannuksia. Ne soveltuvat parhaiten toistuviin kyselyihin, kojelautoihin ja raportointiin, joissa lähes reaaliaikainen päivitys riittää.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 4. Luku 1

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 4. Luku 1
some-alt