You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by gi...@apache.org on 2024/04/11 16:15:22 UTC

(beam) branch asf-site updated: Publishing website 2024/04/11 16:15:14 at commit 0e7b047

This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/beam.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 7ef9a7a5529 Publishing website 2024/04/11 16:15:14 at commit 0e7b047
7ef9a7a5529 is described below

commit 7ef9a7a552992685c82f49f7a9a219f7bb10ec4c
Author: runner <ru...@main-runner-xcffs-sxlkc>
AuthorDate: Thu Apr 11 16:15:14 2024 +0000

    Publishing website 2024/04/11 16:15:14 at commit 0e7b047
---
 .../blog/beam-yaml-release/index.html              |  11 +-
 website/generated-content/blog/index.xml           | 166 ++++++++-------------
 .../generated-content/categories/blog/index.xml    | 166 ++++++++-------------
 website/generated-content/documentation/index.xml  |   4 +-
 .../python/aggregation/distinct/index.html         |   2 +-
 website/generated-content/feed.xml                 | 166 ++++++++-------------
 website/generated-content/sitemap.xml              |   2 +-
 7 files changed, 205 insertions(+), 312 deletions(-)

diff --git a/website/generated-content/blog/beam-yaml-release/index.html b/website/generated-content/blog/beam-yaml-release/index.html
index 89700851e43..5533b86961c 100644
--- a/website/generated-content/blog/beam-yaml-release/index.html
+++ b/website/generated-content/blog/beam-yaml-release/index.html
@@ -58,7 +58,7 @@ custom parsers and other tools, that do not need to depend on Beam directly.</li
 capabilities, but as these features are added, backwards compatibility will be preserved. This way, once a pipeline
 is written, it will continue to work despite future released versions of the SDK.</li></ul><p>Overall, using Beam YAML provides a number of advantages. It makes pipeline development and management more efficient
 and effective, enabling users to focus on the business logic and data processing tasks, rather than spending time on
-low-level coding details.</p><h1 id=case-study-a-simple-business-analytics-use-case>Case Study: A simple business analytics use-case</h1><p>Let&rsquo;s take the following sample transaction data for a department store:</p><table><tr><td><strong>transaction_id</strong></td><td><strong>product_name</strong></td><td><strong>category</strong></td><td><strong>price</strong></td></tr><tr><td>T0012</td><td>Headphones</td><td>Electronics</td><td>59.99</td></tr><tr><td>T5034</td><td>Leather Jacke [...]
+low-level coding details.</p><h1 id=case-study-a-simple-business-analytics-use-case>Case Study: A simple business analytics use-case</h1><p>Let&rsquo;s take the following sample transaction data for a department store:</p><table><thead><tr><th style=text-align:left>transaction_id</th><th style=text-align:left>product_name</th><th style=text-align:left>category</th><th style=text-align:left>price</th></tr></thead><tbody><tr><td style=text-align:left>T0012</td><td style=text-align:left>Hea [...]
 department for audit purposes. Assuming the records are stored as a CSV file, a Beam YAML pipeline may look something
 like this:</p><p>Source code for this example can be found
 <a href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/yaml/examples/simple_filter.yaml>here</a>.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=cl><span class=nt>pipeline</span><span class=p>:</span><span class=w>
@@ -78,7 +78,7 @@ like this:</p><p>Source code for this example can be found
 </span></span></span><span class=line><span class=cl><span class=w>      </span><span class=nt>input</span><span class=p>:</span><span class=w> </span><span class=l>FilterWithCategory</span><span class=w>
 </span></span></span><span class=line><span class=cl><span class=w>      </span><span class=nt>config</span><span class=p>:</span><span class=w>
 </span></span></span><span class=line><span class=cl><span class=w>        </span><span class=nt>path</span><span class=p>:</span><span class=w> </span><span class=l>/path/to/output</span><span class=w>
-</span></span></span></code></pre></div><p>This would leave us with the following data:</p><table><tr><td><strong>transaction_id</strong></td><td><strong>product_name</strong></td><td><strong>category</strong></td><td><strong>price</strong></td></tr><tr><td>T0012</td><td>Headphones</td><td>Electronics</td><td>59.99</td></tr><tr><td>T0104</td><td>Headphones</td><td>Electronics</td><td>59.99</td></tr><tr><td>T0302</td><td>Monitor</td><td>Electronics</td><td>249.99</td></tr></table><p>Now,  [...]
+</span></span></span></code></pre></div><p>This would leave us with the following data:</p><table><thead><tr><th style=text-align:left>transaction_id</th><th style=text-align:left>product_name</th><th style=text-align:left>category</th><th style=text-align:left>price</th></tr></thead><tbody><tr><td style=text-align:left>T0012</td><td style=text-align:left>Headphones</td><td style=text-align:left>Electronics</td><td style=text-align:left>59.99</td></tr><tr><td style=text-align:left>T0104< [...]
 correct number is being ordered from the supplier. Let&rsquo;s also assume that they want to determine the total revenue for
 each item. This simple aggregation can follow the Filter from the previous example as such:</p><p>Source code for this example can be found
 <a href=https://github.com/apache/beam/blob/master/sdks/python/apache_beam/yaml/examples/simple_filter_and_combine.yaml>here</a>.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=cl><span class=nt>pipeline</span><span class=p>:</span><span class=w>
