BigQuery facture a la requete selon les octets lus. Un Data Engineer Senior s...
BigQuery facture a la requete selon les octets lus. Un Data Engineer Senior sait reduire les couts de 90% avec le bon partitionnement et les bonnes pratiques — c est ce qu on evalue en entretien.
Quelle est la difference entre partitionnement et clustering dans BigQuery ? Comment choisissez-vous l un, l autre, ou les deux ?
-- Table partitionnee par date ET clusterisee
CREATE TABLE `projet.dataset.events`
PARTITION BY DATE(event_date)
CLUSTER BY user_id, event_type
OPTIONS (require_partition_filter = TRUE) -- force le filtre de partition
AS SELECT * FROM source_table;
-- Partition Expiration : supprimer auto les vieilles partitions
ALTER TABLE events
SET OPTIONS (partition_expiration_days = 365);
-- Cost estimation avant execution
EXPLAIN SELECT * FROM events WHERE event_date = '2025-01-01';
-- Voir les bytes processed estimes-- Top 10 requetes les plus couteuses du mois
SELECT
user_email,
query,
total_bytes_billed / POW(1024, 4) AS tb_billed,
total_bytes_billed / POW(1024, 4) * 6.25 AS estimated_cost_usd,
creation_time
FROM `region-eu`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE DATE(creation_time) >= DATE_SUB(CURRENT_DATE, INTERVAL 30 DAY)
AND statement_type = 'SELECT'
ORDER BY total_bytes_billed DESC
LIMIT 10;
-- Taille de chaque table dans un dataset
SELECT table_id,
row_count,
ROUND(size_bytes / POW(1024, 3), 2) AS size_gb
FROM `dataset`.__TABLES__
ORDER BY size_bytes DESC;-- Creer un modele de regression logistique en SQL
CREATE OR REPLACE MODEL `dataset.churn_model`
OPTIONS(model_type='logistic_reg', input_label_cols=['churned']) AS
SELECT age, nb_purchases, last_purchase_days, average_basket, churned
FROM `dataset.customers_features`;
-- Evaluer
SELECT * FROM ML.EVALUATE(MODEL `dataset.churn_model`);
-- Predire
SELECT customer_id, predicted_churned, predicted_churned_probs
FROM ML.PREDICT(MODEL `dataset.churn_model`,
(SELECT * FROM `dataset.new_customers`));| Niveau | Maitrise | Signal GO | NO-GO |
|---|---|---|---|
| Confirme | Partitionnement, clustering, INFORMATION_SCHEMA | Configure partitionnement + clustering, lit INFORMATION_SCHEMA pour les couts | Fait des SELECT * sans WHERE sur les partitions |
| Senior | BigQuery ML, Omni/BigLake, optimisation avancee | A utilise BigQuery ML pour un modele simple, connait BigLake, a optimise les couts de 50%+ | Ne sait pas pourquoi le partitionnement reduit les couts |
Premier entretien gratuit. Rapport GO/NO-GO sous 48h.