blob: 2d530a81f1d004a84a4516408e3fe20a102a1919 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>iceberg-cpp: iceberg::TransformFunction Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">iceberg-cpp
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>iceberg</b></li><li class="navelem"><a class="el" href="classiceberg_1_1TransformFunction.html">TransformFunction</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classiceberg_1_1TransformFunction-members.html">List of all members</a> </div>
<div class="headertitle"><div class="title">iceberg::TransformFunction Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div></div>
</div><!--header-->
<div class="contents">
<p>A transform function used for partitioning.
<a href="classiceberg_1_1TransformFunction.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="transform_8h_source.html">transform.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for iceberg::TransformFunction:</div>
<div class="dyncontent">
<div class="center">
<img src="classiceberg_1_1TransformFunction.png" usemap="#iceberg::TransformFunction_map" alt=""/>
<map id="iceberg::TransformFunction_map" name="iceberg::TransformFunction_map">
<area href="classiceberg_1_1BucketTransform.html" title="Bucket transform that hashes input values into N buckets." alt="iceberg::BucketTransform" shape="rect" coords="178,56,346,80"/>
<area href="classiceberg_1_1DayTransform.html" title="Day transform that extracts the number of days from timestamp inputs since the epoch." alt="iceberg::DayTransform" shape="rect" coords="178,112,346,136"/>
<area href="classiceberg_1_1HourTransform.html" title="Hour transform that extracts the number of hours from timestamp inputs since the epoch." alt="iceberg::HourTransform" shape="rect" coords="178,168,346,192"/>
<area href="classiceberg_1_1IdentityTransform.html" title="Identity transform that returns the input unchanged." alt="iceberg::IdentityTransform" shape="rect" coords="178,224,346,248"/>
<area href="classiceberg_1_1MonthTransform.html" title="Month transform that extracts the number of months from timestamp inputs since the epoch." alt="iceberg::MonthTransform" shape="rect" coords="178,280,346,304"/>
<area href="classiceberg_1_1TruncateTransform.html" title="Truncate transform that truncates values to a specified width." alt="iceberg::TruncateTransform" shape="rect" coords="178,336,346,360"/>
<area href="classiceberg_1_1VoidTransform.html" title="Void transform that discards the input and always returns null." alt="iceberg::VoidTransform" shape="rect" coords="178,392,346,416"/>
<area href="classiceberg_1_1YearTransform.html" title="Year transform that extracts the number of years from timestamp inputs since the epoch." alt="iceberg::YearTransform" shape="rect" coords="178,448,346,472"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a3e97589741424abf0fb1c0c01117bb5e" id="r_a3e97589741424abf0fb1c0c01117bb5e"><td class="memItemLeft" align="right" valign="top"><a id="a3e97589741424abf0fb1c0c01117bb5e" name="a3e97589741424abf0fb1c0c01117bb5e"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>TransformFunction</b> (<a class="el" href="transform_8h.html#a78b299cfdfb0b9631ca6fc520bd1b131">TransformType</a> <a class="el" href="classiceberg_1_1TransformFunction.html#abf4c9031fa1b0de214e6aa7ffc717c56">transform_type</a>, std::shared_ptr&lt; <a class="el" href="classiceberg_1_1Type.html">Type</a> &gt; <a class="el" href="classiceberg_1_1TransformFunction.html#a5fb6043200973c2a68f1b59b52f3dc91">source_type</a>)</td></tr>
<tr class="separator:a3e97589741424abf0fb1c0c01117bb5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afb1c573d9bd098c76d858f476ef16f3f" id="r_afb1c573d9bd098c76d858f476ef16f3f"><td class="memItemLeft" align="right" valign="top">virtual Result&lt; <a class="el" href="classiceberg_1_1Literal.html">Literal</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1TransformFunction.html#afb1c573d9bd098c76d858f476ef16f3f">Transform</a> (const <a class="el" href="classiceberg_1_1Literal.html">Literal</a> &amp;literal)=0</td></tr>
<tr class="memdesc:afb1c573d9bd098c76d858f476ef16f3f"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classiceberg_1_1Transform.html" title="Represents a transform used in partitioning or sorting in Iceberg.">Transform</a> an input <a class="el" href="classiceberg_1_1Literal.html" title="Literal is a literal value that is associated with a primitive type.">Literal</a> to a new <a class="el" href="classiceberg_1_1Literal.html" title="Literal is a literal value that is associated with a primitive type.">Literal</a>. <br /></td></tr>
<tr class="separator:afb1c573d9bd098c76d858f476ef16f3f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf4c9031fa1b0de214e6aa7ffc717c56" id="r_abf4c9031fa1b0de214e6aa7ffc717c56"><td class="memItemLeft" align="right" valign="top"><a id="abf4c9031fa1b0de214e6aa7ffc717c56" name="abf4c9031fa1b0de214e6aa7ffc717c56"></a>
<a class="el" href="transform_8h.html#a78b299cfdfb0b9631ca6fc520bd1b131">TransformType</a>&#160;</td><td class="memItemRight" valign="bottom"><b>transform_type</b> () const</td></tr>
<tr class="memdesc:abf4c9031fa1b0de214e6aa7ffc717c56"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the transform type. <br /></td></tr>
<tr class="separator:abf4c9031fa1b0de214e6aa7ffc717c56"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5fb6043200973c2a68f1b59b52f3dc91" id="r_a5fb6043200973c2a68f1b59b52f3dc91"><td class="memItemLeft" align="right" valign="top"><a id="a5fb6043200973c2a68f1b59b52f3dc91" name="a5fb6043200973c2a68f1b59b52f3dc91"></a>
const std::shared_ptr&lt; <a class="el" href="classiceberg_1_1Type.html">Type</a> &gt; &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>source_type</b> () const</td></tr>
<tr class="memdesc:a5fb6043200973c2a68f1b59b52f3dc91"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the source type of transform function. <br /></td></tr>
<tr class="separator:a5fb6043200973c2a68f1b59b52f3dc91"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82841b58ce6380a7467bccf57e18e0d5" id="r_a82841b58ce6380a7467bccf57e18e0d5"><td class="memItemLeft" align="right" valign="top">virtual std::shared_ptr&lt; <a class="el" href="classiceberg_1_1Type.html">Type</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classiceberg_1_1TransformFunction.html#a82841b58ce6380a7467bccf57e18e0d5">ResultType</a> () const =0</td></tr>
<tr class="memdesc:a82841b58ce6380a7467bccf57e18e0d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the result type of transform function. <br /></td></tr>
<tr class="separator:a82841b58ce6380a7467bccf57e18e0d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="friends" name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:a39503aed9c009850647ef62ee798bb72" id="r_a39503aed9c009850647ef62ee798bb72"><td class="memItemLeft" align="right" valign="top"><a id="a39503aed9c009850647ef62ee798bb72" name="a39503aed9c009850647ef62ee798bb72"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="classiceberg_1_1TransformFunction.html">TransformFunction</a> &amp;lhs, const <a class="el" href="classiceberg_1_1TransformFunction.html">TransformFunction</a> &amp;rhs)</td></tr>
<tr class="separator:a39503aed9c009850647ef62ee798bb72"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>A transform function used for partitioning. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a82841b58ce6380a7467bccf57e18e0d5" name="a82841b58ce6380a7467bccf57e18e0d5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a82841b58ce6380a7467bccf57e18e0d5">&#9670;&#160;</a></span>ResultType()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual std::shared_ptr&lt; <a class="el" href="classiceberg_1_1Type.html">Type</a> &gt; iceberg::TransformFunction::ResultType </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the result type of transform function. </p>
<p>Note: This method defines both the physical and display representation of the partition field. The physical representation must conform to the Iceberg spec. The display representation can deviate from the spec, such as by transforming the value into a more human-readable format. </p>
<p>Implemented in <a class="el" href="classiceberg_1_1IdentityTransform.html#aeb7adbdd7ee14f1e3d658dfe0f52ef70">iceberg::IdentityTransform</a>, <a class="el" href="classiceberg_1_1BucketTransform.html#a527f3ecbca2ca01185495a3f85e18115">iceberg::BucketTransform</a>, <a class="el" href="classiceberg_1_1TruncateTransform.html#aee53ce089b7c524e881c64e2950fc250">iceberg::TruncateTransform</a>, <a class="el" href="classiceberg_1_1YearTransform.html#a4bb19208b08037ec41081009a4c7f21a">iceberg::YearTransform</a>, <a class="el" href="classiceberg_1_1MonthTransform.html#ae7ed2490890c3ba30e13d73e84b96462">iceberg::MonthTransform</a>, <a class="el" href="classiceberg_1_1DayTransform.html#a2030c2ba2ef6a1a167e1576bbb330c06">iceberg::DayTransform</a>, <a class="el" href="classiceberg_1_1HourTransform.html#a6c352ec3dc3a7a40a9b2f7fc19a76f09">iceberg::HourTransform</a>, and <a class="el" href="classiceberg_1_1VoidTransform.html#a12ad7d4138184a193fd9d57766c4fbc8">iceberg::VoidTransform</a>.</p>
</div>
</div>
<a id="afb1c573d9bd098c76d858f476ef16f3f" name="afb1c573d9bd098c76d858f476ef16f3f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afb1c573d9bd098c76d858f476ef16f3f">&#9670;&#160;</a></span>Transform()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual Result&lt; <a class="el" href="classiceberg_1_1Literal.html">Literal</a> &gt; iceberg::TransformFunction::Transform </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classiceberg_1_1Literal.html">Literal</a> &amp;&#160;</td>
<td class="paramname"><em>literal</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p><a class="el" href="classiceberg_1_1Transform.html" title="Represents a transform used in partitioning or sorting in Iceberg.">Transform</a> an input <a class="el" href="classiceberg_1_1Literal.html" title="Literal is a literal value that is associated with a primitive type.">Literal</a> to a new <a class="el" href="classiceberg_1_1Literal.html" title="Literal is a literal value that is associated with a primitive type.">Literal</a>. </p>
<p>All transforms must return null for a null input value. </p>
<p>Implemented in <a class="el" href="classiceberg_1_1IdentityTransform.html#a038a733698c66d6565eefca026d1664a">iceberg::IdentityTransform</a>, <a class="el" href="classiceberg_1_1BucketTransform.html#ade142bc532fe7e108bc317f7e52f1853">iceberg::BucketTransform</a>, <a class="el" href="classiceberg_1_1TruncateTransform.html#a2a8fe5828f4fa5fd42c17e11c4561b06">iceberg::TruncateTransform</a>, <a class="el" href="classiceberg_1_1YearTransform.html#ab6a9e6cb09b2b642d45e87022e4eafd6">iceberg::YearTransform</a>, <a class="el" href="classiceberg_1_1MonthTransform.html#a8b6fcd3edd1e043ab7519e3ceed420c9">iceberg::MonthTransform</a>, <a class="el" href="classiceberg_1_1DayTransform.html#a9617e7803992d5a1d6ad6200c65cba9b">iceberg::DayTransform</a>, <a class="el" href="classiceberg_1_1HourTransform.html#a6b78071b98fe8457e819dd5873403b46">iceberg::HourTransform</a>, and <a class="el" href="classiceberg_1_1VoidTransform.html#a9554ab7ce622f430ba650747f53f8472">iceberg::VoidTransform</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>iceberg/<a class="el" href="transform_8h_source.html">transform.h</a></li>
<li>iceberg/<b>transform.cc</b></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8
</small></address>
</body>
</html>