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

git-site-role 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 557b8c2f4fa Publishing website 2022/10/28 16:17:22 at commit a953195
557b8c2f4fa is described below

commit 557b8c2f4fa9f139e5f71c9102f2006157b50c31
Author: jenkins <[email protected]>
AuthorDate: Fri Oct 28 16:17:23 2022 +0000

    Publishing website 2022/10/28 16:17:22 at commit a953195
---
 website/generated-content/documentation/index.xml  | 114 ++++++++++++++++++---
 .../documentation/programming-guide/index.html     |  43 +++++---
 website/generated-content/sitemap.xml              |   2 +-
 3 files changed, 125 insertions(+), 34 deletions(-)

diff --git a/website/generated-content/documentation/index.xml 
b/website/generated-content/documentation/index.xml
index 65516094577..d27182ce04b 100644
--- a/website/generated-content/documentation/index.xml
+++ b/website/generated-content/documentation/index.xml
@@ -9248,8 +9248,19 @@ the user ids from a &lt;code>PCollection&lt;/code> of 
purchases one would write
 &lt;div class="highlight">&lt;pre class="chroma">&lt;code 
class="language-java" data-lang="java">&lt;span 
class="n">purchases&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="na">apply&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="n">Select&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="na">fieldNames&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="s">&amp;#34;userId&amp;#34;&lt;/span>&lt;span 
class="o">));&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
 &lt;/div>
 &lt;/div>
+&lt;div class='language-py snippet'>
+&lt;div class="notebook-skip code-snippet">
+&lt;a class="copy" type="button" data-bs-toggle="tooltip" 
data-bs-placement="bottom" title="Copy to clipboard">
+&lt;img src="/images/copy-icon.svg"/>
+&lt;/a>
+&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-py" 
data-lang="py">&lt;span class="n">input_pc&lt;/span> &lt;span 
class="o">=&lt;/span> &lt;span class="o">...&lt;/span> &lt;span class="c1"># 
{&amp;#34;user_id&amp;#34;: ...,&amp;#34;bank&amp;#34;: ..., 
&amp;#34;purchase_amount&amp;#34;: ...}&lt;/span>
+&lt;span class="n">output_pc&lt;/span> &lt;span class="o">=&lt;/span> &lt;span 
class="n">input_pc&lt;/span> &lt;span class="o">|&lt;/span> &lt;span 
class="n">beam&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="n">Select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span 
class="s2">&amp;#34;user_id&amp;#34;&lt;/span>&lt;span 
class="p">)&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
+&lt;/div>
+&lt;/div>
 &lt;h5 id="nested-fields">&lt;strong>Nested fields&lt;/strong>&lt;/h5>
-&lt;p>Individual nested fields can be specified using the dot operator. For 
example, to select just the postal code from the
+&lt;p class="language-py">Support for Nested fields hasn&amp;rsquo;t been 
developed for the Python SDK yet.&lt;/p>
+&lt;p class="language-go">Support for Nested fields hasn&amp;rsquo;t been 
developed for the Go SDK yet.&lt;/p>
+&lt;p class="language-java">Individual nested fields can be specified using 
the dot operator. For example, to select just the postal code from the
 shipping address one would write&lt;/p>
 &lt;div class='language-java snippet'>
 &lt;div class="notebook-skip code-snippet">
@@ -9259,8 +9270,21 @@ shipping address one would write&lt;/p>
 &lt;div class="highlight">&lt;pre class="chroma">&lt;code 
class="language-java" data-lang="java">&lt;span 
class="n">purchases&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="na">apply&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="n">Select&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="na">fieldNames&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="s">&amp;#34;shippingAddress.postCode&amp;#34;&lt;/span>&lt;span 
class="o">));&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
 &lt;/div>
 &lt;/div>
+&lt;!--
+&lt;div class='language-py snippet'>
+&lt;div class="notebook-skip code-snippet">
+&lt;a class="copy" type="button" data-bs-toggle="tooltip" 
data-bs-placement="bottom" title="Copy to clipboard">
+&lt;img src="/images/copy-icon.svg"/>
+&lt;/a>
+&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-py" 
data-lang="py">&lt;span class="n">input_pc&lt;/span> &lt;span 
class="o">=&lt;/span> &lt;span class="o">...&lt;/span> &lt;span class="c1"># 
{&amp;#34;user_id&amp;#34;: ..., &amp;#34;shipping_address&amp;#34;: 
&amp;#34;post_code&amp;#34;: ..., &amp;#34;bank&amp;#34;: ..., 
&amp;#34;purchase_amount&amp;#34;: ...}&lt;/span>
+&lt;span class="n">output_pc&lt;/span> &lt;span class="o">=&lt;/span> &lt;span 
class="n">input_pc&lt;/span> &lt;span class="o">|&lt;/span> &lt;span 
class="n">beam&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="n">Select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span 
class="n">post_code&lt;/span>&lt;span class="o">=&lt;/span>&lt;span 
class="k">lambda&lt;/span> &lt;span class="n">item&lt;/span>&lt;span 
class="p">:&lt;/span> &lt;span class="nb">str&lt;/span>&lt;span class="p">(&lt; 
[...]
+&lt;/div>
+&lt;/div>
+-->
 &lt;h5 id="wildcards">&lt;strong>Wildcards&lt;/strong>&lt;/h5>
-&lt;p>The * operator can be specified at any nesting level to represent all 
fields at that level. For example, to select all
+&lt;p class="language-py">Support for wildcards hasn&amp;rsquo;t been 
developed for the Python SDK yet.&lt;/p>
+&lt;p class="language-go">Support for wildcards hasn&amp;rsquo;t been 
developed for the Go SDK yet.&lt;/p>
+&lt;p class="language-java">The * operator can be specified at any nesting 
level to represent all fields at that level. For example, to select all
 shipping-address fields one would write&lt;/p>
 &lt;div class='language-java snippet'>
 &lt;div class="notebook-skip code-snippet">
@@ -9270,9 +9294,23 @@ shipping-address fields one would write&lt;/p>
 &lt;div class="highlight">&lt;pre class="chroma">&lt;code 
class="language-java" data-lang="java">&lt;span 
class="n">purchases&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="na">apply&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="n">Select&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="na">fieldNames&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="s">&amp;#34;shippingAddress.*&amp;#34;&lt;/span>&lt;span 
class="o">));&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
 &lt;/div>
 &lt;/div>
