Kyselyn 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ää.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme