Mga Plataporma sa Data sa Customer

Ang Pipe Syntax sa BigQuery: Paghimo sa SQL nga Mas Sayon, Mas Paspas, ug Mas Mabasa

Bisan kinsa nga nagtrabaho uban SQL nahibal-an ang relasyon sa gugma-pagdumot nga moabut uban niini. Ang SQL gamhanan, estandard, ug makapahayag—apan usa usab kini sa labing dili matukib nga mga pinulongan nga basahon ug ipadayon sa sukod. Kon mas lawom ang imong pangutana, mas lisud sabton kung unsa ang tinuod nga nahitabo ug sa unsang pagkasunod-sunod.

Kana tungod kay ang SQL dili modagayday sa han-ay nga imong gihunahuna. Magsugod ka pinaagi sa pagsulat SELECT, apan ang database wala gyud magproseso niana una. Ang makina magsugod sa FROM clause, dayon moapil sa datos, magsala niini, mag-aggregate niini, ug sa ulahi magamit ang paghan-ay ug projection. Ang resulta usa ka pangutana nga gisulat paatras relatibo sa paagi nga kini gipatuman.

Kini nga mismatch tali sa syntax ug execution naghimo sa SQL nga bug-at sa panghunahuna ug mahal sa computation. Ang mga analista kasagarang nagsalig sa mga subquery o Common Table Expressions (Mga CTE) aron i-simulate ang usa ka top-to-bottom nga dagan, pagdugang sa wala kinahanglana nga pagkakomplikado ug pag-usab. Bisan ang mga eksperyensiyado nga tiggamit nagtapos sa pag-debug sa mga nested blocks sa lohika imbis nga mag-focus sa problema nga ilang gisulbad.

Aron matubag kini, BigQuery gipatuman ang mga suporta sa parehas nga pagkasunud nga gibasa. Imbis nga isulat ang lohika sa sulod, isulat nimo kini nga lakang, sama sa usa ka pipeline sa datos-matag linya nga nagrepresentar sa usa ka lahi nga pagbag-o. Ang resulta mao ang SQL nga mas sayon ​​sabton, mas sayon ​​nga i-debug, ug mas intuitive alang sa modernong pagtuki sa datos.

google pipe syntax 1
Source: Google

Ang hulagway sa ibabaw naghulagway sa kinauyokan nga problema pipe syntax solves. Sa tradisyonal nga SQL, ang han-ay sa sintaktika (kung giunsa nimo pagsulat ang usa ka pangutana) nasayop sa semantiko nga pagkahan-ay (kung giunsa kini pagproseso sa database). Pananglitan, SELECT makita sa ibabaw, apan ang makina dili magtimbang-timbang niini hangtud human sa pag-apil, pagsala, paggrupo, ug paghan-ay mahuman.

Kini nga han-ay nagrepresentar sa lohikal ug syntactic nga dagan sa usa ka BigQuery pipe query - ibabaw ngadto sa ubos, wala ngadto sa tuo - nga nagsalamin kung giunsa ang database sa aktwal nga pagproseso sa datos.

  • GIKAN: Ang punto sa pagsugod sa bisan unsang pangutana sa tubo. Naghubit sa inisyal nga lamesa o subquery diin gikan ang datos. Sa pipe syntax, FROM mahimong mag-inusara ingon usa ka balido nga pangutana ug molihok ingon nga pagsulod sa usa ka sunud-sunod nga pipeline.
  • Apil: Gipalapad ang kasamtangan nga lamesa nga adunay dugang nga mga kolum ug mga laray gikan sa laing lamesa o subquery. Mahimong gamiton sa daghang mga higayon sa pagkasunodsunod (|> JOIN table USING (key)), nga naghimo sa wala-lawom nga pag-apil sa mga kahoy nga mabasa nga walay mga salag nga mga subquery.
  • SET: Gi-update ang kasamtangan nga mga kantidad sa kolum sa lugar (|> SET column = expression). Mga gimbuhaton sama sa SELECT * REPLACE(...) sa standard SQL apan mas mabasa ug modular kung gamiton isip lakang sa pipeline.
  • EXTEND: Nagdugang sa nakalkula nga mga kolum sa kasamtangan nga dataset (|> EXTEND expression AS new_column). Susama sa SELECT *, new_column sa standard SQL apan nagtugot sa incremental nga paghimo sa mga nakuha nga field tali sa ubang mga operasyon sama sa mga pag-apil ug mga filter.
  • DROP: Pagtangtang sa usa o daghang mga kolum gikan sa kasamtangan nga dataset (|> DROP column_name). Katumbas sa SELECT * EXCEPT(column) sa standard SQL ug sagad gigamit sa pagpayano sa output o pagpakunhod sa intermediate nga gidak-on sa datos.
  • SAAN: Pagsala sa mga laray nga makatagbaw sa usa ka kondisyon (|> WHERE condition). Mahimong makita bisan asa sa pipeline, sa wala pa o pagkahuman sa pagtipon, nga nagtangtang sa panginahanglan alang sa lainlaing mga keyword sama sa NAA o KUALIFY.
  • TAGUMPAY: Nagbuhat sa bug-os nga lamesa o gigrupo nga mga aggregations (|> AGGREGATE SUM(column) AS total GROUP BY category). Ilisan GROUP BY ug aggregate function sulod sa SELECT, pagpayano sa syntax ug pagpahiangay niini sa lohikal nga han-ay sa mga operasyon.
  • ORDER NI: Paghan-ay sa mga laray sa pagsaka o pagkanaog nga han-ay (|> ORDER BY column DESC). Naghimo usa ka gimando nga lamesa sa resulta nga mahimong sundan sa mga operator sama LIMIT.
  • UTLANAN: Gipugngan ang gidaghanon sa mga laray sa resulta (|> LIMIT 10). Nagtrabaho pagkahuman ORDER BY o sa wala ma-order nga mga lamesa, nagpreserbar sa natural nga pagkasunod-sunod sa mga filter ug mga aggregation.
  • TAWAG: Nagpatuman sa usa ka table-valued function o machine learning model gamit ang kasamtangan nga lamesa isip input (|> CALL ML.PREDICT(MODEL project.model_name)). Giwagtang ang panginahanglan alang sa nested function calls, paghimo og linear ug mabasa nga workflow.
  • PILI: Naghubit sa katapusang projection sa mga kolum nga iapil sa output (|> SELECT column1, column2). Nagsilbi isip panapos nga operasyon sa usa ka pipeline, susama sa katapusan SELECT sa usa ka standard nga pangutana sa SQL.

