forked from docs/doc-exports
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com> Co-authored-by: Lu, Huayi <luhuayi@huawei.com> Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
122 lines
21 KiB
HTML
122 lines
21 KiB
HTML
<a name="EN-US_TOPIC_0000001460880868"></a><a name="EN-US_TOPIC_0000001460880868"></a>
|
||
|
||
<h1 class="topictitle1">Aggregate Functions</h1>
|
||
<div id="body32001227"><div class="section" id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_section92414131400"><h4 class="sectiontitle">hll_add_agg(hll_hashval)</h4><p id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_p1723914131803">Description: Groups hashed data into HLL.</p>
|
||
<p id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_p923914131404">Return type: hll</p>
|
||
<p id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_p723914139012">Example:</p>
|
||
<ol id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_ol1112410742418"><li id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_li01242711242">Prepare data.<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_screen1239105214248"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||
<span class="normal">2</span>
|
||
<span class="normal">3</span>
|
||
<span class="normal">4</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">t_id</span><span class="p">(</span><span class="n">id</span><span class="w"> </span><span class="nb">int</span><span class="p">);</span>
|
||
<span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">t_id</span><span class="w"> </span><span class="k">VALUES</span><span class="p">(</span><span class="n">generate_series</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">500</span><span class="p">));</span>
|
||
<span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">t_data</span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="w"> </span><span class="k">c</span><span class="w"> </span><span class="nb">text</span><span class="p">);</span>
|
||
<span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">t_data</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="k">mod</span><span class="p">(</span><span class="n">id</span><span class="p">,</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="n">id</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">t_id</span><span class="p">;</span>
|
||
</pre></div></td></tr></table></div>
|
||
</div>
|
||
</li><li id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_li015711702412">Create another table and specify an HLL column:<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_screen62521259132412"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">t_a_c_hll</span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="w"> </span><span class="k">c</span><span class="w"> </span><span class="n">hll</span><span class="p">);</span>
|
||
</pre></div></td></tr></table></div>
|
||
</div>
|
||
</li><li id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_li56871722142419">Use <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b2058053465816">GROUP BY</strong> on column <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b958043416580">a</strong> to group data, and insert the data to the HLL column:<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_screen9319196192515"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">t_a_c_hll</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="n">hll_add_agg</span><span class="p">(</span><span class="n">hll_hash_text</span><span class="p">(</span><span class="k">c</span><span class="p">))</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">t_data</span><span class="w"> </span><span class="k">GROUP</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">a</span><span class="p">;</span>
|
||
</pre></div></td></tr></table></div>
|
||
</div>
|
||
</li><li id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_li1091233132414">Calculate the number of distinct values for each group in the HLL column:<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_screen6936181017255"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||
<span class="normal">2</span>
|
||
<span class="normal">3</span>
|
||
<span class="normal">4</span>
|
||
<span class="normal">5</span>
|
||
<span class="normal">6</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">a</span><span class="p">,</span><span class="w"> </span><span class="o">#</span><span class="k">c</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="k">cardinality</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">t_a_c_hll</span><span class="w"> </span><span class="k">order</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="n">a</span><span class="p">;</span>
|
||
<span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">cardinality</span><span class="w"> </span>
|
||
<span class="c1">---+------------------</span>
|
||
<span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">250</span><span class="p">.</span><span class="mi">741759091658</span>
|
||
<span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">250</span><span class="p">.</span><span class="mi">741759091658</span>
|
||
<span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span>
|
||
</pre></div></td></tr></table></div>
|
||
</div>
|
||
</li></ol>
|
||
</div>
|
||
<div class="section" id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_section9120324107"><h4 class="sectiontitle">hll_add_agg(hll_hashval, int32 log2m)</h4><p id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_p1987284112595">Description: Groups hashed data into HLL and sets the <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b78113703093957">log2m</strong> parameter. The parameter value ranges from 10 to 16.</p>
|
||
<p id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_p6872204112591">Return type: hll</p>
|
||
<p id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_p1087204113597">Example:</p>
|
||
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_screen1144945161113"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||
<span class="normal">2</span>
|
||
<span class="normal">3</span>
|
||
<span class="normal">4</span>
|
||
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">hll_cardinality</span><span class="p">(</span><span class="n">hll_add_agg</span><span class="p">(</span><span class="n">hll_hash_text</span><span class="p">(</span><span class="k">c</span><span class="p">),</span><span class="w"> </span><span class="mi">10</span><span class="p">))</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">t_data</span><span class="p">;</span>
|
||
<span class="w"> </span><span class="n">hll_cardinality</span><span class="w"> </span>
|
||
<span class="c1">------------------</span>
|
||
<span class="w"> </span><span class="mi">503</span><span class="p">.</span><span class="mi">932348927339</span>
|
||
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
|
||
</pre></div></td></tr></table></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_section1673473711013"><h4 class="sectiontitle">hll_add_agg(hll_hashval, int32 log2m, int32 regwidth)</h4><p id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_p1423816181547">Description: Groups hashed data into HLL and sets the <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b19330454125519">log2m</strong> and <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b4330185485514">regwidth</strong> parameters in sequence. The value of <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b111949971993957">regwidth</strong> ranges from 1 to 5.</p>
|
||
<p id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_p1023881817415">Return type: hll</p>
|
||
<p id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_p122380181943">Example:</p>
|
||
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_screen13205143014228"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||
<span class="normal">2</span>
|
||
<span class="normal">3</span>
|
||
<span class="normal">4</span>
|
||
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">hll_cardinality</span><span class="p">(</span><span class="n">hll_add_agg</span><span class="p">(</span><span class="n">hll_hash_text</span><span class="p">(</span><span class="k">c</span><span class="p">),</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">))</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">t_data</span><span class="p">;</span>
|
||
<span class="w"> </span><span class="n">hll_cardinality</span><span class="w"> </span>
|
||
<span class="c1">------------------</span>
|
||
<span class="w"> </span><span class="mi">496</span><span class="p">.</span><span class="mi">628982624022</span>
|
||
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
|
||
</pre></div></td></tr></table></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_section91109351606"><h4 class="sectiontitle">hll_add_agg(hll_hashval, int32 log2m, int32 regwidth, int64 expthresh)</h4><p id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_p1053925568">Description: Groups hashed data into <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b155091222165614">hll</strong> and sets parameters <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b0134127185615">log2m</strong>, <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b113447185619">regwidth</strong>, and <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b171355705613">expthresh</strong> in sequence. The value of <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b31570864393957">expthresh</strong> is an integer ranging from –1 to 7. <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b209361223693957">expthresh</strong> is used to specify the threshold for switching from the <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b189331756593957">explicit</strong> mode to the <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b199014624693957">sparse</strong> mode. <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b179764081993957">–1</strong> indicates the auto mode; <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b97448187293957">0</strong> indicates that the <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b163653046193957">explicit</strong> mode is skipped; a value from 1 to 7 indicates that the mode is switched when the number of distinct values reaches 2<sup id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_sup21327631493957"><strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b122930258193957">expthresh</strong></sup>.</p>
|
||
<p id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_p13531025367">Return type: hll</p>
|
||
<p id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_p8534254610">Example:</p>
|
||
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_screen99971539142319"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||
<span class="normal">2</span>
|
||
<span class="normal">3</span>
|
||
<span class="normal">4</span>
|
||
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">hll_cardinality</span><span class="p">(</span><span class="n">hll_add_agg</span><span class="p">(</span><span class="n">hll_hash_text</span><span class="p">(</span><span class="k">c</span><span class="p">),</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">))</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">t_data</span><span class="p">;</span>
|
||
<span class="w"> </span><span class="n">hll_cardinality</span><span class="w"> </span>
|
||
<span class="c1">------------------</span>
|
||
<span class="w"> </span><span class="mi">496</span><span class="p">.</span><span class="mi">628982624022</span>
|
||
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
|
||
</pre></div></td></tr></table></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_section7234032809"><h4 class="sectiontitle">hll_add_agg(hll_hashval, int32 log2m, int32 regwidth, int64 expthresh, int32 sparseon)</h4><p id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_p142701419188">Description: Groups hashed data into <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b1910918417569">hll</strong> and sets parameters <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b133713550596">log2m</strong>, <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b333717552594">regwidth</strong>, <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b19337115516595">expthresh</strong>, and <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b522722518019">sparseon</strong> in sequence. The value of <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b21321948729">sparseon</strong> is 0 or 1.</p>
|
||
<p id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_p102701919181">Return type: hll</p>
|
||
<p id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_p1027014194811">Example:</p>
|
||
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_screen4897191820299"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||
<span class="normal">2</span>
|
||
<span class="normal">3</span>
|
||
<span class="normal">4</span>
|
||
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">hll_cardinality</span><span class="p">(</span><span class="n">hll_add_agg</span><span class="p">(</span><span class="n">hll_hash_text</span><span class="p">(</span><span class="k">c</span><span class="p">),</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">))</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">t_data</span><span class="p">;</span>
|
||
<span class="w"> </span><span class="n">hll_cardinality</span><span class="w"> </span>
|
||
<span class="c1">------------------</span>
|
||
<span class="w"> </span><span class="mi">496</span><span class="p">.</span><span class="mi">628982624022</span>
|
||
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
|
||
</pre></div></td></tr></table></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_section16542172910010"><h4 class="sectiontitle">hll_union_agg(hll)</h4><p id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_p1619444182">Description: Perform the <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b23215531393957">UNION</strong> operation on multiple pieces of data of the hll type to obtain one HLL.</p>
|
||
<p id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_p8894142313186">Return type: hll</p>
|
||
<p id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_p10483122972212">Example:</p>
|
||
<p id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_p7206133211186">Perform the <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b1055414498212">UNION</strong> operation on data of the HLL type in each group to obtain one HLL, and calculate the number of distinct values:</p>
|
||
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_screen1668214125305"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
||
<span class="normal">2</span>
|
||
<span class="normal">3</span>
|
||
<span class="normal">4</span>
|
||
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="o">#</span><span class="n">hll_union_agg</span><span class="p">(</span><span class="k">c</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="k">cardinality</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">t_a_c_hll</span><span class="p">;</span>
|
||
<span class="w"> </span><span class="k">cardinality</span><span class="w"> </span>
|
||
<span class="c1">------------------</span>
|
||
<span class="w"> </span><span class="mi">496</span><span class="p">.</span><span class="mi">628982624022</span>
|
||
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span>
|
||
</pre></div></td></tr></table></div>
|
||
</div>
|
||
</div>
|
||
<div class="note" id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_note42005853413"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_p02075810346">To perform <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b162005173393957">UNION</strong> on data in multiple HLLs, ensure that the HLLs have the same precision. Otherwise, <strong id="EN-US_TOPIC_0000001460880868__en-us_topic_0000001495586257_b189159259393957">UNION</strong> cannot be performed. This restriction also applies to the hll_union(hll, hll) function.</p>
|
||
</div></div>
|
||
</div>
|
||
<div>
|
||
<div class="familylinks">
|
||
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_06_0042.html">HLL Functions and Operators</a></div>
|
||
</div>
|
||
</div>
|
||
|