+&lt;!--
+&lt;div class='language-py snippet'>
+&lt;div class="notebook-skip code-snippet">
+&lt;a class="copy" type="button" data-bs-toggle="tooltip" 
data-bs-placement="bottom" title="Copy to clipboard">
+&lt;img src="/images/copy-icon.svg"/>
+&lt;/a>
+&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-py" 
data-lang="py">&lt;span 
class="c1">#TODO(https://github.com/apache/beam/issues/23275): Add support for 
projecting nested fields&lt;/span>
+&lt;span class="n">input_pc&lt;/span> &lt;span class="o">=&lt;/span> &lt;span 
class="o">...&lt;/span> &lt;span class="c1"># {&amp;#34;user_id&amp;#34;: ..., 
&amp;#34;shipping_address&amp;#34;: &amp;#34;post_code&amp;#34;: ..., 
&amp;#34;bank&amp;#34;: ..., &amp;#34;purchase_amount&amp;#34;: ...}&lt;/span>
+&lt;span class="n">output_pc&lt;/span> &lt;span class="o">=&lt;/span> &lt;span 
class="n">input_pc&lt;/span> &lt;span class="o">|&lt;/span> &lt;span 
class="n">beam&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="n">Select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span 
class="s2">&amp;#34;shipping_address.*&amp;#34;&lt;/span>&lt;span 
class="p">))&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
+&lt;/div>
+&lt;/div>
+-->
 &lt;h5 id="arrays">&lt;strong>Arrays&lt;/strong>&lt;/h5>
-&lt;p>An array field, where the array element type is a row, can also have 
subfields of the element type addressed. When
+&lt;p class="language-java">An array field, where the array element type is a 
row, can also have subfields of the element type addressed. When
 selected, the result is an array of the selected subfield type. For 
example&lt;/p>
+&lt;p class="language-py">Support for Array fields hasn&amp;rsquo;t been 
developed for the Python SDK yet.&lt;/p>
+&lt;p class="language-go">Support for Array fields hasn&amp;rsquo;t been 
developed for the Go SDK yet.&lt;/p>
 &lt;div class='language-java snippet'>
 &lt;div class="notebook-skip code-snippet">
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" 
data-bs-placement="bottom" title="Copy to clipboard">
@@ -9281,9 +9319,9 @@ selected, the result is an array of the selected subfield 
type. For example&lt;/
 &lt;div class="highlight">&lt;pre class="chroma">&lt;code 
class="language-java" data-lang="java">&lt;span 
class="n">purchases&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="na">apply&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="n">Select&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="na">fieldNames&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="s">&amp;#34;transactions[].bank&amp;#34;&lt;/span>&lt;span 
class="o">));&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
 &lt;/div>
 &lt;/div>
-&lt;p>Will result in a row containing an array field with element-type string, 
containing the list of banks for each
+&lt;p class="language-java">Will result in a row containing an array field 
with element-type string, containing the list of banks for each
 transaction.&lt;/p>
-&lt;p>While the use of [] brackets in the selector is recommended, to make it 
clear that array elements are being selected,
+&lt;p class="language-java">While the use of [] brackets in the selector is 
recommended, to make it clear that array elements are being selected,
 they can be omitted for brevity. In the future, array slicing will be 
supported, allowing selection of portions of the
 array.&lt;/p>
 &lt;h5 id="maps">&lt;strong>Maps&lt;/strong>&lt;/h5>
@@ -9317,6 +9355,8 @@ specific keys from the map. For example, given the 
following schema:&lt;/p>
 &lt;div class="highlight">&lt;pre class="chroma">&lt;code 
class="language-java" data-lang="java">&lt;span 
class="n">purchasesByType&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="na">apply&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="n">Select&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="na">fieldNames&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="s">&amp;#34;purchases{}.userId&amp;#34;&lt;/span>&lt;span 
class="o">));&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
 &lt;/div>
 &lt;/div>
+&lt;p class="language-py">Support for Map fields hasn&amp;rsquo;t been 
developed for the Python SDK yet.&lt;/p>
+&lt;p class="language-go">Support for Map fields hasn&amp;rsquo;t been 
developed for the Go SDK yet.&lt;/p>
 &lt;p>Will result in a row containing a map field with key-type string and 
value-type string. The selected map will contain
 all of the keys from the original map, and the values will be the userId 
contained in the purchase record.&lt;/p>
 &lt;p>While the use of {} brackets in the selector is recommended, to make it 
clear that map value elements are being selected,
@@ -9339,6 +9379,8 @@ could select only the userId and streetAddress fields as 
follows&lt;/p>
 &lt;div class="highlight">&lt;pre class="chroma">&lt;code 
class="language-java" data-lang="java">&lt;span 
class="n">purchases&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="na">apply&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="n">Select&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="na">fieldNames&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="s">&amp;#34;userId&amp;#34;&lt;/span>&lt;span class="o">,&lt;/span> 
&lt;span class="s">&amp;#34;shippingAddress [...]
 &lt;/div>
 &lt;/div>
+&lt;p class="language-py">Support for Nested fields hasn&amp;rsquo;t been 
developed for the Python SDK yet.&lt;/p>
+&lt;p class="language-go">Support for Nested fields hasn&amp;rsquo;t been 
developed for the Go SDK yet.&lt;/p>
 &lt;p>The resulting &lt;code>PCollection&lt;/code> will have the following 
schema&lt;/p>
 &lt;table>
 &lt;thead>
@@ -9368,6 +9410,8 @@ could select only the userId and streetAddress fields as 
follows&lt;/p>
 &lt;div class="highlight">&lt;pre class="chroma">&lt;code 
class="language-java" data-lang="java">&lt;span 
class="n">purchases&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="na">apply&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="n">Select&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="na">fieldNames&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="s">&amp;#34;userId&amp;#34;&lt;/span>&lt;span class="o">,&lt;/span> 
&lt;span class="s">&amp;#34;shippingAddress [...]
 &lt;/div>
 &lt;/div>
+&lt;p class="language-py">Support for Wildcards hasn&amp;rsquo;t been 
developed for the Python SDK yet.&lt;/p>
+&lt;p class="language-go">Support for Wildcards hasn&amp;rsquo;t been 
developed for the Go SDK yet.&lt;/p>
 &lt;p>Will result in the following schema&lt;/p>
 &lt;table>
 &lt;thead>
@@ -9415,7 +9459,9 @@ selected field will appear as its own array field. For 
example&lt;/p>
 &lt;div class="highlight">&lt;pre class="chroma">&lt;code 