@@ -110,12 +110,13 @@ each item. This simple aggregation can follow the Filter from the previous examp
 </span></span></span><span class=line><span class=cl><span class=w>      </span><span class=nt>input</span><span class=p>:</span><span class=w> </span><span class=l>CountNumberSold</span><span class=w>
 </span></span></span><span class=line><span class=cl><span class=w>      </span><span class=nt>config</span><span class=p>:</span><span class=w>
 </span></span></span><span class=line><span class=cl><span class=w>        </span><span class=nt>path</span><span class=p>:</span><span class=w> </span><span class=l>/path/to/output</span><span class=w>
-</span></span></span></code></pre></div><p>This would leave us with the following data:</p><table><tr><td><strong>product_name</strong></td><td><strong>num_sold</strong></td><td><strong>total_revenue</strong></td></tr><tr><td>Headphones</td><td>2</td><td>119.98</td></tr><tr><td>Monitor</td><td>1</td><td>249.99</td></tr></table><p>While this was a relatively simple use-case, it shows the power of Beam YAML and how easy it is to go from business
+</span></span></span></code></pre></div><p>This would leave us with the following data:</p><table><thead><tr><th style=text-align:left>product_name</th><th style=text-align:left>num_sold</th><th style=text-align:left>total_revenue</th></tr></thead><tbody><tr><td style=text-align:left>Headphones</td><td style=text-align:left>2</td><td style=text-align:left>119.98</td></tr><tr><td style=text-align:left>Monitor</td><td style=text-align:left>1</td><td style=text-align:left>249.99</td></tr></ [...]
 use-case to a prototype data pipeline in just a few lines of YAML.</p><h1 id=getting-started-with-beam-yaml>Getting started with Beam YAML</h1><p>There are several resources that have been compiled to help users get familiar with Beam YAML.</p><h2 id=day-zero-notebook>Day Zero Notebook</h2><a target=_blank href=https://colab.research.google.com/github/apache/beam/blob/master/examples/notebooks/get-started/try-apache-beam-yaml.ipynb><img src=https://colab.research.google.com/assets/colab- [...]
 <a href=https://colab.sandbox.google.com/>Google Colab</a>, an online Python notebook environment with a free attachable
 runtime, containing some basic YAML pipeline examples.</p><h2 id=documentation>Documentation</h2><p>The Apache Beam website provides a set of <a href=https://beam.apache.org/documentation/sdks/yaml/>docs</a> that demonstrate the
-current capabilities of the Beam YAML SDK. These <a href=https://beam.apache.org/documentation/sdks/yaml/>docs</a> can be found
-on the website and offer a comprehensive overview of the SDK&rsquo;s functionality.</p><h2 id=examples>Examples</h2><p>A catalog of examples can be found <a href=https://beam.apache.org/releases/yamldoc/current/>here</a>. These examples showcase
+current capabilities of the Beam YAML SDK. There is also a catalog of currently-supported turnkey transforms found
+<a href=https://beam.apache.org/releases/yamldoc/current/>here</a>.</p><h2 id=examples>Examples</h2><p>A catalog of examples can be found
+<a href=https://github.com/apache/beam/tree/master/sdks/python/apache_beam/yaml/examples>here</a>. These examples showcase
 all the turnkey transforms that can be utilized in Beam YAML. There are also a number of Dataflow Cookbook examples
 that can be found <a href=https://github.com/GoogleCloudPlatform/dataflow-cookbook/tree/main/Python/yaml>here</a>.</p><h2 id=contributing>Contributing</h2><p>Developers who wish to help build out and add functionalities are welcome to start contributing to the effort in the
 Beam YAML module found <a href=https://github.com/apache/beam/tree/master/sdks/python/apache_beam/yaml>here</a>.</p><p>There is also a list of open <a href="https://github.com/apache/beam/issues?q=is%3Aopen+is%3Aissue+label%3Ayaml">bugs</a> found
diff --git a/website/generated-content/blog/index.xml b/website/generated-content/blog/index.xml
index fd3102da56f..07133f945c7 100644
--- a/website/generated-content/blog/index.xml
+++ b/website/generated-content/blog/index.xml
@@ -51,66 +51,46 @@ low-level coding details.&lt;/p>
 &lt;h1 id="case-study-a-simple-business-analytics-use-case">Case Study: A simple business analytics use-case&lt;/h1>
 &lt;p>Let&amp;rsquo;s take the following sample transaction data for a department store:&lt;/p>
 &lt;table>
+&lt;thead>
 &lt;tr>
-&lt;td>&lt;strong>transaction_id&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>product_name&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>category&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>price&lt;/strong>
-&lt;/td>
+&lt;th style="text-align:left">transaction_id&lt;/th>
+&lt;th style="text-align:left">product_name&lt;/th>
+&lt;th style="text-align:left">category&lt;/th>
+&lt;th style="text-align:left">price&lt;/th>
 &lt;/tr>
+&lt;/thead>
+&lt;tbody>
 &lt;tr>
-&lt;td>T0012
-&lt;/td>
-&lt;td>Headphones
-&lt;/td>
-&lt;td>Electronics
-&lt;/td>
-&lt;td>59.99
-&lt;/td>
+&lt;td style="text-align:left">T0012&lt;/td>
+&lt;td style="text-align:left">Headphones&lt;/td>
+&lt;td style="text-align:left">Electronics&lt;/td>
+&lt;td style="text-align:left">59.99&lt;/td>
 &lt;/tr>
 &lt;tr>
-&lt;td>T5034
-&lt;/td>
-&lt;td>Leather Jacket
-&lt;/td>
-&lt;td>Apparel
-&lt;/td>
-&lt;td>109.99
-&lt;/td>
+&lt;td style="text-align:left">T5034&lt;/td>
+&lt;td style="text-align:left">Leather Jacket&lt;/td>
+&lt;td style="text-align:left">Apparel&lt;/td>
+&lt;td style="text-align:left">109.99&lt;/td>
 &lt;/tr>
 &lt;tr>
