BigQuery'ye Giriş
Matthew Forrest
Field CTO
-- WITH anahtar sözcükleri CTE’yi başlatır WITH our_cte AS ( SELECT column1, column2 FROM table )/* CTE parantez içindedir ve alttaki ana sorguda bir tablo gibi kullanılabilir */ SELECT * FROM our_cte
Alt sorgu
SELECT *
FROM (
SELECT order_id, status
FROM ecommerce.ecomm_order_status
) AS subquery
CTE
WITH cte_name AS (
SELECT order_id, status
FROM ecommerce.ecomm_order_status
)
SELECT *
FROM cte_name
-- Tüm CTE’ler WITH anahtar sözcüğüyle başlar WITH cte_name AS-- CTE parantez içindedir (SELECT col_1, col_2 FROM tablename WHERE col_1 > 10 )-- Yeni CTE 'cte_name' yalnızca bu sorgunun kapsamındadır SELECT * FROM cte_name LIMIT 10
WITH orders AS ( SELECT order_id, status FROM ecommerce.ecomm_order_status ),-- Ek CTE’ler WITH anahtar sözcüğünü tekrar etmez, virgülle ayrılır order_details AS ( SELECT orders.*, details.order_items FROM ecommerce.ecomm_orders details ```
WITH filtered_data AS (
SELECT *
FROM ecommerce.ecomm_orders
-- Burada, veriyi CTE içinde filtreliyoruz
WHERE order_status = 'delivered'
)
SELECT order_id, order_status
FROM filtered_data
| order_id | order_status |
|----------|--------------|
| 1 | delivered |
| 2 | delivered |
WITH precomputed_data AS (
SELECT order_id, SUM(payment_value) AS total
FROM ecommerce.ecomm_payments
GROUP BY order_id
)
SELECT *
FROM precomputed_data
WHERE total > 1000
| order_id | total |
|----------|---------|
| 1 | 50000 |
| 2 | 8000 |
WITH cte1 AS (
SELECT order_id, status
FROM ecommerce.ecomm_order_status
),
cte2 AS (
SELECT order_id, order_items
FROM ecommerce.ecomm_orders
)
SELECT *
FROM cte1
JOIN cte2 USING (order_id)
BigQuery'ye Giriş