github.com/apache/beam/sdks/v2@v2.48.2/python/apache_beam/examples/snippets/transforms/aggregation/sum.py (about)

     1  # coding=utf-8
     2  #
     3  # Licensed to the Apache Software Foundation (ASF) under one or more
     4  # contributor license agreements.  See the NOTICE file distributed with
     5  # this work for additional information regarding copyright ownership.
     6  # The ASF licenses this file to You under the Apache License, Version 2.0
     7  # (the "License"); you may not use this file except in compliance with
     8  # the License.  You may obtain a copy of the License at
     9  #
    10  #    http://www.apache.org/licenses/LICENSE-2.0
    11  #
    12  # Unless required by applicable law or agreed to in writing, software
    13  # distributed under the License is distributed on an "AS IS" BASIS,
    14  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    15  # See the License for the specific language governing permissions and
    16  # limitations under the License.
    17  #
    18  
    19  
    20  def sum_globally(test=None):
    21    # [START sum_globally]
    22    import apache_beam as beam
    23  
    24    with beam.Pipeline() as pipeline:
    25      total = (
    26          pipeline
    27          | 'Create numbers' >> beam.Create([3, 4, 1, 2])
    28          | 'Sum values' >> beam.CombineGlobally(sum)
    29          | beam.Map(print))
    30      # [END sum_globally]
    31      if test:
    32        test(total)
    33  
    34  
    35  def sum_per_key(test=None):
    36    # [START sum_per_key]
    37    import apache_beam as beam
    38  
    39    with beam.Pipeline() as pipeline:
    40      totals_per_key = (
    41          pipeline
    42          | 'Create produce' >> beam.Create([
    43              ('🥕', 3),
    44              ('🥕', 2),
    45              ('🍆', 1),
    46              ('🍅', 4),
    47              ('🍅', 5),
    48              ('🍅', 3),
    49          ])
    50          | 'Sum values per key' >> beam.CombinePerKey(sum)
    51          | beam.Map(print))
    52      # [END sum_per_key]
    53      if test:
    54        test(totals_per_key)