-&lt;td>T0024
-&lt;/td>
-&lt;td>Aluminum Mug
-&lt;/td>
-&lt;td>Kitchen
-&lt;/td>
-&lt;td>29.99
-&lt;/td>
+&lt;td style="text-align:left">T0024&lt;/td>
+&lt;td style="text-align:left">Aluminum Mug&lt;/td>
+&lt;td style="text-align:left">Kitchen&lt;/td>
+&lt;td style="text-align:left">29.99&lt;/td>
 &lt;/tr>
 &lt;tr>
-&lt;td>T0104
-&lt;/td>
-&lt;td>Headphones
-&lt;/td>
-&lt;td>Electronics
-&lt;/td>
-&lt;td>59.99
-&lt;/td>
+&lt;td style="text-align:left">T0104&lt;/td>
+&lt;td style="text-align:left">Headphones&lt;/td>
+&lt;td style="text-align:left">Electronics&lt;/td>
+&lt;td style="text-align:left">59.99&lt;/td>
 &lt;/tr>
 &lt;tr>
-&lt;td>T0302
-&lt;/td>
-&lt;td>Monitor
-&lt;/td>
-&lt;td>Electronics
-&lt;/td>
-&lt;td>249.99
-&lt;/td>
+&lt;td style="text-align:left">T0302&lt;/td>
+&lt;td style="text-align:left">Monitor&lt;/td>
+&lt;td style="text-align:left">Electronics&lt;/td>
+&lt;td style="text-align:left">249.99&lt;/td>
 &lt;/tr>
+&lt;/tbody>
 &lt;/table>
 &lt;p>Now, let&amp;rsquo;s say that the business wants to get a record of transactions for all purchases made in the Electronics
 department for audit purposes. Assuming the records are stored as a CSV file, a Beam YAML pipeline may look something
@@ -136,46 +116,34 @@ like this:&lt;/p>
 &lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">path&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">/path/to/output&lt;/span>&lt;span class="w">
 &lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This would leave us with the following data:&lt;/p>
 &lt;table>
+&lt;thead>
 &lt;tr>
-&lt;td>&lt;strong>transaction_id&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>product_name&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>category&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>price&lt;/strong>
-&lt;/td>
+&lt;th style="text-align:left">transaction_id&lt;/th>
+&lt;th style="text-align:left">product_name&lt;/th>
+&lt;th style="text-align:left">category&lt;/th>
+&lt;th style="text-align:left">price&lt;/th>
 &lt;/tr>
+&lt;/thead>
+&lt;tbody>
 &lt;tr>
-&lt;td>T0012
-&lt;/td>
-&lt;td>Headphones
-&lt;/td>
-&lt;td>Electronics
-&lt;/td>
-&lt;td>59.99
-&lt;/td>
+&lt;td style="text-align:left">T0012&lt;/td>
+&lt;td style="text-align:left">Headphones&lt;/td>
+&lt;td style="text-align:left">Electronics&lt;/td>
+&lt;td style="text-align:left">59.99&lt;/td>
 &lt;/tr>
 &lt;tr>
-&lt;td>T0104
-&lt;/td>
-&lt;td>Headphones
-&lt;/td>
-&lt;td>Electronics
-&lt;/td>
-&lt;td>59.99
-&lt;/td>
+&lt;td style="text-align:left">T0104&lt;/td>
+&lt;td style="text-align:left">Headphones&lt;/td>
+&lt;td style="text-align:left">Electronics&lt;/td>
+&lt;td style="text-align:left">59.99&lt;/td>
 &lt;/tr>
 &lt;tr>
-&lt;td>T0302
-&lt;/td>
-&lt;td>Monitor
-&lt;/td>
-&lt;td>Electronics
-&lt;/td>
-&lt;td>249.99
-&lt;/td>
+&lt;td style="text-align:left">T0302&lt;/td>
+&lt;td style="text-align:left">Monitor&lt;/td>
+&lt;td style="text-align:left">Electronics&lt;/td>
+&lt;td style="text-align:left">249.99&lt;/td>
 &lt;/tr>
+&lt;/tbody>
 &lt;/table>
 &lt;p>Now, let&amp;rsquo;s say the business wants to determine how much of each Electronics item is being sold to ensure that the
 correct number is being ordered from the supplier. Let&amp;rsquo;s also assume that they want to determine the total revenue for
@@ -213,30 +181,25 @@ each item. This simple aggregation can follow the Filter from the previous examp
 &lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">path&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">/path/to/output&lt;/span>&lt;span class="w">
 &lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This would leave us with the following data:&lt;/p>
 &lt;table>
+&lt;thead>
 &lt;tr>
-&lt;td>&lt;strong>product_name&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>num_sold&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>total_revenue&lt;/strong>
-&lt;/td>
+&lt;th style="text-align:left">product_name&lt;/th>
+&lt;th style="text-align:left">num_sold&lt;/th>
+&lt;th style="text-align:left">total_revenue&lt;/th>
 &lt;/tr>
+&lt;/thead>
+&lt;tbody>
 &lt;tr>
-&lt;td>Headphones
-&lt;/td>
-&lt;td>2
-&lt;/td>
-&lt;td>119.98
-&lt;/td>
+&lt;td style="text-align:left">Headphones&lt;/td>
+&lt;td style="text-align:left">2&lt;/td>
+&lt;td style="text-align:left">119.98&lt;/td>
 &lt;/tr>
 &lt;tr>