Sa ubos mao ang labing kasagaran nga mga senaryo diin ang pipe syntax nagpasimple sa lohika sa SQL, nga naghimo sa mga pangutana nga mas limpyo ug mas paspas sa pagtrabaho.

Pag-aggregate sa Data nga Walay Subquery

Ang mga panagsama diin ang SQL nagsugod sa pagbati sa sulod-gawas. Kung gusto nimo mag-ihap sa usa ka butang, unya ihap kana nga mga pag-ihap, kalit ka nga naa sa parentheses nga impyerno.

SQL

SELECT c_count, COUNT(*) AS custdist
FROM (
  SELECT c_custkey, COUNT(o_orderkey) AS c_count
  FROM customer
  JOIN orders ON c_custkey = o_custkey
  WHERE o_comment NOT LIKE '%unusual%packages%'
  GROUP BY c_custkey
)
GROUP BY c_count
ORDER BY custdist DESC;

Pipe Syntax

FROM customer
|> JOIN orders ON c_custkey = o_custkey
   AND o_comment NOT LIKE '%unusual%packages%'
|> AGGREGATE COUNT(o_orderkey) AS c_count GROUP BY c_custkey
|> AGGREGATE COUNT(*) AS custdist GROUP BY c_count
|> ORDER BY custdist DESC;

Wala nay nesting o double grouping. Matag lakang modagayday sa lohikal nga paagi ug mahimong usbon nga independente nga dili isulat pag-usab ang tibuok pangutana.

Paglimpyo ug Pag-usab sa mga Kolum nga Lakang

Kung kinahanglan nimo nga gamay ang letra nga teksto, kuwentaha ang mga total, ug ihulog ang mga dugang nga kolum, ang standard nga SQL nagpugos kanimo sa pagsulat pag-usab sa daghang. SELECT mga pahayag. Gipaila ang pipe syntax SET, EXTEND, Ug DROP mga operator aron magamit nimo ang mga pagbag-o sa pagkasunod-sunod.

SQL

SELECT o_custkey, ROUND(o_totalprice) AS total_price
FROM (
  SELECT
    o_custkey,
    o_totalprice,
    LOWER(o_orderstatus) AS o_orderstatus
  FROM orders
)
WHERE total_price > 1000;

Pipe Syntax

FROM orders
|> SET o_orderstatus = LOWER(o_orderstatus)
|> EXTEND ROUND(o_totalprice) AS total_price
|> WHERE total_price > 1000
|> SELECT o_custkey, total_price;

Ang matag operasyon nagtukod sa nauna, nga nagpadali sa pagsubay sa mga pagbag-o ug paggamit pag-usab sa lohika.

Pagsala Human sa Paghiusa nga Wala Nahinumdom nga "NAGANAA"

Usa sa mga quirks sa SQL mao nga ang timing sa mga pagsala mausab depende sa clause. Gigamit nimo WHERE sa dili pa mag-grupo ug HAVING pagkahuman, apan sa tinuud, pareho ra ang mga linya sa pagsala. Ang syntax sa tubo nagtugot kanimo sa paggamit WHERE makanunayon, bisan asa nimo ibutang kini.

SQL

SELECT department, COUNT(*) AS emp_count
FROM employees
WHERE active = TRUE
GROUP BY department
HAVING COUNT(*) > 5;

Pipe Syntax

FROM employees
|> WHERE active = TRUE
|> AGGREGATE COUNT(*) AS emp_count GROUP BY department
|> WHERE emp_count > 5;

