blob: 0121bc98454aa13b23de5a5745481a24d404e630 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc -->
<title>VarianceFn (Apache Beam 2.38.0-SNAPSHOT)</title>
<link rel="stylesheet" type="text/css" href="../../../../../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="VarianceFn (Apache Beam 2.38.0-SNAPSHOT)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":9,"i11":9,"i12":9,"i13":9,"i14":10};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/CovarianceFn.html" title="class in org.apache.beam.sdk.extensions.sql.impl.transform.agg"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../../../index.html?org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" target="_top">Frames</a></li>
<li><a href="VarianceFn.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.beam.sdk.extensions.sql.impl.transform.agg</div>
<h2 title="Class VarianceFn" class="title">Class VarianceFn&lt;T extends java.lang.Number&gt;</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li><a href="../../../../../../../../../org/apache/beam/sdk/transforms/Combine.CombineFn.html" title="class in org.apache.beam.sdk.transforms">org.apache.beam.sdk.transforms.Combine.CombineFn</a>&lt;T,org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator,T&gt;</li>
<li>
<ul class="inheritance">
<li>org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceFn&lt;T&gt;</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>java.io.Serializable, <a href="../../../../../../../../../org/apache/beam/sdk/transforms/CombineFnBase.GlobalCombineFn.html" title="interface in org.apache.beam.sdk.transforms">CombineFnBase.GlobalCombineFn</a>&lt;T,org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator,T&gt;, <a href="../../../../../../../../../org/apache/beam/sdk/transforms/display/HasDisplayData.html" title="interface in org.apache.beam.sdk.transforms.display">HasDisplayData</a></dd>
</dl>
<hr>
<br>
<pre><a href="../../../../../../../../../org/apache/beam/sdk/annotations/Internal.html" title="annotation in org.apache.beam.sdk.annotations">@Internal</a>
public class <span class="typeNameLabel">VarianceFn&lt;T extends java.lang.Number&gt;</span>
extends <a href="../../../../../../../../../org/apache/beam/sdk/transforms/Combine.CombineFn.html" title="class in org.apache.beam.sdk.transforms">Combine.CombineFn</a>&lt;T,org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator,T&gt;</pre>
<div class="block"><code>Combine.CombineFn</code> for <em>Variance</em> on <code>Number</code> types.
<p>Calculates Population Variance and Sample Variance using incremental formulas described, for
example, by Chan, Golub, and LeVeque in "Algorithms for computing the sample variance: analysis
and recommendations", The American Statistician, 37 (1983) pp. 242--247.
<p>If variance is defined like this:
<ul>
<li>Input elements: <code>(x[1], ... , x[n])</code>
<li>Sum of elements: {sum(x) = x[1] + ... + x[n]}
<li>Average of all elements in the input: <code>mean(x) = sum(x) / n</code>
<li>Deviation of <code>i</code>th element from the current mean: <code>deviation(x, i) = x[i] -
mean(n)</code>
<li>Variance: <code>variance(x) = deviation(x, 1)^2 + ... + deviation(x, n)^2</code>
</ul>
<p>Then variance of combined input of 2 samples <code>(x[1], ... , x[n])</code> and <code>(y[1], ...
, y[m])</code> is calculated using this formula:
<ul>
<li><code>variance(concat(x,y)) = variance(x) + variance(y) + increment</code>, where:
<li><code>increment = m/(n(m+n)) * (n/m * sum(x) - sum(y))^2</code>
</ul>
<p>This is also applicable for a single element increment, assuming that variance of a single
element input is zero
<p>To implement the above formula we keep track of the current variation, sum, and count of
elements, and then use the formula whenever new element comes or we need to merge variances for 2
samples.</div>
<dl>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../../../../serialized-form.html#org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceFn">Serialized Form</a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html#addInput-org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator-T-">addInput</a></span>(org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator&nbsp;currentVariance,
<a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="type parameter in VarianceFn">T</a>&nbsp;rawInput)</code>
<div class="block">Adds the given input value to the given accumulator, returning the new accumulator value.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html#createAccumulator--">createAccumulator</a></span>()</code>
<div class="block">Returns a new, mutable accumulator value, representing the accumulation of zero input values.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="type parameter in VarianceFn">T</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html#extractOutput-org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator-">extractOutput</a></span>(org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator&nbsp;accumulator)</code>
<div class="block">Returns the output value that is the result of combining all the input values represented by
the given accumulator.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>java.lang.reflect.TypeVariable&lt;?&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html#getAccumTVariable--">getAccumTVariable</a></span>()</code>
<div class="block">Returns the <code>TypeVariable</code> of <code>AccumT</code>.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../../../../../../../org/apache/beam/sdk/coders/Coder.html" title="class in org.apache.beam.sdk.coders">Coder</a>&lt;org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html#getAccumulatorCoder-org.apache.beam.sdk.coders.CoderRegistry-org.apache.beam.sdk.coders.Coder-">getAccumulatorCoder</a></span>(<a href="../../../../../../../../../org/apache/beam/sdk/coders/CoderRegistry.html" title="class in org.apache.beam.sdk.coders">CoderRegistry</a>&nbsp;registry,
<a href="../../../../../../../../../org/apache/beam/sdk/coders/Coder.html" title="class in org.apache.beam.sdk.coders">Coder</a>&lt;<a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="type parameter in VarianceFn">T</a>&gt;&nbsp;inputCoder)</code>
<div class="block">Returns the <code>Coder</code> to use for accumulator <code>AccumT</code> values, or null if it is not
able to be inferred.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../../../../org/apache/beam/sdk/coders/Coder.html" title="class in org.apache.beam.sdk.coders">Coder</a>&lt;OutputT&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html#getDefaultOutputCoder-org.apache.beam.sdk.coders.CoderRegistry-org.apache.beam.sdk.coders.Coder-">getDefaultOutputCoder</a></span>(<a href="../../../../../../../../../org/apache/beam/sdk/coders/CoderRegistry.html" title="class in org.apache.beam.sdk.coders">CoderRegistry</a>&nbsp;registry,
<a href="../../../../../../../../../org/apache/beam/sdk/coders/Coder.html" title="class in org.apache.beam.sdk.coders">Coder</a>&lt;InputT&gt;&nbsp;inputCoder)</code>
<div class="block">Returns the <code>Coder</code> to use by default for output <code>OutputT</code> values, or null if it
is not able to be inferred.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>java.lang.String</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html#getIncompatibleGlobalWindowErrorMessage--">getIncompatibleGlobalWindowErrorMessage</a></span>()</code>
<div class="block">Returns the error message for not supported default values in Combine.globally().</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>java.lang.reflect.TypeVariable&lt;?&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html#getInputTVariable--">getInputTVariable</a></span>()</code>
<div class="block">Returns the <code>TypeVariable</code> of <code>InputT</code>.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>java.lang.reflect.TypeVariable&lt;?&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html#getOutputTVariable--">getOutputTVariable</a></span>()</code>
<div class="block">Returns the <code>TypeVariable</code> of <code>OutputT</code>.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html#mergeAccumulators-java.lang.Iterable-">mergeAccumulators</a></span>(java.lang.Iterable&lt;org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator&gt;&nbsp;variances)</code>
<div class="block">Returns an accumulator representing the accumulation of all the input values accumulated in
the merging accumulators.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>static &lt;V extends java.lang.Number&gt;<br><a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="class in org.apache.beam.sdk.extensions.sql.impl.transform.agg">VarianceFn</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html#newPopulation-org.apache.beam.sdk.schemas.Schema.TypeName-">newPopulation</a></span>(<a href="../../../../../../../../../org/apache/beam/sdk/schemas/Schema.TypeName.html" title="enum in org.apache.beam.sdk.schemas">Schema.TypeName</a>&nbsp;typeName)</code>&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>static &lt;V extends java.lang.Number&gt;<br><a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="class in org.apache.beam.sdk.extensions.sql.impl.transform.agg">VarianceFn</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html#newPopulation-org.apache.beam.sdk.transforms.SerializableFunction-">newPopulation</a></span>(<a href="../../../../../../../../../org/apache/beam/sdk/transforms/SerializableFunction.html" title="interface in org.apache.beam.sdk.transforms">SerializableFunction</a>&lt;java.math.BigDecimal,V&gt;&nbsp;decimalConverter)</code>&nbsp;</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>static &lt;V extends java.lang.Number&gt;<br><a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="class in org.apache.beam.sdk.extensions.sql.impl.transform.agg">VarianceFn</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html#newSample-org.apache.beam.sdk.schemas.Schema.TypeName-">newSample</a></span>(<a href="../../../../../../../../../org/apache/beam/sdk/schemas/Schema.TypeName.html" title="enum in org.apache.beam.sdk.schemas">Schema.TypeName</a>&nbsp;typeName)</code>&nbsp;</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>static &lt;V extends java.lang.Number&gt;<br><a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="class in org.apache.beam.sdk.extensions.sql.impl.transform.agg">VarianceFn</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html#newSample-org.apache.beam.sdk.transforms.SerializableFunction-">newSample</a></span>(<a href="../../../../../../../../../org/apache/beam/sdk/transforms/SerializableFunction.html" title="interface in org.apache.beam.sdk.transforms">SerializableFunction</a>&lt;java.math.BigDecimal,V&gt;&nbsp;decimalConverter)</code>&nbsp;</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html#populateDisplayData-org.apache.beam.sdk.transforms.display.DisplayData.Builder-">populateDisplayData</a></span>(<a href="../../../../../../../../../org/apache/beam/sdk/transforms/display/DisplayData.Builder.html" title="interface in org.apache.beam.sdk.transforms.display">DisplayData.Builder</a>&nbsp;builder)</code>
<div class="block">Register display data for the given transform or component.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.beam.sdk.transforms.Combine.CombineFn">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.beam.sdk.transforms.<a href="../../../../../../../../../org/apache/beam/sdk/transforms/Combine.CombineFn.html" title="class in org.apache.beam.sdk.transforms">Combine.CombineFn</a></h3>
<code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/Combine.CombineFn.html#apply-java.lang.Iterable-">apply</a>, <a href="../../../../../../../../../org/apache/beam/sdk/transforms/Combine.CombineFn.html#compact-AccumT-">compact</a>, <a href="../../../../../../../../../org/apache/beam/sdk/transforms/Combine.CombineFn.html#defaultValue--">defaultValue</a>, <a href="../../../../../../../../../org/apache/beam/sdk/transforms/Combine.CombineFn.html#getInputType--">getInputType</a>, <a href="../../../../../../../../../org/apache/beam/sdk/transforms/Combine.CombineFn.html#getOutputType--">getOutputType</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="newPopulation-org.apache.beam.sdk.schemas.Schema.TypeName-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>newPopulation</h4>
<pre>public static&nbsp;&lt;V extends java.lang.Number&gt;&nbsp;<a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="class in org.apache.beam.sdk.extensions.sql.impl.transform.agg">VarianceFn</a>&nbsp;newPopulation(<a href="../../../../../../../../../org/apache/beam/sdk/schemas/Schema.TypeName.html" title="enum in org.apache.beam.sdk.schemas">Schema.TypeName</a>&nbsp;typeName)</pre>
</li>
</ul>
<a name="newPopulation-org.apache.beam.sdk.transforms.SerializableFunction-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>newPopulation</h4>
<pre>public static&nbsp;&lt;V extends java.lang.Number&gt;&nbsp;<a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="class in org.apache.beam.sdk.extensions.sql.impl.transform.agg">VarianceFn</a>&nbsp;newPopulation(<a href="../../../../../../../../../org/apache/beam/sdk/transforms/SerializableFunction.html" title="interface in org.apache.beam.sdk.transforms">SerializableFunction</a>&lt;java.math.BigDecimal,V&gt;&nbsp;decimalConverter)</pre>
</li>
</ul>
<a name="newSample-org.apache.beam.sdk.schemas.Schema.TypeName-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>newSample</h4>
<pre>public static&nbsp;&lt;V extends java.lang.Number&gt;&nbsp;<a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="class in org.apache.beam.sdk.extensions.sql.impl.transform.agg">VarianceFn</a>&nbsp;newSample(<a href="../../../../../../../../../org/apache/beam/sdk/schemas/Schema.TypeName.html" title="enum in org.apache.beam.sdk.schemas">Schema.TypeName</a>&nbsp;typeName)</pre>
</li>
</ul>
<a name="newSample-org.apache.beam.sdk.transforms.SerializableFunction-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>newSample</h4>
<pre>public static&nbsp;&lt;V extends java.lang.Number&gt;&nbsp;<a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="class in org.apache.beam.sdk.extensions.sql.impl.transform.agg">VarianceFn</a>&nbsp;newSample(<a href="../../../../../../../../../org/apache/beam/sdk/transforms/SerializableFunction.html" title="interface in org.apache.beam.sdk.transforms">SerializableFunction</a>&lt;java.math.BigDecimal,V&gt;&nbsp;decimalConverter)</pre>
</li>
</ul>
<a name="createAccumulator--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createAccumulator</h4>
<pre>public&nbsp;org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator&nbsp;createAccumulator()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/Combine.CombineFn.html#createAccumulator--">Combine.CombineFn</a></code></span></div>
<div class="block">Returns a new, mutable accumulator value, representing the accumulation of zero input values.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/Combine.CombineFn.html#createAccumulator--">createAccumulator</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/Combine.CombineFn.html" title="class in org.apache.beam.sdk.transforms">Combine.CombineFn</a>&lt;<a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="type parameter in VarianceFn">T</a> extends java.lang.Number,org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator,<a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="type parameter in VarianceFn">T</a> extends java.lang.Number&gt;</code></dd>
</dl>
</li>
</ul>
<a name="addInput-org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator-java.lang.Number-">
<!-- -->
</a><a name="addInput-org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator-T-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addInput</h4>
<pre>public&nbsp;org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator&nbsp;addInput(org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator&nbsp;currentVariance,
<a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="type parameter in VarianceFn">T</a>&nbsp;rawInput)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/Combine.CombineFn.html#addInput-AccumT-InputT-">Combine.CombineFn</a></code></span></div>
<div class="block">Adds the given input value to the given accumulator, returning the new accumulator value.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/Combine.CombineFn.html#addInput-AccumT-InputT-">addInput</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/Combine.CombineFn.html" title="class in org.apache.beam.sdk.transforms">Combine.CombineFn</a>&lt;<a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="type parameter in VarianceFn">T</a> extends java.lang.Number,org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator,<a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="type parameter in VarianceFn">T</a> extends java.lang.Number&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>currentVariance</code> - may be modified and returned for efficiency</dd>
<dd><code>rawInput</code> - should not be mutated</dd>
</dl>
</li>
</ul>
<a name="mergeAccumulators-java.lang.Iterable-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>mergeAccumulators</h4>
<pre>public&nbsp;org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator&nbsp;mergeAccumulators(java.lang.Iterable&lt;org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator&gt;&nbsp;variances)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/Combine.CombineFn.html#mergeAccumulators-java.lang.Iterable-">Combine.CombineFn</a></code></span></div>
<div class="block">Returns an accumulator representing the accumulation of all the input values accumulated in
the merging accumulators.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/Combine.CombineFn.html#mergeAccumulators-java.lang.Iterable-">mergeAccumulators</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/Combine.CombineFn.html" title="class in org.apache.beam.sdk.transforms">Combine.CombineFn</a>&lt;<a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="type parameter in VarianceFn">T</a> extends java.lang.Number,org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator,<a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="type parameter in VarianceFn">T</a> extends java.lang.Number&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>variances</code> - only the first accumulator may be modified and returned for efficiency;
the other accumulators should not be mutated, because they may be shared with other code
and mutating them could lead to incorrect results or data corruption.</dd>
</dl>
</li>
</ul>
<a name="getAccumulatorCoder-org.apache.beam.sdk.coders.CoderRegistry-org.apache.beam.sdk.coders.Coder-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAccumulatorCoder</h4>
<pre>public&nbsp;<a href="../../../../../../../../../org/apache/beam/sdk/coders/Coder.html" title="class in org.apache.beam.sdk.coders">Coder</a>&lt;org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator&gt;&nbsp;getAccumulatorCoder(<a href="../../../../../../../../../org/apache/beam/sdk/coders/CoderRegistry.html" title="class in org.apache.beam.sdk.coders">CoderRegistry</a>&nbsp;registry,
<a href="../../../../../../../../../org/apache/beam/sdk/coders/Coder.html" title="class in org.apache.beam.sdk.coders">Coder</a>&lt;<a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="type parameter in VarianceFn">T</a>&gt;&nbsp;inputCoder)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/CombineFnBase.GlobalCombineFn.html#getAccumulatorCoder-org.apache.beam.sdk.coders.CoderRegistry-org.apache.beam.sdk.coders.Coder-">CombineFnBase.GlobalCombineFn</a></code></span></div>
<div class="block">Returns the <code>Coder</code> to use for accumulator <code>AccumT</code> values, or null if it is not
able to be inferred.
<p>By default, uses the knowledge of the <code>Coder</code> being used for <code>InputT</code> values
and the enclosing <code>Pipeline</code>'s <code>CoderRegistry</code> to try to infer the Coder for
<code>AccumT</code> values.
<p>This is the Coder used to send data through a communication-intensive shuffle step, so a
compact and efficient representation may have significant performance benefits.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/CombineFnBase.GlobalCombineFn.html#getAccumulatorCoder-org.apache.beam.sdk.coders.CoderRegistry-org.apache.beam.sdk.coders.Coder-">getAccumulatorCoder</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/CombineFnBase.GlobalCombineFn.html" title="interface in org.apache.beam.sdk.transforms">CombineFnBase.GlobalCombineFn</a>&lt;<a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="type parameter in VarianceFn">T</a> extends java.lang.Number,org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator,<a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="type parameter in VarianceFn">T</a> extends java.lang.Number&gt;</code></dd>
</dl>
</li>
</ul>
<a name="extractOutput-org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>extractOutput</h4>
<pre>public&nbsp;<a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="type parameter in VarianceFn">T</a>&nbsp;extractOutput(org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator&nbsp;accumulator)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/Combine.CombineFn.html#extractOutput-AccumT-">Combine.CombineFn</a></code></span></div>
<div class="block">Returns the output value that is the result of combining all the input values represented by
the given accumulator.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/Combine.CombineFn.html#extractOutput-AccumT-">extractOutput</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/Combine.CombineFn.html" title="class in org.apache.beam.sdk.transforms">Combine.CombineFn</a>&lt;<a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="type parameter in VarianceFn">T</a> extends java.lang.Number,org.apache.beam.sdk.extensions.sql.impl.transform.agg.VarianceAccumulator,<a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" title="type parameter in VarianceFn">T</a> extends java.lang.Number&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>accumulator</code> - can be modified for efficiency</dd>
</dl>
</li>
</ul>
<a name="getDefaultOutputCoder-org.apache.beam.sdk.coders.CoderRegistry-org.apache.beam.sdk.coders.Coder-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDefaultOutputCoder</h4>
<pre>public&nbsp;<a href="../../../../../../../../../org/apache/beam/sdk/coders/Coder.html" title="class in org.apache.beam.sdk.coders">Coder</a>&lt;OutputT&gt;&nbsp;getDefaultOutputCoder(<a href="../../../../../../../../../org/apache/beam/sdk/coders/CoderRegistry.html" title="class in org.apache.beam.sdk.coders">CoderRegistry</a>&nbsp;registry,
<a href="../../../../../../../../../org/apache/beam/sdk/coders/Coder.html" title="class in org.apache.beam.sdk.coders">Coder</a>&lt;InputT&gt;&nbsp;inputCoder)
throws <a href="../../../../../../../../../org/apache/beam/sdk/coders/CannotProvideCoderException.html" title="class in org.apache.beam.sdk.coders">CannotProvideCoderException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/CombineFnBase.GlobalCombineFn.html#getDefaultOutputCoder-org.apache.beam.sdk.coders.CoderRegistry-org.apache.beam.sdk.coders.Coder-">CombineFnBase.GlobalCombineFn</a></code></span></div>
<div class="block">Returns the <code>Coder</code> to use by default for output <code>OutputT</code> values, or null if it
is not able to be inferred.
<p>By default, uses the knowledge of the <code>Coder</code> being used for input <code>InputT</code>
values and the enclosing <code>Pipeline</code>'s <code>CoderRegistry</code> to try to infer the Coder
for <code>OutputT</code> values.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/CombineFnBase.GlobalCombineFn.html#getDefaultOutputCoder-org.apache.beam.sdk.coders.CoderRegistry-org.apache.beam.sdk.coders.Coder-">getDefaultOutputCoder</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/CombineFnBase.GlobalCombineFn.html" title="interface in org.apache.beam.sdk.transforms">CombineFnBase.GlobalCombineFn</a>&lt;InputT,AccumT,OutputT&gt;</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="../../../../../../../../../org/apache/beam/sdk/coders/CannotProvideCoderException.html" title="class in org.apache.beam.sdk.coders">CannotProvideCoderException</a></code></dd>
</dl>
</li>
</ul>
<a name="getIncompatibleGlobalWindowErrorMessage--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getIncompatibleGlobalWindowErrorMessage</h4>
<pre>public&nbsp;java.lang.String&nbsp;getIncompatibleGlobalWindowErrorMessage()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/CombineFnBase.GlobalCombineFn.html#getIncompatibleGlobalWindowErrorMessage--">CombineFnBase.GlobalCombineFn</a></code></span></div>
<div class="block">Returns the error message for not supported default values in Combine.globally().</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/CombineFnBase.GlobalCombineFn.html#getIncompatibleGlobalWindowErrorMessage--">getIncompatibleGlobalWindowErrorMessage</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/CombineFnBase.GlobalCombineFn.html" title="interface in org.apache.beam.sdk.transforms">CombineFnBase.GlobalCombineFn</a>&lt;InputT,AccumT,OutputT&gt;</code></dd>
</dl>
</li>
</ul>
<a name="getInputTVariable--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getInputTVariable</h4>
<pre>public&nbsp;java.lang.reflect.TypeVariable&lt;?&gt;&nbsp;getInputTVariable()</pre>
<div class="block">Returns the <code>TypeVariable</code> of <code>InputT</code>.</div>
</li>
</ul>
<a name="getAccumTVariable--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getAccumTVariable</h4>
<pre>public&nbsp;java.lang.reflect.TypeVariable&lt;?&gt;&nbsp;getAccumTVariable()</pre>
<div class="block">Returns the <code>TypeVariable</code> of <code>AccumT</code>.</div>
</li>
</ul>
<a name="getOutputTVariable--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getOutputTVariable</h4>
<pre>public&nbsp;java.lang.reflect.TypeVariable&lt;?&gt;&nbsp;getOutputTVariable()</pre>
<div class="block">Returns the <code>TypeVariable</code> of <code>OutputT</code>.</div>
</li>
</ul>
<a name="populateDisplayData-org.apache.beam.sdk.transforms.display.DisplayData.Builder-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>populateDisplayData</h4>
<pre>public&nbsp;void&nbsp;populateDisplayData(<a href="../../../../../../../../../org/apache/beam/sdk/transforms/display/DisplayData.Builder.html" title="interface in org.apache.beam.sdk.transforms.display">DisplayData.Builder</a>&nbsp;builder)</pre>
<div class="block">Register display data for the given transform or component.
<p><code>populateDisplayData(DisplayData.Builder)</code> is invoked by Pipeline runners to collect
display data via <a href="../../../../../../../../../org/apache/beam/sdk/transforms/display/DisplayData.html#from-org.apache.beam.sdk.transforms.display.HasDisplayData-"><code>DisplayData.from(HasDisplayData)</code></a>. Implementations may call <code>super.populateDisplayData(builder)</code> in order to register display data in the current namespace,
but should otherwise use <code>subcomponent.populateDisplayData(builder)</code> to use the namespace
of the subcomponent.
<p>By default, does not register any display data. Implementors may override this method to
provide their own display data.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/display/HasDisplayData.html#populateDisplayData-org.apache.beam.sdk.transforms.display.DisplayData.Builder-">populateDisplayData</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../../../../org/apache/beam/sdk/transforms/display/HasDisplayData.html" title="interface in org.apache.beam.sdk.transforms.display">HasDisplayData</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>builder</code> - The builder to populate with display data.</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="../../../../../../../../../org/apache/beam/sdk/transforms/display/HasDisplayData.html" title="interface in org.apache.beam.sdk.transforms.display"><code>HasDisplayData</code></a></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../../../../org/apache/beam/sdk/extensions/sql/impl/transform/agg/CovarianceFn.html" title="class in org.apache.beam.sdk.extensions.sql.impl.transform.agg"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li>Next&nbsp;Class</li>
</ul>
<ul class="navList">
<li><a href="../../../../../../../../../index.html?org/apache/beam/sdk/extensions/sql/impl/transform/agg/VarianceFn.html" target="_top">Frames</a></li>
<li><a href="VarianceFn.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>