-&lt;td>Monitor
-&lt;/td>
-&lt;td>1
-&lt;/td>
-&lt;td>249.99
-&lt;/td>
+&lt;td style="text-align:left">Monitor&lt;/td>
+&lt;td style="text-align:left">1&lt;/td>
+&lt;td style="text-align:left">249.99&lt;/td>
 &lt;/tr>
+&lt;/tbody>
 &lt;/table>
 &lt;p>While this was a relatively simple use-case, it shows the power of Beam YAML and how easy it is to go from business
 use-case to a prototype data pipeline in just a few lines of YAML.&lt;/p>
@@ -251,10 +214,11 @@ use-case to a prototype data pipeline in just a few lines of YAML.&lt;/p>
 runtime, containing some basic YAML pipeline examples.&lt;/p>
 &lt;h2 id="documentation">Documentation&lt;/h2>
 &lt;p>The Apache Beam website provides a set of &lt;a href="https://beam.apache.org/documentation/sdks/yaml/">docs&lt;/a> that demonstrate the
-current capabilities of the Beam YAML SDK. These &lt;a href="https://beam.apache.org/documentation/sdks/yaml/">docs&lt;/a> can be found
-on the website and offer a comprehensive overview of the SDK&amp;rsquo;s functionality.&lt;/p>
+current capabilities of the Beam YAML SDK. There is also a catalog of currently-supported turnkey transforms found
+&lt;a href="https://beam.apache.org/releases/yamldoc/current/">here&lt;/a>.&lt;/p>
 &lt;h2 id="examples">Examples&lt;/h2>
-&lt;p>A catalog of examples can be found &lt;a href="https://beam.apache.org/releases/yamldoc/current/">here&lt;/a>. These examples showcase
+&lt;p>A catalog of examples can be found
+&lt;a href="https://github.com/apache/beam/tree/master/sdks/python/apache_beam/yaml/examples">here&lt;/a>. These examples showcase
 all the turnkey transforms that can be utilized in Beam YAML. There are also a number of Dataflow Cookbook examples
 that can be found &lt;a href="https://github.com/GoogleCloudPlatform/dataflow-cookbook/tree/main/Python/yaml">here&lt;/a>.&lt;/p>
 &lt;h2 id="contributing">Contributing&lt;/h2>
diff --git a/website/generated-content/categories/blog/index.xml b/website/generated-content/categories/blog/index.xml
index c6bdf08a490..c4f07988713 100644
--- a/website/generated-content/categories/blog/index.xml
+++ b/website/generated-content/categories/blog/index.xml
@@ -51,66 +51,46 @@ low-level coding details.&lt;/p>
 &lt;h1 id="case-study-a-simple-business-analytics-use-case">Case Study: A simple business analytics use-case&lt;/h1>
 &lt;p>Let&amp;rsquo;s take the following sample transaction data for a department store:&lt;/p>
 &lt;table>
+&lt;thead>
 &lt;tr>
-&lt;td>&lt;strong>transaction_id&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>product_name&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>category&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>price&lt;/strong>
-&lt;/td>
+&lt;th style="text-align:left">transaction_id&lt;/th>
+&lt;th style="text-align:left">product_name&lt;/th>
+&lt;th style="text-align:left">category&lt;/th>
+&lt;th style="text-align:left">price&lt;/th>
 &lt;/tr>
+&lt;/thead>
+&lt;tbody>
 &lt;tr>
-&lt;td>T0012
-&lt;/td>
-&lt;td>Headphones
-&lt;/td>
-&lt;td>Electronics
-&lt;/td>
-&lt;td>59.99
-&lt;/td>
+&lt;td style="text-align:left">T0012&lt;/td>
+&lt;td style="text-align:left">Headphones&lt;/td>
+&lt;td style="text-align:left">Electronics&lt;/td>
+&lt;td style="text-align:left">59.99&lt;/td>
 &lt;/tr>
 &lt;tr>
-&lt;td>T5034
-&lt;/td>
-&lt;td>Leather Jacket
-&lt;/td>
-&lt;td>Apparel
-&lt;/td>
-&lt;td>109.99
-&lt;/td>
+&lt;td style="text-align:left">T5034&lt;/td>
+&lt;td style="text-align:left">Leather Jacket&lt;/td>
+&lt;td style="text-align:left">Apparel&lt;/td>
+&lt;td style="text-align:left">109.99&lt;/td>
 &lt;/tr>
 &lt;tr>
-&lt;td>T0024
-&lt;/td>
-&lt;td>Aluminum Mug
-&lt;/td>
-&lt;td>Kitchen
-&lt;/td>
-&lt;td>29.99
-&lt;/td>
+&lt;td style="text-align:left">T0024&lt;/td>
+&lt;td style="text-align:left">Aluminum Mug&lt;/td>
+&lt;td style="text-align:left">Kitchen&lt;/td>
+&lt;td style="text-align:left">29.99&lt;/td>
 &lt;/tr>
 &lt;tr>
-&lt;td>T0104
-&lt;/td>
-&lt;td>Headphones
-&lt;/td>
-&lt;td>Electronics
-&lt;/td>
-&lt;td>59.99
-&lt;/td>
+&lt;td style="text-align:left">T0104&lt;/td>
+&lt;td style="text-align:left">Headphones&lt;/td>
+&lt;td style="text-align:left">Electronics&lt;/td>
+&lt;td style="text-align:left">59.99&lt;/td>
 &lt;/tr>
 &lt;tr>