class="language-java" data-lang="java">&lt;span 
class="n">purchases&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="na">apply&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="n">Select&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="na">fieldNames&lt;/span>&lt;span class="o">(&lt;/span> &lt;span 
class="s">&amp;#34;transactions.bank&amp;#34;&lt;/span>&lt;span 
class="o">,&lt;/span> &lt;span class="s">&amp;#34;tra [...]
 &lt;/div>
 &lt;/div>
-&lt;p>Will result in the following schema&lt;/p>
+&lt;p class="language-py">Support for nested fields hasn&amp;rsquo;t been 
developed for the Python SDK yet.&lt;/p>
+&lt;p class="language-go">Support for nested fields hasn&amp;rsquo;t been 
developed for the Go SDK yet.&lt;/p>
+&lt;p class="language-java">Will result in the following schema&lt;/p>
 &lt;table>
 &lt;thead>
 &lt;tr class="header">
@@ -9434,7 +9480,7 @@ selected field will appear as its own array field. For 
example&lt;/p>
 &lt;/tr>
 &lt;/tbody>
 &lt;/table>
-&lt;br/>
+&lt;br/>&lt;/p>
 &lt;p>Wildcard selections are equivalent to separately selecting each 
field.&lt;/p>
 &lt;p>Selecting fields nested inside of maps have the same semantics as 
arrays. If you select multiple fields from a map
 , then each selected field will be expanded to its own map at the top level. 
This means that the set of map keys will
@@ -9451,7 +9497,9 @@ a name conflict, as all selected fields are put in the 
same row schema. When thi
 &lt;div class="highlight">&lt;pre class="chroma">&lt;code 
class="language-java" data-lang="java">&lt;span 
class="n">purchases&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="na">apply&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="n">Select&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="na">flattenedSchema&lt;/span>&lt;span 
class="o">());&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
 &lt;/div>
 &lt;/div>
-&lt;p>Will result in the following schema&lt;/p>
+&lt;p class="language-py">Support for nested fields hasn&amp;rsquo;t been 
developed for the Python SDK yet.&lt;/p>
+&lt;p class="language-go">Support for nested fields hasn&amp;rsquo;t been 
developed for the Go SDK yet.&lt;/p>
+&lt;p class="language-java">Will result in the following schema&lt;/p>
 &lt;table>
 &lt;thead>
 &lt;tr class="header">
@@ -9502,22 +9550,37 @@ a name conflict, as all selected fields are put in the 
same row schema. When thi
 &lt;/tr>
 &lt;/tbody>
 &lt;/table>
-&lt;br/>
+&lt;br/>&lt;/p>
 &lt;h5 id="grouping-aggregations">&lt;strong>Grouping 
aggregations&lt;/strong>&lt;/h5>
-&lt;p>The &lt;code>Group&lt;/code> transform allows simply grouping data by 
any number of fields in the input schema, applying aggregations to
+&lt;p class="language-java">The &lt;code>Group&lt;/code> transform allows 
simply grouping data by any number of fields in the input schema, applying 
aggregations to
 those groupings, and storing the result of those aggregations in a new schema 
field. The output of the &lt;code>Group&lt;/code> transform
 has a schema with one field corresponding to each aggregation performed.&lt;/p>
-&lt;p>The simplest usage of &lt;code>Group&lt;/code> specifies no 
aggregations, in which case all inputs matching the provided set of fields
+&lt;p class="language-py">The &lt;code>GroupBy&lt;/code> transform allows 
simply grouping data by any number of fields in the input schema, applying 
aggregations to
+those groupings, and storing the result of those aggregations in a new schema 
field. The output of the &lt;code>GroupBy&lt;/code> transform
+has a schema with one field corresponding to each aggregation performed.&lt;/p>
+&lt;p class="language-java">The simplest usage of &lt;code>Group&lt;/code> 
specifies no aggregations, in which case all inputs matching the provided set 
of fields
+are grouped together into an &lt;code>ITERABLE&lt;/code> field. For 
example&lt;/p>
+&lt;p class="language-py">The simplest usage of &lt;code>GroupBy&lt;/code> 
specifies no aggregations, in which case all inputs matching the provided set 
of fields
 are grouped together into an &lt;code>ITERABLE&lt;/code> field. For 
example&lt;/p>
 &lt;div class='language-java snippet'>
 &lt;div class="notebook-skip code-snippet">
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" 
data-bs-placement="bottom" title="Copy to clipboard">
 &lt;img src="/images/copy-icon.svg"/>
 &lt;/a>
-&lt;div class="highlight">&lt;pre class="chroma">&lt;code 
class="language-java" data-lang="java">&lt;span 
class="n">purchases&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="na">apply&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="n">Group&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="na">byFieldNames&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="s">&amp;#34;userId&amp;#34;&lt;/span>&lt;span class="o">,&lt;/span> 
&lt;span class="s">&amp;#34;shippingAddres [...]
+&lt;div class="highlight">&lt;pre class="chroma">&lt;code 
class="language-java" data-lang="java">&lt;span 
class="n">purchases&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="na">apply&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="n">Group&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="na">byFieldNames&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="s">&amp;#34;userId&amp;#34;&lt;/span>&lt;span class="o">,&lt;/span> 
&lt;span class="s">&amp;#34;bank&amp;#34;& [...]
 &lt;/div>
 &lt;/div>
-&lt;p>The output schema of this is:&lt;/p>
+&lt;div class='language-py snippet'>
+&lt;div class="notebook-skip code-snippet">
+&lt;a class="copy" type="button" data-bs-toggle="tooltip" 
data-bs-placement="bottom" title="Copy to clipboard">
+&lt;img src="/images/copy-icon.svg"/>
+&lt;/a>
+&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-py" 
data-lang="py">&lt;span class="n">input_pc&lt;/span> &lt;span 
class="o">=&lt;/span> &lt;span class="o">...&lt;/span> &lt;span class="c1"># 
{&amp;#34;user_id&amp;#34;: ...,&amp;#34;bank&amp;#34;: ..., 
&amp;#34;purchase_amount&amp;#34;: ...}&lt;/span>
+&lt;span class="n">output_pc&lt;/span> &lt;span class="o">=&lt;/span> &lt;span 
class="n">input_pc&lt;/span> &lt;span class="o">|&lt;/span> &lt;span 
class="n">beam&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="n">GroupBy&lt;/span>&lt;span class="p">(&lt;/span>&lt;span 
class="s1">&amp;#39;user_id&amp;#39;&lt;/span>&lt;span 
class="p">,&lt;/span>&lt;span 
class="s1">&amp;#39;bank&amp;#39;&lt;/span>&lt;span 
class="p">)&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
+&lt;/div>
+&lt;/div>
+&lt;p class="language-go">Support for schema-aware grouping hasn&amp;rsquo;t 
been developed for the Go SDK yet.&lt;/p>
+&lt;p class="lanuage-java">The output schema of this is:&lt;/p>
 &lt;table>
 &lt;thead>
 &lt;tr class="header">
@@ -9528,7 +9591,7 @@ are grouped together into an &lt;code>ITERABLE&lt;/code> 
field. For example&lt;/
 &lt;tbody>
 &lt;tr>
 &lt;td>key&lt;/td>
-&lt;td>ROW{userId:STRING, streetAddress:STRING}&lt;/td>
+&lt;td>ROW{userId:STRING, bank:STRING}&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>values&lt;/td>
@@ -9565,6 +9628,19 @@ output schema:&lt;/p>
 &lt;span class="o">.&lt;/span>&lt;span 
class="na">aggregateField&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="s">&amp;#34;costCents&amp;#34;&lt;/span>&lt;span class="o">,&lt;/span> 
&lt;span class="n">Top&lt;/span>&lt;span class="o">.&amp;lt;&lt;/span>&lt;span 
class="n">Long&lt;/span>&lt;span class="o">&amp;gt;&lt;/span>&lt;span 
class="n">largestLongsFn&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="n">10&lt;/span>&lt;span class="o">),&lt;/span> &lt;span class="s">&amp;# 
[...]
 &lt;/div>
 &lt;/div>
