[ 
https://issues.apache.org/jira/browse/BEAM-8045?focusedWorklogId=315791&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-315791
 ]

ASF GitHub Bot logged work on BEAM-8045:
----------------------------------------

                Author: ASF GitHub Bot
            Created on: 20/Sep/19 16:55
            Start Date: 20/Sep/19 16:55
    Worklog Time Spent: 10m 
      Work Description: aaltay commented on pull request #9406: [BEAM-8045] 
Custom windows patterns
URL: https://github.com/apache/beam/pull/9406#discussion_r326717581
 
 

 ##########
 File path: website/src/documentation/patterns/custom-windows.md
 ##########
 @@ -0,0 +1,112 @@
+---
+layout: section
+title: "Custom window patterns"
+section_menu: section-menu/documentation.html
+permalink: /documentation/patterns/custom-windows/
+---
+<!--
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+# Custom window patterns
+The samples on this page demonstrate common custom window patterns. You can 
create custom windows with [`WindowFn` functions]({{ site.baseurl 
}}/documentation/programming-guide/#provided-windowing-functions). For more 
information, see the [programming guide section on windowing]({{ site.baseurl 
}}/documentation/programming-guide/#windowing).
+
+**Note**: Custom merging windows isn't supported in Python.
+
+## Using data to dynamically set session window gaps
+
+You can modify the 
[`assignWindows`](https://beam.apache.org/releases/javadoc/current/index.html?org/apache/beam/sdk/transforms/windowing/SlidingWindows.html)
 function to use data-driven gaps instead of fixed windows.
+
+Access the `assignWindows` function through 
`WindowFn.AssignContext.element()`. The original, fixed-duration 
`assignWindows` function is:
+
+```java
+{% github_sample 
/apache/beam/blob/master/examples/java/src/main/java/org/apache/beam/examples/snippets/Snippets.java
 tag:CustomSessionWindow1
+%}
+```
+
+### Creating data-driven gaps
+To use data-driven gaps, add the following snippets to the `assignWindows` 
function:
+- A default value for when the custom gap is not present in the data 
+- A way to set the attribute from the main pipeline as a method of the custom 
windows
+
+For example, the following function assigns each element to a window between 
the timestamp and `gapDuration`:
+
+```java
+{% github_sample 
/apache/beam/blob/master/examples/java/src/main/java/org/apache/beam/examples/snippets/Snippets.java
 tag:CustomSessionWindow3
+%}
+```
+
+In this function, the `withDefaultGapDuration` and `withGapAttribute` methods 
are:
+
+```java
+{% github_sample 
/apache/beam/blob/master/examples/java/src/main/java/org/apache/beam/examples/snippets/Snippets.java
 tag:CustomSessionWindow4
+%}
+```
+
+Then, the new `gapAttribute` field and constructor dynamically create session 
windows with the calculated gap duration:
+
+```java
+{% github_sample 
/apache/beam/blob/master/examples/java/src/main/java/org/apache/beam/examples/snippets/Snippets.java
 tag:CustomSessionWindow2
+%}
+```
+
+### Windowing messages into sessions
+After creating data-driven gaps, you can window Pub/Sub messages into the new, 
custom sessions:
 
 Review comment:
   How do we convert from pub/sub to tablerows? Should we mention that a 
conversion needs to happen. Or maybe not mention pubsub at all.
 
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


Issue Time Tracking
-------------------

    Worklog Id:     (was: 315791)
    Time Spent: 1.5h  (was: 1h 20m)

> Publish custom windows pattern
> ------------------------------
>
>                 Key: BEAM-8045
>                 URL: https://issues.apache.org/jira/browse/BEAM-8045
>             Project: Beam
>          Issue Type: Improvement
>          Components: website
>            Reporter: Cyrus Maden
>            Assignee: Cyrus Maden
>            Priority: Minor
>          Time Spent: 1.5h
>  Remaining Estimate: 0h
>




--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to