-&lt;td>T0302
-&lt;/td>
-&lt;td>Monitor
-&lt;/td>
-&lt;td>Electronics
-&lt;/td>
-&lt;td>249.99
-&lt;/td>
+&lt;td style="text-align:left">T0302&lt;/td>
+&lt;td style="text-align:left">Monitor&lt;/td>
+&lt;td style="text-align:left">Electronics&lt;/td>
+&lt;td style="text-align:left">249.99&lt;/td>
 &lt;/tr>
+&lt;/tbody>
 &lt;/table>
 &lt;p>Now, let&amp;rsquo;s say that the business wants to get a record of transactions for all purchases made in the Electronics
 department for audit purposes. Assuming the records are stored as a CSV file, a Beam YAML pipeline may look something
@@ -136,46 +116,34 @@ like this:&lt;/p>
 &lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">path&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">/path/to/output&lt;/span>&lt;span class="w">
 &lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This would leave us with the following data:&lt;/p>
 &lt;table>
+&lt;thead>
 &lt;tr>
-&lt;td>&lt;strong>transaction_id&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>product_name&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>category&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>price&lt;/strong>
-&lt;/td>
+&lt;th style="text-align:left">transaction_id&lt;/th>
+&lt;th style="text-align:left">product_name&lt;/th>
+&lt;th style="text-align:left">category&lt;/th>
+&lt;th style="text-align:left">price&lt;/th>
 &lt;/tr>
+&lt;/thead>
+&lt;tbody>
 &lt;tr>
-&lt;td>T0012
-&lt;/td>
-&lt;td>Headphones
-&lt;/td>
-&lt;td>Electronics
-&lt;/td>
-&lt;td>59.99
-&lt;/td>
+&lt;td style="text-align:left">T0012&lt;/td>
+&lt;td style="text-align:left">Headphones&lt;/td>
+&lt;td style="text-align:left">Electronics&lt;/td>
+&lt;td style="text-align:left">59.99&lt;/td>
 &lt;/tr>
 &lt;tr>
-&lt;td>T0104
-&lt;/td>
-&lt;td>Headphones
-&lt;/td>
-&lt;td>Electronics
-&lt;/td>
-&lt;td>59.99
-&lt;/td>
+&lt;td style="text-align:left">T0104&lt;/td>
+&lt;td style="text-align:left">Headphones&lt;/td>
+&lt;td style="text-align:left">Electronics&lt;/td>
+&lt;td style="text-align:left">59.99&lt;/td>
 &lt;/tr>
 &lt;tr>
-&lt;td>T0302
-&lt;/td>
-&lt;td>Monitor
-&lt;/td>
-&lt;td>Electronics
-&lt;/td>
-&lt;td>249.99
-&lt;/td>
+&lt;td style="text-align:left">T0302&lt;/td>
+&lt;td style="text-align:left">Monitor&lt;/td>
+&lt;td style="text-align:left">Electronics&lt;/td>
+&lt;td style="text-align:left">249.99&lt;/td>
 &lt;/tr>
+&lt;/tbody>
 &lt;/table>
 &lt;p>Now, let&amp;rsquo;s say the business wants to determine how much of each Electronics item is being sold to ensure that the
 correct number is being ordered from the supplier. Let&amp;rsquo;s also assume that they want to determine the total revenue for
@@ -213,30 +181,25 @@ each item. This simple aggregation can follow the Filter from the previous examp
 &lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">path&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">/path/to/output&lt;/span>&lt;span class="w">
 &lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This would leave us with the following data:&lt;/p>
 &lt;table>
+&lt;thead>
 &lt;tr>
-&lt;td>&lt;strong>product_name&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>num_sold&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>total_revenue&lt;/strong>
-&lt;/td>
+&lt;th style="text-align:left">product_name&lt;/th>
+&lt;th style="text-align:left">num_sold&lt;/th>
+&lt;th style="text-align:left">total_revenue&lt;/th>
 &lt;/tr>
+&lt;/thead>
+&lt;tbody>
 &lt;tr>
-&lt;td>Headphones
-&lt;/td>
-&lt;td>2
-&lt;/td>
-&lt;td>119.98
-&lt;/td>
+&lt;td style="text-align:left">Headphones&lt;/td>
+&lt;td style="text-align:left">2&lt;/td>
+&lt;td style="text-align:left">119.98&lt;/td>
 &lt;/tr>
 &lt;tr>
-&lt;td>Monitor
-&lt;/td>
-&lt;td>1
-&lt;/td>
-&lt;td>249.99
-&lt;/td>
+&lt;td style="text-align:left">Monitor&lt;/td>
+&lt;td style="text-align:left">1&lt;/td>
+&lt;td style="text-align:left">249.99&lt;/td>
 &lt;/tr>
+&lt;/tbody>
 &lt;/table>
 &lt;p>While this was a relatively simple use-case, it shows the power of Beam YAML and how easy it is to go from business
 use-case to a prototype data pipeline in just a few lines of YAML.&lt;/p>
@@ -251,10 +214,11 @@ use-case to a prototype data pipeline in just a few lines of YAML.&lt;/p>
 runtime, containing some basic YAML pipeline examples.&lt;/p>
 &lt;h2 id="documentation">Documentation&lt;/h2>
 &lt;p>The Apache Beam website provides a set of &lt;a href="https://beam.apache.org/documentation/sdks/yaml/">docs&lt;/a> that demonstrate the
