# Google's SQL dialect added a \`|\>\` pipe operator

**URL:** <https://forum.elixirforum.com/t/googles-sql-dialect-added-a-pipe-operator/69387>\
**Category:** Discussions\
**Tags:** syntax, sql\
**Created:** [February 13, 2025, 6:17pm UTC](https://forum.elixirforum.com/t/googles-sql-dialect-added-a-pipe-operator/69387 "2025-02-13T18:17:47Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![feviskus](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/feviskus/32/11114_2.png) [@feviskus](https://forum.elixirforum.com/u/feviskus)\
**Post date:** [February 13, 2025, 6:17pm UTC](https://forum.elixirforum.com/t/googles-sql-dialect-added-a-pipe-operator/69387/1 "2025-02-13T18:17:47Z")

</div>

From here: [Work with pipe query syntax &nbsp;|&nbsp; BigQuery &nbsp;|&nbsp; Google Cloud Documentation](https://cloud.google.com/bigquery/docs/pipe-syntax-guide)  
HN: [SQL pipe syntax available in public preview in BigQuery | Hacker News](https://news.ycombinator.com/item?id=42998904)

Example usage:

```sql
-- Filter items with no sales.
FROM Produce
|> WHERE sales > 0;

-- Compute total sales by item.
FROM Produce
|> WHERE sales > 0
|> AGGREGATE SUM(sales) AS total_sales, COUNT(*) AS num_sales
   GROUP BY item;

```

Thought it could be worth mentioning, as it shows how Elixir proceeds to influence other languages.

---

<div class="post-metadata">

**Author:** ![cmo](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cmo/32/19618_2.png) [@cmo](https://forum.elixirforum.com/u/cmo)\
**Post date:** [February 13, 2025, 10:17pm UTC](https://forum.elixirforum.com/t/googles-sql-dialect-added-a-pipe-operator/69387/2 "2025-02-13T22:17:30Z")

</div>

Brings to mind [PRQL](https://prql-lang.org/), which is a much larger change to query authoring.

---

<div class="post-metadata">

**Author:** ![sodapopcan](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sodapopcan/32/34668_2.png) [@sodapopcan](https://forum.elixirforum.com/u/sodapopcan)\
**Post date:** [February 13, 2025, 10:46pm UTC](https://forum.elixirforum.com/t/googles-sql-dialect-added-a-pipe-operator/69387/3 "2025-02-13T22:46:32Z")

</div>

To be “that guy,” Elixir took from `|>` from F#. Though perhaps someone will come along and tell me where F# took it from 🙃

---

<div class="post-metadata">

**Author:** ![acrolink](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/acrolink/32/8985_2.png) [@acrolink](https://forum.elixirforum.com/u/acrolink)\
**Post date:** [February 13, 2025, 10:52pm UTC](https://forum.elixirforum.com/t/googles-sql-dialect-added-a-pipe-operator/69387/4 "2025-02-13T22:52:56Z")

</div>

For me, `|>` belongs only to `Elixir`. I will not consider working with any wannabes 🙂

---

<div class="post-metadata">

**Author:** ![sodapopcan](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sodapopcan/32/34668_2.png) [@sodapopcan](https://forum.elixirforum.com/u/sodapopcan)\
**Post date:** [February 13, 2025, 11:06pm UTC](https://forum.elixirforum.com/t/googles-sql-dialect-added-a-pipe-operator/69387/5 "2025-02-13T23:06:17Z")

</div>

Haha, I agree. JavaScript might be getting it and I was watching a video on it. The guy kept calling it “the F# operator” and it was annoying me 😅 I didn’t lose any sleep over it, though 🙃

---

<div class="post-metadata">

**Author:** ![cmo](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cmo/32/19618_2.png) [@cmo](https://forum.elixirforum.com/u/cmo)\
**Post date:** [February 14, 2025, 12:07am UTC](https://forum.elixirforum.com/t/googles-sql-dialect-added-a-pipe-operator/69387/6 "2025-02-14T00:07:59Z")

</div>

> **[Archeological Semiotics: The Birth of the Pipeline Symbol, 1994](https://learn.microsoft.com/en-au/archive/blogs/dsyme/archeological-semiotics-the-birth-of-the-pipeline-symbol-1994)**

---

<div class="post-metadata">

**Author:** ![sodapopcan](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/sodapopcan/32/34668_2.png) [@sodapopcan](https://forum.elixirforum.com/u/sodapopcan)\
**Post date:** [February 14, 2025, 1:41am UTC](https://forum.elixirforum.com/t/googles-sql-dialect-added-a-pipe-operator/69387/7 "2025-02-14T01:41:55Z")

</div>

And the prophecy is fulfilled!

---

<div class="post-metadata">

**Author:** ![codeanpeace](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/codeanpeace/32/10278_2.png) [@codeanpeace](https://forum.elixirforum.com/u/codeanpeace)\
**Post date:** [February 14, 2025, 1:49am UTC](https://forum.elixirforum.com/t/googles-sql-dialect-added-a-pipe-operator/69387/8 "2025-02-14T01:49:04Z")

</div>

Really enjoyed that article on archeological semiotics and how it dropped a bunch of lore i.e. the original email thread. Well worth the read and really humanizes how the pipeline symbol came to be!

To summarize, `|>` was carried over from Isabelle/ML…

Now if we continue digging, [The Early History of F#](https://fsharp.org/history/hopl-final/hopl-fsharp.pdf), also written by Don Syme aka the creator of F# unsurprisingly mentions the “obvious semiotic inspiration from UNIX pipes.” So this naturally begs the question of how the UNIX pipe operator came to be? Well here’s another fun tidbit of archeological semiotics …

> Though Mahoney’s interview suggests that the original symbol for pipes was “_\>_ ,” in the 1994 book, “A Quarter Century of Unix,” McIlroy remembers when Thompson decided the symbol for pipes should instead be “|.” Thompson made the change “for a talk in London, because he couldn’t bear to reveal _my_ ugly syntax.”  
> source: [Pipe: How the System Call That Ties Unix Together Came About](https://thenewstack.io/pipe-how-the-system-call-that-ties-unix-together-came-about/)

So perhaps it went from `>` :icon_arrow: `|` :icon_arrow: `|>` 🤯