Karon mahimo nimong isulat ang mga pagsala sa parehas nga han-ay nga imong gihunahuna bahin kanila: una nga isala ang datos, dayon igrupo kini, dayon isala pag-usab ang mga resulta.

Pag-debug sa mga Pangutana nga Wala'y Temporaryo nga mga Talaan

Sa standard nga SQL, ang pagsusi sa usa ka intermediate nga resulta nagkinahanglan sa paghimo sa usa ka temporaryo nga lamesa o pagputos sa code sa daghang mga CTE. Uban sa pipe syntax, mahimo nimong ipadagan ang pangutana hangtod sa bisan unsang punto sa pipeline.

SQL

WITH filtered AS (
  SELECT * FROM orders WHERE o_totalprice > 500
),
summed AS (
  SELECT o_custkey, SUM(o_totalprice) AS total
  FROM filtered GROUP BY o_custkey
)
SELECT * FROM summed WHERE total > 10000;

Pipe Syntax

FROM orders
|> WHERE o_totalprice > 500
|> AGGREGATE SUM(o_totalprice) AS total GROUP BY o_custkey
|> WHERE total > 10000;

Ang matag prefix sa pangutana kay ma-executable sa iyang kaugalingon, nga nagpasabut nga mahimo nimong "pagtan-aw" sa datos sa bisan unsang yugto. Kini usa ka mas limpyo, mas interactive nga paagi sa pag-debug ug pag-uli.

Pag-chaining sa mga Modelo ug Mga Kalihokan nga Walay Nesting

Kung nagtrabaho sa mga function nga gipabilhan sa lamesa o mga modelo sa BigQuery ML, ang nesting dali nga dili mabasa. Ang pipe syntax nagpuli sa mga nested nga tawag gamit ang linear chaining gamit ang CALL.

SQL

SELECT *
FROM ML.PREDICT(
  MODEL `project.sentiment_model`,
  (SELECT text FROM reviews)
);

Pipe Syntax

SELECT text FROM reviews
|> CALL ML.PREDICT(MODEL `project.sentiment_model`);

Kung mag-aplay ka daghang mga modelo o pagbag-o, i-stack ra nimo ang dugang nga mga linya sa TAWAG-wala’y kinahanglan nga parentesis.

Pag-pivote sa Data nga Wala’y Nested nga Pinili

Ang pag-pivote sa datos kanunay nga usa ka makahahadlok nga proseso, kasagaran nanginahanglan mga layer sa mga subquery. Ang syntax sa tubo nagpasimple niini ngadto sa usa ka sunod-sunod nga nagdagayday.

SQL

SELECT *
FROM (
  SELECT n_name, c_acctbal, c_mktsegment
  FROM customer JOIN nation USING (n_nationkey)
)
PIVOT(SUM(c_acctbal) FOR n_name IN ('PERU', 'KENYA', 'JAPAN'));

Pipe Syntax

FROM customer
|> JOIN nation USING (n_nationkey)
|> SELECT n_name, c_acctbal, c_mktsegment
|> PIVOT(SUM(c_acctbal) FOR n_name IN ('PERU', 'KENYA', 'JAPAN'));

Ang pangutana karon nagbasa sama sa usa ka istorya: pagsugod sa imong data, pag-apil niini, pagpili kung unsa ang imong kinahanglan, dayon pivot.

Ngano nga ang Pipe Syntax Usa ka Game-Changer

Ang pipe syntax wala mag-usab sa SQL-kini nagpatin-aw niini. Gipreserbar niini ang tanan nga gamhanan bahin sa deklaratibo nga istruktura sa SQL apan gitangtang ang pangisip nga overhead sa pagsulat nga lohika paatras.

Para sa mga data scientist, analista, ug engineer, kana nagpasabot:

  • Mas dali basahon, isulat, ug i-debug ang mga pangutana
  • Wala nay juggling subquery o CTEs alang sa yano nga mga buluhaton
  • Ang streamline nga lohika nga nagsalamin kung unsa ang imong gihunahuna
  • Mas maayo nga pasundayag ug mas gamay nga sobra nga mga operasyon

Ang pipe syntax sa BigQuery kay SQL para sa modernong panahon sa datos—linear, intuitive, ug optimized para sa real-world analytics.

William Karr

Si Bill mao ang Chief Data Scientist sa OpenINSIGHTS ug nagdumala sa mga operasyon sa syensya sa datos alang sa mga kliyente sa tingi. Siya adunay Ph.D. sa Mathematics gikan sa Unibersidad sa Illinois sa Urbana-Champaign ug usa ka sertipikasyon sa Agalon sa computational science ug engineering. Atol sa iyang… Dugang pa »
Balik sa ibabaw nga button
Close

Nakit-an ang Adblock

Nagsalig kami sa mga ad ug sponsorship aron mapadayon Martech Zone libre. Palihug ikonsiderar ang pag-disable sa imong ad blocker—o pagsuporta kanamo sa usa ka barato, walay ad nga tinuig nga membership ($10 US):

Pag-sign up Alang sa Usa ka Tinuig nga Membership