-current capabilities of the Beam YAML SDK. These &lt;a href="https://beam.apache.org/documentation/sdks/yaml/">docs&lt;/a> can be found
-on the website and offer a comprehensive overview of the SDK&amp;rsquo;s functionality.&lt;/p>
+current capabilities of the Beam YAML SDK. There is also a catalog of currently-supported turnkey transforms found
+&lt;a href="https://beam.apache.org/releases/yamldoc/current/">here&lt;/a>.&lt;/p>
 &lt;h2 id="examples">Examples&lt;/h2>
-&lt;p>A catalog of examples can be found &lt;a href="https://beam.apache.org/releases/yamldoc/current/">here&lt;/a>. These examples showcase
+&lt;p>A catalog of examples can be found
+&lt;a href="https://github.com/apache/beam/tree/master/sdks/python/apache_beam/yaml/examples">here&lt;/a>. These examples showcase
 all the turnkey transforms that can be utilized in Beam YAML. There are also a number of Dataflow Cookbook examples
 that can be found &lt;a href="https://github.com/GoogleCloudPlatform/dataflow-cookbook/tree/main/Python/yaml">here&lt;/a>.&lt;/p>
 &lt;h2 id="contributing">Contributing&lt;/h2>
diff --git a/website/generated-content/documentation/index.xml b/website/generated-content/documentation/index.xml
index c472e9e1a44..cdb43b92a71 100644
--- a/website/generated-content/documentation/index.xml
+++ b/website/generated-content/documentation/index.xml
@@ -19075,12 +19075,12 @@ Pydoc&lt;/a
 class="language-py playground-snippet"
 data-sdk="python"
 data-path="SDK_PYTHON_Distinct"
-data-show="distinc"
+data-show="distinct"
 >&lt;/div>
 &lt;/div>
 &lt;div
 class="code-snippet code-snippet-playground"
-data-src="https://play.beam.apache.org/embedded?editable=1&amp;examples=%5b%7b%22path%22%3a%22SDK_PYTHON_Distinct%22%2c%22sdk%22%3a%22python%22%2c%22show%22%3a%22distinc%22%7d%5d"
+data-src="https://play.beam.apache.org/embedded?editable=1&amp;examples=%5b%7b%22path%22%3a%22SDK_PYTHON_Distinct%22%2c%22sdk%22%3a%22python%22%2c%22show%22%3a%22distinct%22%7d%5d"
 data-width="100%"
 data-height="700px"
 >&lt;/div>