+&lt;div class='language-py snippet'>
+&lt;div class="notebook-skip code-snippet">
+&lt;a class="copy" type="button" data-bs-toggle="tooltip" 
data-bs-placement="bottom" title="Copy to clipboard">
+&lt;img src="/images/copy-icon.svg"/>
+&lt;/a>
+&lt;div class="highlight">&lt;pre class="chroma">&lt;code class="language-py" 
data-lang="py">&lt;span class="n">input_pc&lt;/span> &lt;span 
class="o">=&lt;/span> &lt;span class="o">...&lt;/span> &lt;span class="c1"># 
{&amp;#34;user_id&amp;#34;: ..., &amp;#34;item_Id&amp;#34;: ..., 
&amp;#34;cost_cents&amp;#34;: ...}&lt;/span>
+&lt;span class="n">output_pc&lt;/span> &lt;span class="o">=&lt;/span> &lt;span 
class="n">input_pc&lt;/span> &lt;span class="o">|&lt;/span> &lt;span 
class="n">beam&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="n">GroupBy&lt;/span>&lt;span class="p">(&lt;/span>&lt;span 
class="s2">&amp;#34;user_id&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
+&lt;span class="o">.&lt;/span>&lt;span 
class="n">aggregate_field&lt;/span>&lt;span class="p">(&lt;/span>&lt;span 
class="s2">&amp;#34;item_id&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> 
&lt;span class="n">CountCombineFn&lt;/span>&lt;span class="p">,&lt;/span> 
&lt;span class="s2">&amp;#34;num_purchases&amp;#34;&lt;/span>&lt;span 
class="p">)&lt;/span>
+&lt;span class="o">.&lt;/span>&lt;span 
class="n">aggregate_field&lt;/span>&lt;span class="p">(&lt;/span>&lt;span 
class="s2">&amp;#34;cost_cents&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> 
&lt;span class="nb">sum&lt;/span>&lt;span class="p">,&lt;/span> &lt;span 
class="s2">&amp;#34;total_spendcents&amp;#34;&lt;/span>&lt;span 
class="p">)&lt;/span>
+&lt;span class="o">.&lt;/span>&lt;span 
class="n">aggregate_field&lt;/span>&lt;span class="p">(&lt;/span>&lt;span 
class="s2">&amp;#34;cost_cents&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> 
&lt;span class="n">TopCombineFn&lt;/span>&lt;span class="p">,&lt;/span> 
&lt;span class="s2">&amp;#34;top_purchases&amp;#34;&lt;/span>&lt;span 
class="p">)&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
+&lt;/div>
+&lt;/div>
+&lt;p class="language-go">Support for schema-aware grouping hasn&amp;rsquo;t 
been developed for the Go SDK yet.&lt;/p>
 &lt;p>The result of this aggregation will have the following schema:&lt;/p>
 &lt;table>
 &lt;thead>
@@ -9592,6 +9668,8 @@ subset of fields. For example, the following examples 
uses the Purchases schema
 that are likely associated with that transaction (both the user and product 
match that in the transaction). This is a
 &amp;ldquo;natural join&amp;rdquo; - one in which the same field names are 
used on both the left-hand and right-hand sides of the join -
 and is specified with the &lt;code>using&lt;/code> keyword:&lt;/p>
+&lt;p class="language-py">Support for joins hasn&amp;rsquo;t been developed 
for the Python SDK yet.&lt;/p>
+&lt;p class="language-go">Support for joins hasn&amp;rsquo;t been developed 
for the Go SDK yet.&lt;/p>
 &lt;div class='language-java snippet'>
 &lt;div class="notebook-skip code-snippet">
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" 
data-bs-placement="bottom" title="Copy to clipboard">
@@ -9603,7 +9681,7 @@ and is specified with the &lt;code>using&lt;/code> 
keyword:&lt;/p>
 &lt;span class="n">Join&lt;/span>&lt;span class="o">.&lt;/span>&lt;span 
class="na">innerJoin&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="n">reviews&lt;/span>&lt;span class="o">).&lt;/span>&lt;span 
class="na">using&lt;/span>&lt;span class="o">(&lt;/span>&lt;span 
class="s">&amp;#34;userId&amp;#34;&lt;/span>&lt;span class="o">,&lt;/span> 
&lt;span class="s">&amp;#34;productId&amp;#34;&lt;/span>&lt;span 
class="o">));&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
 &lt;/div>
 &lt;/div>
-&lt;p>The resulting schema is the following:&lt;/p>
+&lt;p class="language-java">The resulting schema is the following:&lt;/p>
 &lt;table>
 &lt;thead>
 &lt;tr class="header">
@@ -9622,10 +9700,12 @@ and is specified with the &lt;code>using&lt;/code> 
keyword:&lt;/p>
 &lt;/tr>
 &lt;/tbody>
 &lt;/table>
-&lt;br/>
+&lt;br/>&lt;/p>
 &lt;p>Each resulting row contains one Transaction and one Review that matched 
the join condition.&lt;/p>
 &lt;p>If the fields to match in the two schemas have different names, then the 
on function can be used. For example, if the
 Review schema named those fields differently than the Transaction schema, then 
we could write the following:&lt;/p>
+&lt;p class="language-py">Support for joins hasn&amp;rsquo;t been developed 
for the Python SDK yet.&lt;/p>
+&lt;p class="language-go">Support for joins hasn&amp;rsquo;t been developed 
for the Go SDK yet.&lt;/p>
 &lt;div class='language-java snippet'>
 &lt;div class="notebook-skip code-snippet">
 &lt;a class="copy" type="button" data-bs-toggle="tooltip" 
data-bs-placement="bottom" title="Copy to clipboard">
@@ -9647,6 +9727,8 @@ join record, providing a generalization of outer joins to 
joins with greater tha
 can optionally be expanded - providing individual joined records, as in the 
&lt;code>Join&lt;/code> transform. The output can also be
 processed in unexpanded format - providing the join key along with Iterables 
of all records from each input that matched
 that key.&lt;/p>
+&lt;p class="language-py">Support for joins hasn&amp;rsquo;t been developed 
for the Python SDK yet.&lt;/p>
+&lt;p class="language-go">Support for joins hasn&amp;rsquo;t been developed 
for the Go SDK yet.&lt;/p>
 &lt;h5 id="filtering-events">&lt;strong>Filtering events&lt;/strong>&lt;/h5>
 &lt;p>The &lt;code>Filter&lt;/code> transform can be configured with a set of 
predicates, each one based one specified fields. Only records for
 which all predicates return true will pass the filter. For example the 
following&lt;/p>
diff --git 
a/website/generated-content/documentation/programming-guide/index.html 
b/website/generated-content/documentation/programming-guide/index.html
index 0ae040730a0..eaa1713d9a7 100644
--- a/website/generated-content/documentation/programming-guide/index.html
+++ b/website/generated-content/documentation/programming-guide/index.html
@@ -2768,17 +2768,18 @@ process.</p><p>Addressing fields by name still retains 
type safety as Beam will
 is constructed. If a field is specified that does not exist in the schema, the 
pipeline will fail to launch. In addition,
 if a field is specified with a type that does not match the type of that field 
in the schema, the pipeline will fail to
 launch.</p><p>The following characters are not allowed in field names: . * [ ] 
{ }</p><h5 id=top-level-fields><strong>Top-level fields</strong></h5><p>In 
order to select a field at the top level of a schema, the name of the field is 
specified. For example, to select just
-the user ids from a <code>PCollection</code> of purchases one would write 
(using the <code>Select</code> transform)</p><div class="language-java 
snippet"><div class="notebook-skip code-snippet"><a class=copy type=button 
data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img 
src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code 
class=language-java data-lang=java><span class=n>purchases</span><span 
class=o>.</span><span class=na>apply</span><spa [...]
-shipping address one would write</p><div class="language-java snippet"><div 
class="notebook-skip code-snippet"><a class=copy type=button 
data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img 
src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code 
class=language-java data-lang=java><span class=n>purchases</span><span 
class=o>.</span><span class=na>apply</span><span class=o>(</span><span 
class=n>Select</span><span class=o>.</span><span class=na>f [...]
-shipping-address fields one would write</p><div class="language-java 
snippet"><div class="notebook-skip code-snippet"><a class=copy type=button 
data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img 
src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code 
class=language-java data-lang=java><span class=n>purchases</span><span 
class=o>.</span><span class=na>apply</span><span class=o>(</span><span 
class=n>Select</span><span class=o>.</span><span cla [...]
-selected, the result is an array of the selected subfield type. For 
example</p><div class="language-java snippet"><div class="notebook-skip 
code-snippet"><a class=copy type=button data-bs-toggle=tooltip 
data-bs-placement=bottom title="Copy to clipboard"><img 
src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code 
class=language-java data-lang=java><span class=n>purchases</span><span 
class=o>.</span><span class=na>apply</span><span class=o>(</span><span 
class=n>Select</ [...]
-transaction.</p><p>While the use of [] brackets in the selector is 
recommended, to make it clear that array elements are being selected,
+the user ids from a <code>PCollection</code> of purchases one would write 
(using the <code>Select</code> transform)</p><div class="language-java 
snippet"><div class="notebook-skip code-snippet"><a class=copy type=button 
data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img 
src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code 
class=language-java data-lang=java><span class=n>purchases</span><span 
class=o>.</span><span class=na>apply</span><spa [...]
+<span class=n>output_pc</span> <span class=o>=</span> <span 
class=n>input_pc</span> <span class=o>|</span> <span class=n>beam</span><span 
class=o>.</span><span class=n>Select</span><span class=p>(</span><span 
class=s2>&#34;user_id&#34;</span><span 
class=p>)</span></code></pre></div></div></div><h5 
id=nested-fields><strong>Nested fields</strong></h5><p 
class=language-py>Support for Nested fields hasn&rsquo;t been developed for the 
Python SDK yet.</p><p class=language-go>Support for Nested [...]
+shipping address one would write</p><div class="language-java snippet"><div 
class="notebook-skip code-snippet"><a class=copy type=button 
data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img 
src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code 
class=language-java data-lang=java><span class=n>purchases</span><span 
class=o>.</span><span class=na>apply</span><span class=o>(</span><span 
class=n>Select</span><span class=o>.</span><span class=na>f [...]
+shipping-address fields one would write</p><div class="language-java 
snippet"><div class="notebook-skip code-snippet"><a class=copy type=button 
data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img 
src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code 
class=language-java data-lang=java><span class=n>purchases</span><span 
class=o>.</span><span class=na>apply</span><span class=o>(</span><span 
class=n>Select</span><span class=o>.</span><span cla [...]
+selected, the result is an array of the selected subfield type. For 
example</p><p class=language-py>Support for Array fields hasn&rsquo;t been 
developed for the Python SDK yet.</p><p class=language-go>Support for Array 
fields hasn&rsquo;t been developed for the Go SDK yet.</p><div 
class="language-java snippet"><div class="notebook-skip code-snippet"><a 
class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom 
title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div  [...]
+transaction.</p><p class=language-java>While the use of [] brackets in the 
selector is recommended, to make it clear that array elements are being 
selected,
 they can be omitted for brevity. In the future, array slicing will be 
supported, allowing selection of portions of the
 array.</p><h5 id=maps><strong>Maps</strong></h5><p>A map field, where the 
value type is a row, can also have subfields of the value type addressed. When 
selected, the
 result is a map where the keys are the same as in the original map but the 
value is the specified type. Similar to
 arrays, the use of {} curly brackets in the selector is recommended, to make 
it clear that map value elements are being
 selected, they can be omitted for brevity. In the future, map key selectors 
will be supported, allowing selection of
-specific keys from the map. For example, given the following 
schema:</p><p><strong>PurchasesByType</strong></p><table><thead><tr 
class=header><th><b>Field Name</b></th><th><b>Field 
Type</b></th></tr></thead><tbody><tr><td>purchases</td><td>MAP{STRING, 
ROW{PURCHASE}</td></tr></tbody></table><br><p>The following</p><div 
class="language-java snippet"><div class="notebook-skip code-snippet"><a 
class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom 
title="Copy to clipboard"><i [...]
+specific keys from the map. For example, given the following 
schema:</p><p><strong>PurchasesByType</strong></p><table><thead><tr 
class=header><th><b>Field Name</b></th><th><b>Field 
Type</b></th></tr></thead><tbody><tr><td>purchases</td><td>MAP{STRING, 
ROW{PURCHASE}</td></tr></tbody></table><br><p>The following</p><div 
class="language-java snippet"><div class="notebook-skip code-snippet"><a 
class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom 
title="Copy to clipboard"><i [...]
 all of the keys from the original map, and the values will be the userId 
contained in the purchase record.</p><p>While the use of {} brackets in the 
selector is recommended, to make it clear that map value elements are being 
selected,
 they can be omitted for brevity. In the future, map slicing will be supported, 
allowing selection of specific keys from
 the map.</p><h4 id=662-schema-transforms>6.6.2. Schema transforms</h4><p>Beam 
provides a collection of transforms that operate natively on schemas. These 
transforms are very expressive,
@@ -2786,16 +2787,20 @@ allowing selections and aggregations in terms of named 
schema fields. Following
 schema transforms.</p><h5 id=selecting-input><strong>Selecting 
input</strong></h5><p>Often a computation is only interested in a subset of the 
fields in an input <code>PCollection</code>. The <code>Select</code> transform 
allows
 one to easily project out only the fields of interest. The resulting 
<code>PCollection</code> has a schema containing each selected
 field as a top-level field. Both top-level and nested fields can be selected. 
For example, in the Purchase schema, one
-could select only the userId and streetAddress fields as follows</p><div 
class="language-java snippet"><div class="notebook-skip code-snippet"><a 
class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom 
title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div 
class=highlight><pre class=chroma><code class=language-java 
data-lang=java><span class=n>purchases</span><span class=o>.</span><span 
class=na>apply</span><span class=o>(</span><span class=n>Select</span><span  
[...]
+could select only the userId and streetAddress fields as follows</p><div 
class="language-java snippet"><div class="notebook-skip code-snippet"><a 
class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom 
title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div 
class=highlight><pre class=chroma><code class=language-java 
data-lang=java><span class=n>purchases</span><span class=o>.</span><span 
class=na>apply</span><span class=o>(</span><span class=n>Select</span><span  
[...]
 top-level field in the resulting row. This means that if multiple fields are 
selected from the same nested row, each
-selected field will appear as its own array field. For example</p><div 
class="language-java snippet"><div class="notebook-skip code-snippet"><a 
class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom 
title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div 
class=highlight><pre class=chroma><code class=language-java 
data-lang=java><span class=n>purchases</span><span class=o>.</span><span 
class=na>apply</span><span class=o>(</span><span class=n>Select</span><span cl 
[...]
+selected field will appear as its own array field. For example</p><div 
class="language-java snippet"><div class="notebook-skip code-snippet"><a 
class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom 
title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div 
class=highlight><pre class=chroma><code class=language-java 
data-lang=java><span class=n>purchases</span><span class=o>.</span><span 
class=na>apply</span><span class=o>(</span><span class=n>Select</span><span cl 
[...]
 , then each selected field will be expanded to its own map at the top level. 
This means that the set of map keys will
 be copied, once for each selected field.</p><p>Sometimes different nested rows 
will have fields with the same name. Selecting multiple of these fields would 
result in
 a name conflict, as all selected fields are put in the same row schema. When 
this situation arises, the
-<code>Select.withFieldNameAs</code> builder method can be used to provide an 
alternate name for the selected field.</p><p>Another use of the Select 
transform is to flatten a nested schema into a single flat schema. For 
example</p><div class="language-java snippet"><div class="notebook-skip 
code-snippet"><a class=copy type=button data-bs-toggle=tooltip 
data-bs-placement=bottom title="Copy to clipboard"><img 
src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code 
class=l [...]
+<code>Select.withFieldNameAs</code> builder method can be used to provide an 
alternate name for the selected field.</p><p>Another use of the Select 
transform is to flatten a nested schema into a single flat schema. For 
example</p><div class="language-java snippet"><div class="notebook-skip 
code-snippet"><a class=copy type=button data-bs-toggle=tooltip 
data-bs-placement=bottom title="Copy to clipboard"><img 
src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code 
class=l [...]
 those groupings, and storing the result of those aggregations in a new schema 
field. The output of the <code>Group</code> transform
-has a schema with one field corresponding to each aggregation 
performed.</p><p>The simplest usage of <code>Group</code> specifies no 
aggregations, in which case all inputs matching the provided set of fields
-are grouped together into an <code>ITERABLE</code> field. For example</p><div 
class="language-java snippet"><div class="notebook-skip code-snippet"><a 
class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom 
title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div 
class=highlight><pre class=chroma><code class=language-java 
data-lang=java><span class=n>purchases</span><span class=o>.</span><span 
class=na>apply</span><span class=o>(</span><span class=n>Group</span><s [...]
+has a schema with one field corresponding to each aggregation performed.</p><p 
class=language-py>The <code>GroupBy</code> transform allows simply grouping 
data by any number of fields in the input schema, applying aggregations to
+those groupings, and storing the result of those aggregations in a new schema 
field. The output of the <code>GroupBy</code> transform
+has a schema with one field corresponding to each aggregation performed.</p><p 
class=language-java>The simplest usage of <code>Group</code> specifies no 
aggregations, in which case all inputs matching the provided set of fields
+are grouped together into an <code>ITERABLE</code> field. For example</p><p 
class=language-py>The simplest usage of <code>GroupBy</code> specifies no 
aggregations, in which case all inputs matching the provided set of fields
+are grouped together into an <code>ITERABLE</code> field. For example</p><div 
class="language-java snippet"><div class="notebook-skip code-snippet"><a 
class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom 
title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div 
class=highlight><pre class=chroma><code class=language-java 
data-lang=java><span class=n>purchases</span><span class=o>.</span><span 
class=na>apply</span><span class=o>(</span><span class=n>Group</span><s [...]
+<span class=n>output_pc</span> <span class=o>=</span> <span 
class=n>input_pc</span> <span class=o>|</span> <span class=n>beam</span><span 
class=o>.</span><span class=n>GroupBy</span><span class=p>(</span><span 
class=s1>&#39;user_id&#39;</span><span class=p>,</span><span 
class=s1>&#39;bank&#39;</span><span 
class=p>)</span></code></pre></div></div></div><p class=language-go>Support for 
schema-aware grouping hasn&rsquo;t been developed for the Go SDK yet.</p><p 
class=lanuage-java>The output [...]
 builders, as follows:</p><div class="language-java snippet"><div 
class="notebook-skip code-snippet"><a class=copy type=button 
data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img 
src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code 
class=language-java data-lang=java><span class=n>purchases</span><span 
class=o>.</span><span class=na>apply</span><span class=o>(</span><span 
class=n>Group</span><span class=o>.</span><span class=na>byFieldNames< [...]
     <span class=o>.</span><span class=na>withKeyField</span><span 
class=o>(</span><span class=s>&#34;userAndStreet&#34;</span><span 
class=o>)</span>
     <span class=o>.</span><span class=na>withValueField</span><span 
class=o>(</span><span class=s>&#34;matchingPurchases&#34;</span><span 
class=o>));</span></code></pre></div></div></div><p>It is quite common to apply 
one or more aggregations to the grouped result. Each aggregation can specify 
one or more fields
@@ -2804,15 +2809,19 @@ following application computes three aggregations 
grouped by userId, with all ag
 output schema:</p><div class="language-java snippet"><div class="notebook-skip 
code-snippet"><a class=copy type=button data-bs-toggle=tooltip 
data-bs-placement=bottom title="Copy to clipboard"><img 
src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code 
class=language-java data-lang=java><span class=n>purchases</span><span 
class=o>.</span><span class=na>apply</span><span class=o>(</span><span 
class=n>Group</span><span class=o>.</span><span class=na>byFieldNames</span>< 
[...]
     <span class=o>.</span><span class=na>aggregateField</span><span 
class=o>(</span><span class=s>&#34;itemId&#34;</span><span class=o>,</span> 
<span class=n>Count</span><span class=o>.</span><span 
class=na>combineFn</span><span class=o>(),</span> <span 
class=s>&#34;numPurchases&#34;</span><span class=o>)</span>
     <span class=o>.</span><span class=na>aggregateField</span><span 
class=o>(</span><span class=s>&#34;costCents&#34;</span><span class=o>,</span> 
<span class=n>Sum</span><span class=o>.</span><span 
class=na>ofLongs</span><span class=o>(),</span> <span 
class=s>&#34;totalSpendCents&#34;</span><span class=o>)</span>
-    <span class=o>.</span><span class=na>aggregateField</span><span 
class=o>(</span><span class=s>&#34;costCents&#34;</span><span class=o>,</span> 
<span class=n>Top</span><span class=o>.&lt;</span><span 
class=n>Long</span><span class=o>&gt;</span><span 
class=n>largestLongsFn</span><span class=o>(</span><span class=n>10</span><span 
class=o>),</span> <span class=s>&#34;topPurchases&#34;</span><span 
class=o>));</span></code></pre></div></div></div><p>The result of this 
aggregation will have [...]
+    <span class=o>.</span><span class=na>aggregateField</span><span 
class=o>(</span><span class=s>&#34;costCents&#34;</span><span class=o>,</span> 
<span class=n>Top</span><span class=o>.&lt;</span><span 
class=n>Long</span><span class=o>&gt;</span><span 
class=n>largestLongsFn</span><span class=o>(</span><span class=n>10</span><span 
class=o>),</span> <span class=s>&#34;topPurchases&#34;</span><span 
class=o>));</span></code></pre></div></div></div><div class="language-py 
snippet"><div class [...]
+<span class=n>output_pc</span> <span class=o>=</span> <span 
class=n>input_pc</span> <span class=o>|</span> <span class=n>beam</span><span 
class=o>.</span><span class=n>GroupBy</span><span class=p>(</span><span 
class=s2>&#34;user_id&#34;</span><span class=p>)</span>
+       <span class=o>.</span><span class=n>aggregate_field</span><span 
class=p>(</span><span class=s2>&#34;item_id&#34;</span><span class=p>,</span> 
<span class=n>CountCombineFn</span><span class=p>,</span> <span 
class=s2>&#34;num_purchases&#34;</span><span class=p>)</span>
+       <span class=o>.</span><span class=n>aggregate_field</span><span 
class=p>(</span><span class=s2>&#34;cost_cents&#34;</span><span 
class=p>,</span> <span class=nb>sum</span><span class=p>,</span> <span 
class=s2>&#34;total_spendcents&#34;</span><span class=p>)</span>
+       <span class=o>.</span><span class=n>aggregate_field</span><span 
class=p>(</span><span class=s2>&#34;cost_cents&#34;</span><span 
class=p>,</span> <span class=n>TopCombineFn</span><span class=p>,</span> <span 
class=s2>&#34;top_purchases&#34;</span><span 
class=p>)</span></code></pre></div></div></div><p class=language-go>Support for 
schema-aware grouping hasn&rsquo;t been developed for the Go SDK yet.</p><p>The 
result of this aggregation will have the following schema:</p><table><thead><tr 
[...]
 subset of fields. For example, the following examples uses the Purchases 
schema to join transactions with the reviews
 that are likely associated with that transaction (both the user and product 
match that in the transaction). This is a
 &ldquo;natural join&rdquo; - one in which the same field names are used on 
both the left-hand and right-hand sides of the join -
-and is specified with the <code>using</code> keyword:</p><div 
class="language-java snippet"><div class="notebook-skip code-snippet"><a 
class=copy type=button data-bs-toggle=tooltip data-bs-placement=bottom 
title="Copy to clipboard"><img src=/images/copy-icon.svg></a><div 
class=highlight><pre class=chroma><code class=language-java 
data-lang=java><span class=n>PCollection</span><span class=o>&lt;</span><span 
class=n>Transaction</span><span class=o>&gt;</span> <span 
class=n>transactions</sp [...]
+and is specified with the <code>using</code> keyword:</p><p 
class=language-py>Support for joins hasn&rsquo;t been developed for the Python 
SDK yet.</p><p class=language-go>Support for joins hasn&rsquo;t been developed 
for the Go SDK yet.</p><div class="language-java snippet"><div 
class="notebook-skip code-snippet"><a class=copy type=button 
data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img 
src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><c [...]
 <span class=n>PCollection</span><span class=o>&lt;</span><span 
class=n>Review</span><span class=o>&gt;</span> <span class=n>reviews</span> 
<span class=o>=</span> <span class=n>readReviews</span><span class=o>();</span>
 <span class=n>PCollection</span><span class=o>&lt;</span><span 
class=n>Row</span><span class=o>&gt;</span> <span class=n>joined</span> <span 
class=o>=</span> <span class=n>transactions</span><span class=o>.</span><span 
class=na>apply</span><span class=o>(</span>
-    <span class=n>Join</span><span class=o>.</span><span 
class=na>innerJoin</span><span class=o>(</span><span 
class=n>reviews</span><span class=o>).</span><span class=na>using</span><span 
class=o>(</span><span class=s>&#34;userId&#34;</span><span class=o>,</span> 
<span class=s>&#34;productId&#34;</span><span 
class=o>));</span></code></pre></div></div></div><p>The resulting schema is the 
following:</p><table><thead><tr class=header><th><b>Field 
Name</b></th><th><b>Field Type</b></th></tr> [...]
-Review schema named those fields differently than the Transaction schema, then 
we could write the following:</p><div class="language-java snippet"><div 
class="notebook-skip code-snippet"><a class=copy type=button 
data-bs-toggle=tooltip data-bs-placement=bottom title="Copy to clipboard"><img 
src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code 
class=language-java data-lang=java><span class=n>PCollection</span><span 
class=o>&lt;</span><span class=n>Row</span><span cla [...]
+    <span class=n>Join</span><span class=o>.</span><span 
class=na>innerJoin</span><span class=o>(</span><span 
class=n>reviews</span><span class=o>).</span><span class=na>using</span><span 
class=o>(</span><span class=s>&#34;userId&#34;</span><span class=o>,</span> 
<span class=s>&#34;productId&#34;</span><span 
class=o>));</span></code></pre></div></div></div><p class=language-java>The 
resulting schema is the following:</p><table><thead><tr 
class=header><th><b>Field Name</b></th><th><b>Fiel [...]
+Review schema named those fields differently than the Transaction schema, then 
we could write the following:</p><p class=language-py>Support for joins 
hasn&rsquo;t been developed for the Python SDK yet.</p><p 
class=language-go>Support for joins hasn&rsquo;t been developed for the Go SDK 
yet.</p><div class="language-java snippet"><div class="notebook-skip 
code-snippet"><a class=copy type=button data-bs-toggle=tooltip 
data-bs-placement=bottom title="Copy to clipboard"><img src=/images/copy [...]
     <span class=n>Join</span><span class=o>.</span><span 
class=na>innerJoin</span><span class=o>(</span><span 
class=n>reviews</span><span class=o>).</span><span class=na>on</span><span 
class=o>(</span>
       <span class=n>FieldsEqual</span>
          <span class=o>.</span><span class=na>left</span><span 
class=o>(</span><span class=s>&#34;userId&#34;</span><span class=o>,</span> 
<span class=s>&#34;productId&#34;</span><span class=o>)</span>
@@ -2822,7 +2831,7 @@ together based on equality of schema fields. Each 
<code>PCollection</code> can b
 join record, providing a generalization of outer joins to joins with greater 
than two input <code>PCollection</code>s. The output
 can optionally be expanded - providing individual joined records, as in the 
<code>Join</code> transform. The output can also be
 processed in unexpanded format - providing the join key along with Iterables 
of all records from each input that matched
-that key.</p><h5 id=filtering-events><strong>Filtering 
events</strong></h5><p>The <code>Filter</code> transform can be configured with 
a set of predicates, each one based one specified fields. Only records for
+that key.</p><p class=language-py>Support for joins hasn&rsquo;t been 
developed for the Python SDK yet.</p><p class=language-go>Support for joins 
hasn&rsquo;t been developed for the Go SDK yet.</p><h5 
id=filtering-events><strong>Filtering events</strong></h5><p>The 
<code>Filter</code> transform can be configured with a set of predicates, each 
one based one specified fields. Only records for
 which all predicates return true will pass the filter. For example the 
following</p><div class="language-java snippet"><div class="notebook-skip 
code-snippet"><a class=copy type=button data-bs-toggle=tooltip 
data-bs-placement=bottom title="Copy to clipboard"><img 
src=/images/copy-icon.svg></a><div class=highlight><pre class=chroma><code 
class=language-java data-lang=java><span class=n>purchases</span><span 
class=o>.</span><span class=na>apply</span><span class=o>(</span><span 
class=n>Fil [...]
     <span class=o>.</span><span class=na>whereFieldName</span><span 
class=o>(</span><span class=s>&#34;costCents&#34;</span><span class=o>,</span> 
<span class=n>c</span> <span class=o>-&gt;</span> <span class=n>c</span> <span 
class=o>&gt;</span> <span class=n>100</span> <span class=o>*</span> <span 
class=n>20</span><span class=o>)</span>
     <span class=o>.</span><span class=na>whereFieldName</span><span 
class=o>(</span><span class=s>&#34;shippingAddress.country&#34;</span><span 
class=o>,</span> <span class=n>c</span> <span class=o>-&gt;</span> <span 
class=n>c</span><span class=o>.</span><span class=na>equals</span><span 
class=o>(</span><span class=s>&#34;de&#34;</span><span 
class=o>));</span></code></pre></div></div></div><p>Will produce all purchases 
made from Germany with a purchase price of greater than twenty cents. [...]
@@ -5156,7 +5165,7 @@ const result: PCollection&lt;string&gt; = await pcoll
     )
   );
 
-</code></pre><h3 id=x-lang-transform-runner-support>13.3. Runner 
Support</h3><p>Currently, portable runners such as Flink, Spark, and the direct 
runner can be used with multi-language pipelines.</p><p>Dataflow supports 
multi-language pipelines through the Dataflow Runner v2 backend 
architecture.</p><h3 id=x-lang-transform-tips-troubleshooting>13.4 Tips and 
Troubleshooting</h3><p>For additional tips and troubleshooting information, see 
<a href=https://cwiki.apache.org/confluence/display/B [...]
+</code></pre><h3 id=x-lang-transform-runner-support>13.3. Runner 
Support</h3><p>Currently, portable runners such as Flink, Spark, and the direct 
runner can be used with multi-language pipelines.</p><p>Dataflow supports 
multi-language pipelines through the Dataflow Runner v2 backend 
architecture.</p><h3 id=x-lang-transform-tips-troubleshooting>13.4 Tips and 
Troubleshooting</h3><p>For additional tips and troubleshooting information, see 
<a href=https://cwiki.apache.org/confluence/display/B [...]
 <a href=https://www.apache.org>The Apache Software Foundation</a>
 | <a href=/privacy_policy>Privacy Policy</a>
 | <a href=/feed.xml>RSS Feed</a><br><br>Apache Beam, Apache, Beam, the Beam 
logo, and the Apache feather logo are either registered trademarks or 
trademarks of The Apache Software Foundation. All other products or name brands 
are trademarks of their respective holders, including The Apache Software 
Foundation.</div></div><div class="footer__cols__col 
footer__cols__col__logos"><div class=footer__cols__col--group><div 
class=footer__cols__col__logo><a href=https://github.com/apache/beam><im [...]
\ No newline at end of file
diff --git a/website/generated-content/sitemap.xml 
b/website/generated-content/sitemap.xml
index 2dd728732be..9f75ead9757 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>/blog/beam-2.42.0/</loc><lastmod>2022-10-17T09:50:38-07:00</lastmod></url><url><loc>/categories/blog/</loc><lastmod>2022-10-17T09:50:38-07:00</lastmod></url><url><loc>/blog/</loc><lastmod>2022-10-17T09:50:38-07:00</lastmod></url><url><loc>/categories/</loc><lastmod>2022-10-17T09:50:38-07:00</lastmod></url><url><loc>/catego
 [...]
\ 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>/blog/beam-2.42.0/</loc><lastmod>2022-10-17T09:50:38-07:00</lastmod></url><url><loc>/categories/blog/</loc><lastmod>2022-10-17T09:50:38-07:00</lastmod></url><url><loc>/blog/</loc><lastmod>2022-10-17T09:50:38-07:00</lastmod></url><url><loc>/categories/</loc><lastmod>2022-10-17T09:50:38-07:00</lastmod></url><url><loc>/catego
 [...]
\ No newline at end of file

Reply via email to