diff --git a/website/generated-content/documentation/transforms/python/aggregation/distinct/index.html b/website/generated-content/documentation/transforms/python/aggregation/distinct/index.html
index 142bce8b83d..31e546b2a3e 100644
--- a/website/generated-content/documentation/transforms/python/aggregation/distinct/index.html
+++ b/website/generated-content/documentation/transforms/python/aggregation/distinct/index.html
@@ -36,7 +36,7 @@
 <img class=banner-img-mobile src=/images/banners/machine-learning/machine-learning-mobile.jpg alt="Machine Learning"></a></div></div><div class=swiper-pagination></div><div class=swiper-button-prev></div><div class=swiper-button-next></div></div><script src=/js/swiper-bundle.min.min.e0e8f81b0b15728d35ff73c07f42ddbb17a108d6f23df4953cb3e60df7ade675.js></script>
 <script src=/js/sliders/top-banners.min.afa7d0a19acf7a3b28ca369490b3d401a619562a2a4c9612577be2f66a4b9855.js></script>
 <script>function showSearch(){addPlaceholder();var e,t=document.querySelector(".searchBar");t.classList.remove("disappear"),e=document.querySelector("#iconsBar"),e.classList.add("disappear")}function addPlaceholder(){$("input:text").attr("placeholder","What are you looking for?")}function endSearch(){var e,t=document.querySelector(".searchBar");t.classList.add("disappear"),e=document.querySelector("#iconsBar"),e.classList.remove("disappear")}function blockScroll(){$("body").toggleClass(" [...]
-Pydoc</a></td></table><p><br><br><br></p><p>Produces a collection containing distinct elements of the input collection.</p><h2 id=examples>Examples</h2><p>In the following example, we create a pipeline with two <code>PCollection</code>s of produce.</p><p>We use <code>Distinct</code> to get rid of duplicate elements, which outputs a <code>PCollection</code> of all the unique elements.</p><div class=playground-wrapper><div class=playground-snippets><div class="language-py playground-snippe [...]
+Pydoc</a></td></table><p><br><br><br></p><p>Produces a collection containing distinct elements of the input collection.</p><h2 id=examples>Examples</h2><p>In the following example, we create a pipeline with two <code>PCollection</code>s of produce.</p><p>We use <code>Distinct</code> to get rid of duplicate elements, which outputs a <code>PCollection</code> of all the unique elements.</p><div class=playground-wrapper><div class=playground-snippets><div class="language-py playground-snippe [...]
 Pydoc</a></td></table><p><br><br><br></p><div class=feedback><p class=update>Last updated on 2024/04/11</p><h3>Have you found everything you were looking for?</h3><p class=description>Was it all useful and clear? Is there anything that you would like to change? Let us know!</p><button class=load-button><a href="https://docs.google.com/forms/d/e/1FAIpQLSfID7abne3GE6k6RdJIyZhPz2Gef7UkpggUEhTIDjjplHuxSA/viewform?usp=header_link" target=_blank>SEND FEEDBACK</a></button></div></div></div><foo [...]
 <a href=https://www.apache.org>The Apache Software Foundation</a>
 | <a href=/privacy_policy>Privacy Policy</a>
diff --git a/website/generated-content/feed.xml b/website/generated-content/feed.xml
index 7d3ca69c00a..f1ed90b123c 100644
--- a/website/generated-content/feed.xml
+++ b/website/generated-content/feed.xml
@@ -51,66 +51,46 @@ low-level coding details.&lt;/p>
 &lt;h1 id="case-study-a-simple-business-analytics-use-case">Case Study: A simple business analytics use-case&lt;/h1>
 &lt;p>Let&amp;rsquo;s take the following sample transaction data for a department store:&lt;/p>
 &lt;table>
+&lt;thead>
 &lt;tr>
-&lt;td>&lt;strong>transaction_id&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>product_name&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>category&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>price&lt;/strong>
-&lt;/td>
+&lt;th style="text-align:left">transaction_id&lt;/th>
+&lt;th style="text-align:left">product_name&lt;/th>
+&lt;th style="text-align:left">category&lt;/th>
+&lt;th style="text-align:left">price&lt;/th>
 &lt;/tr>
+&lt;/thead>
+&lt;tbody>
 &lt;tr>
-&lt;td>T0012
-&lt;/td>
-&lt;td>Headphones
-&lt;/td>
-&lt;td>Electronics
-&lt;/td>
-&lt;td>59.99
-&lt;/td>
+&lt;td style="text-align:left">T0012&lt;/td>
+&lt;td style="text-align:left">Headphones&lt;/td>
+&lt;td style="text-align:left">Electronics&lt;/td>
+&lt;td style="text-align:left">59.99&lt;/td>
 &lt;/tr>
 &lt;tr>
-&lt;td>T5034
-&lt;/td>
-&lt;td>Leather Jacket
-&lt;/td>
-&lt;td>Apparel
-&lt;/td>
-&lt;td>109.99
-&lt;/td>
+&lt;td style="text-align:left">T5034&lt;/td>
+&lt;td style="text-align:left">Leather Jacket&lt;/td>
+&lt;td style="text-align:left">Apparel&lt;/td>
+&lt;td style="text-align:left">109.99&lt;/td>
 &lt;/tr>
 &lt;tr>
-&lt;td>T0024
-&lt;/td>
-&lt;td>Aluminum Mug
-&lt;/td>
-&lt;td>Kitchen
-&lt;/td>
-&lt;td>29.99
-&lt;/td>
+&lt;td style="text-align:left">T0024&lt;/td>
+&lt;td style="text-align:left">Aluminum Mug&lt;/td>
+&lt;td style="text-align:left">Kitchen&lt;/td>
+&lt;td style="text-align:left">29.99&lt;/td>
 &lt;/tr>
 &lt;tr>
-&lt;td>T0104
-&lt;/td>
-&lt;td>Headphones
-&lt;/td>
-&lt;td>Electronics
-&lt;/td>
-&lt;td>59.99
-&lt;/td>
+&lt;td style="text-align:left">T0104&lt;/td>
+&lt;td style="text-align:left">Headphones&lt;/td>
+&lt;td style="text-align:left">Electronics&lt;/td>
+&lt;td style="text-align:left">59.99&lt;/td>
 &lt;/tr>
 &lt;tr>
-&lt;td>T0302
-&lt;/td>
-&lt;td>Monitor
-&lt;/td>
-&lt;td>Electronics
-&lt;/td>
-&lt;td>249.99
-&lt;/td>
+&lt;td style="text-align:left">T0302&lt;/td>
+&lt;td style="text-align:left">Monitor&lt;/td>
+&lt;td style="text-align:left">Electronics&lt;/td>
+&lt;td style="text-align:left">249.99&lt;/td>
 &lt;/tr>
+&lt;/tbody>
 &lt;/table>
 &lt;p>Now, let&amp;rsquo;s say that the business wants to get a record of transactions for all purchases made in the Electronics
 department for audit purposes. Assuming the records are stored as a CSV file, a Beam YAML pipeline may look something
@@ -136,46 +116,34 @@ like this:&lt;/p>
 &lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">path&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">/path/to/output&lt;/span>&lt;span class="w">
 &lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This would leave us with the following data:&lt;/p>
 &lt;table>
+&lt;thead>
 &lt;tr>
-&lt;td>&lt;strong>transaction_id&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>product_name&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>category&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>price&lt;/strong>
-&lt;/td>
+&lt;th style="text-align:left">transaction_id&lt;/th>
+&lt;th style="text-align:left">product_name&lt;/th>
+&lt;th style="text-align:left">category&lt;/th>
+&lt;th style="text-align:left">price&lt;/th>
 &lt;/tr>
+&lt;/thead>
+&lt;tbody>
 &lt;tr>
-&lt;td>T0012
-&lt;/td>
-&lt;td>Headphones
-&lt;/td>
-&lt;td>Electronics
-&lt;/td>
-&lt;td>59.99
-&lt;/td>
+&lt;td style="text-align:left">T0012&lt;/td>
+&lt;td style="text-align:left">Headphones&lt;/td>
+&lt;td style="text-align:left">Electronics&lt;/td>
+&lt;td style="text-align:left">59.99&lt;/td>
 &lt;/tr>
 &lt;tr>
-&lt;td>T0104
-&lt;/td>
-&lt;td>Headphones
-&lt;/td>
-&lt;td>Electronics
-&lt;/td>
-&lt;td>59.99
-&lt;/td>
+&lt;td style="text-align:left">T0104&lt;/td>
+&lt;td style="text-align:left">Headphones&lt;/td>
+&lt;td style="text-align:left">Electronics&lt;/td>
+&lt;td style="text-align:left">59.99&lt;/td>
 &lt;/tr>
 &lt;tr>
-&lt;td>T0302
-&lt;/td>
-&lt;td>Monitor
-&lt;/td>
-&lt;td>Electronics
-&lt;/td>
-&lt;td>249.99
-&lt;/td>
+&lt;td style="text-align:left">T0302&lt;/td>
+&lt;td style="text-align:left">Monitor&lt;/td>
+&lt;td style="text-align:left">Electronics&lt;/td>
+&lt;td style="text-align:left">249.99&lt;/td>
 &lt;/tr>
+&lt;/tbody>
 &lt;/table>
 &lt;p>Now, let&amp;rsquo;s say the business wants to determine how much of each Electronics item is being sold to ensure that the
 correct number is being ordered from the supplier. Let&amp;rsquo;s also assume that they want to determine the total revenue for
@@ -213,30 +181,25 @@ each item. This simple aggregation can follow the Filter from the previous examp
 &lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="nt">path&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="l">/path/to/output&lt;/span>&lt;span class="w">
 &lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>This would leave us with the following data:&lt;/p>
 &lt;table>
+&lt;thead>
 &lt;tr>
-&lt;td>&lt;strong>product_name&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>num_sold&lt;/strong>
-&lt;/td>
-&lt;td>&lt;strong>total_revenue&lt;/strong>
-&lt;/td>
+&lt;th style="text-align:left">product_name&lt;/th>
+&lt;th style="text-align:left">num_sold&lt;/th>
+&lt;th style="text-align:left">total_revenue&lt;/th>
 &lt;/tr>
+&lt;/thead>
+&lt;tbody>
 &lt;tr>
-&lt;td>Headphones
-&lt;/td>
-&lt;td>2
-&lt;/td>
-&lt;td>119.98
-&lt;/td>
+&lt;td style="text-align:left">Headphones&lt;/td>
+&lt;td style="text-align:left">2&lt;/td>
+&lt;td style="text-align:left">119.98&lt;/td>
 &lt;/tr>
 &lt;tr>
-&lt;td>Monitor
-&lt;/td>
-&lt;td>1
-&lt;/td>
-&lt;td>249.99
-&lt;/td>
+&lt;td style="text-align:left">Monitor&lt;/td>
+&lt;td style="text-align:left">1&lt;/td>
+&lt;td style="text-align:left">249.99&lt;/td>
 &lt;/tr>
+&lt;/tbody>
 &lt;/table>
 &lt;p>While this was a relatively simple use-case, it shows the power of Beam YAML and how easy it is to go from business
 use-case to a prototype data pipeline in just a few lines of YAML.&lt;/p>
@@ -251,10 +214,11 @@ use-case to a prototype data pipeline in just a few lines of YAML.&lt;/p>
 runtime, containing some basic YAML pipeline examples.&lt;/p>
 &lt;h2 id="documentation">Documentation&lt;/h2>
 &lt;p>The Apache Beam website provides a set of &lt;a href="https://beam.apache.org/documentation/sdks/yaml/">docs&lt;/a> that demonstrate the
-current capabilities of the Beam YAML SDK. These &lt;a href="https://beam.apache.org/documentation/sdks/yaml/">docs&lt;/a> can be found
-on the website and offer a comprehensive overview of the SDK&amp;rsquo;s functionality.&lt;/p>
+current capabilities of the Beam YAML SDK. There is also a catalog of currently-supported turnkey transforms found
+&lt;a href="https://beam.apache.org/releases/yamldoc/current/">here&lt;/a>.&lt;/p>
 &lt;h2 id="examples">Examples&lt;/h2>
-&lt;p>A catalog of examples can be found &lt;a href="https://beam.apache.org/releases/yamldoc/current/">here&lt;/a>. These examples showcase
+&lt;p>A catalog of examples can be found
+&lt;a href="https://github.com/apache/beam/tree/master/sdks/python/apache_beam/yaml/examples">here&lt;/a>. These examples showcase
 all the turnkey transforms that can be utilized in Beam YAML. There are also a number of Dataflow Cookbook examples
 that can be found &lt;a href="https://github.com/GoogleCloudPlatform/dataflow-cookbook/tree/main/Python/yaml">here&lt;/a>.&lt;/p>
 &lt;h2 id="contributing">Contributing&lt;/h2>
diff --git a/website/generated-content/sitemap.xml b/website/generated-content/sitemap.xml
index 7939a30a8a1..afded644427 100644
--- a/website/generated-content/sitemap.xml
+++ b/website/generated-content/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>/categories/blog/</loc><lastmod>2024-04-11T09:49:08-04:00</lastmod></url><url><loc>/blog/</loc><lastmod>2024-04-11T09:49:08-04:00</lastmod></url><url><loc>/categories/</loc><lastmod>2024-04-11T09:49:08-04:00</lastmod></url><url><loc>/blog/beam-yaml-release/</loc><lastmod>2024-04-11T09:49:08-04:00</lastmod></url><url><loc>/ [...]
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml"><url><loc>/categories/blog/</loc><lastmod>2024-04-11T12:09:54-04:00</lastmod></url><url><loc>/blog/</loc><lastmod>2024-04-11T12:09:54-04:00</lastmod></url><url><loc>/categories/</loc><lastmod>2024-04-11T12:09:54-04:00</lastmod></url><url><loc>/blog/beam-yaml-release/</loc><lastmod>2024-04-11T12:09:54-04:00</lastmod></url><url><loc>/ [...]
\ No newline at end of file