blob: b9483c9fc8443ce011fa20b1459b0856753d6c10 [file] [log] [blame]
<!-- This file was created using the HTML documentation generator. -->
<!-- Creation date: Mon Apr 05 13:13:37 BST 2021-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Metamodel Documentation (platform:/resource/org.eclipse.efbt.cocalimo.dtm.model.core/model/dtm_sql_views.ecore)</title>
<script type="text/javascript">
//<![CDATA[
// TOC script based on code taken from http://www.quirksmode.org/dom/toc.html
function makeTOC() {
var toc = document.createElement('div')
toc.id = "toc";
toc.innerHTML = "Table of Contents"
document.body.appendChild(toc);
var innertocDiv = createTOC()
toc.appendChild(innertocDiv);
}
function createTOC() {
var y = document.createElement('div');
y.id = 'innertoc';
//var a = y.appendChild(document.createElement('span'));
//a.onclick = showhideTOC;
//a.id = 'contentheader';
//a.innerHTML = 'Show Table of Contents';
var z = y.appendChild(document.createElement('div'));
//z.onclick = showhideTOC;
var toBeTOCced = getElementsByTagNames('h1,h2,h3');
if (toBeTOCced.length < 2) return false;
var hCount = 0;
var hhCount = 0;
var hhhCount = 0;
for (var i=0;i<toBeTOCced.length;i++) {
var tmp = document.createElement('a');
tmp.className = 'page';
var text;
var textPre;
if (toBeTOCced[i].nodeName == 'h2'){
tmp.className += ' indent';
textPre = hCount + "."+ ++hhCount + ". ";
}
else if (toBeTOCced[i].nodeName == 'h3'){
tmp.className += ' extraindent';
textPre = hCount + "."+ hhCount + "."+ ++hhhCount +". ";
}
else {
textPre = ++hCount + ". ";
hhCount = 0;
hhhCount = 0;
}
text = textPre + toBeTOCced[i].textContent;
toBeTOCced[i].innerHTML = textPre + toBeTOCced[i].innerHTML;
tmp.innerHTML = text;
z.appendChild(tmp);
var headerId = toBeTOCced[i].id || 'link' + i;
tmp.href = '#' + headerId;
toBeTOCced[i].id = headerId;
}
return y;
}
function getElementsByTagNames(list,obj) {
if (!obj) var obj = document;
var tagNames = list.split(',');
var resultArray = new Array();
for (var i=0;i<tagNames.length;i++) {
var tags = obj.getElementsByTagName(tagNames[i]);
for (var j=0;j<tags.length;j++) {
resultArray.push(tags[j]);
}
}
var testNode = resultArray[0];
if (!testNode) return [];
if (testNode.sourceIndex) {
resultArray.sort(function (a,b) {
return a.sourceIndex - b.sourceIndex;
});
}
else if (testNode.compareDocumentPosition) {
resultArray.sort(function (a,b) {
return 3 - (a.compareDocumentPosition(b) & 6);
});
}
return resultArray;
}
//]]>
</script>
<link rel="stylesheet" type="text/css" href="https://raw.github.com/necolas/normalize.css/master/normalize.css" />
<style>
#toc {
position: fixed;
right: 0;
top: 0;
background-color:#eee;
overflow: scroll;
border: 1px dashed;
}
#toc #innertoc {
display: none;
height: 500px;
} /* Hide the full TOC by default */
#toc:hover #innertoc{
display: block; /* Show it on hover */
}
td {
border: 1px solid;
}
.page{
display:table-row;
}
.indent {
text-indent:12pt;
}
.extraindent {
text-indent:14pt;
}
</style>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body onload="makeTOC();">
<h1 id="dtmsqlviews"><a href="#dtmsqlviews"><span class="packageName">dtm_sql_views</span> package</a></h1>
<p>This package describes the set of SQLViews, each SQLView represents a DataSetTransformation which transforms
data from one DataSet to another in an immutable side-effect free fashion. They use concepts from the well-known SQL StructuredQueryLanguage.</p>
<pre><code>The transformed dataset is created just once by the transformation and then never amended (it is immutable)
The only data that can be used in the transformation is the data from the source dataset(s), so it cannot use anything else including
'global variables' (which do not exist in the compitational model, the only data created by the transformation is the data in the resulting transformed dataset,
no other data is created or affected so the transformations are side-effect free.
</code></pre>
<div class="">EPackage properties:</div>
<div class="keyValue"><span class="label">Namespace Prefix: </span><span class="teletype">dtm_sql_views</span></div>
<div class="keyValue"><span class="label">Namespace URI: </span><span class="teletype">http://www.eclipse.org/efbt/dtm_sql_views</span></div>
<h2 id="dtmsqlviewsAggregateEnrichmentView"><a href="#dtmsqlviewsAggregateEnrichmentView"><a href="#dtmsqlviewsAggregateEnrichmentView">AggregateEnrichmentView</a></a></h2>
<p>An SQLView which represents a grouping of rows of the single source table of the associated table,
according to a set of Columns, and creates extra column(s) which runs a specified aggregation function over the group.
This is equivalent to the GroupBy commands in SQL such as select ccy, country, sum(amount) from trades, groupby ccy, country.
The resulting table structure will be a column for each of the groupBy columns, with one column added per calculated column.
There will likely be considerably less rows in the results of the view, for example if we are grouping on million trades
by currency, there will be on row per unique currency in the results.
All SQLViews are associated with a DerivedCube, the source Cubes for the view are defined by the source Cubes of the associated Cube.</p>
<h4><b>Supertype:</b><a href="#dtmsqlviewsSQLView">SQLView</a></h4><table>
<tr>
<th colspan="3"><div class="tableHeader">References</div></th>
</tr>
<tr>
<th><div class="columnHeader">Name</div></th>
<th><div class="columnHeader">Properties</div></th>
<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr> <td><div id="dtmsqlviewsAggregateEnrichmentView.functions" class="teletype">functions</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#columntransformationlogicAggregateColumnFunction">AggregateColumnFunction</a></span></div>
<div class="label">Cardinality: [0..*]</div>
<div class="label">Containment</div>
</td>
<td> <p>Aggregated ColumnFunctions</p>
</td>
</tr><tr> <td><div id="dtmsqlviewsAggregateEnrichmentView.groupByClause" class="teletype">groupByClause</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#dtmsqlviewsGroupByClause">GroupByClause</a></span></div>
<div class="label">Cardinality: [0..1]</div>
<div class="label">Containment</div>
</td>
<td> <p>The GroupBy clause which includes the GroupBy columns</p>
</td>
</tr></table>
<a href="#dtm_sql_views.AggregateEnrichmentView.ref"></a>
<h2 id="dtmsqlviewsAggregateEnrichmentViewAndOrderBy"><a href="#dtmsqlviewsAggregateEnrichmentViewAndOrderBy"><a href="#dtmsqlviewsAggregateEnrichmentViewAndOrderBy">AggregateEnrichmentViewAndOrderBy</a></a></h2>
<p>An SQLView which represents a grouping of rows of the single source table of the associated table,
according to a set of Columns, and creates extra column(s) which runs a specified aggregation function over the group.
This is equivalent to the GroupBy commands in SQL such as select ccy, country, sum(amount) from trades, groupby ccy, country.
The resulting table structure will be a column for each of the groupBy columns, with one column added per calculated column.
There will likely be considerably less rows in the results of the view, for example if we are grouping on million trades
by currency, there will be on row per unique currency in the results.
All SQLViews are associated with a DerivedCube, the source Cubes for the view are defined by the source Cubes of the associated Cube.</p>
<h4><b>Supertype:</b><a href="#dtmsqlviewsSQLView">SQLView</a></h4><table>
<tr>
<th colspan="3"><div class="tableHeader">References</div></th>
</tr>
<tr>
<th><div class="columnHeader">Name</div></th>
<th><div class="columnHeader">Properties</div></th>
<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr> <td><div id="dtmsqlviewsAggregateEnrichmentViewAndOrderBy.functions" class="teletype">functions</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#columntransformationlogicAggregateColumnFunction">AggregateColumnFunction</a></span></div>
<div class="label">Cardinality: [0..*]</div>
<div class="label">Containment</div>
</td>
<td> <p>Aggregated ColumnFunctions</p>
</td>
</tr><tr> <td><div id="dtmsqlviewsAggregateEnrichmentViewAndOrderBy.groupByClause" class="teletype">groupByClause</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#dtmsqlviewsGroupByClause">GroupByClause</a></span></div>
<div class="label">Cardinality: [0..1]</div>
<div class="label">Containment</div>
</td>
<td> <p>The GroupBy clause which includes the GroupBy columns</p>
</td>
</tr><tr> <td><div id="dtmsqlviewsAggregateEnrichmentViewAndOrderBy.orderByVariable" class="teletype">orderByVariable</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#coreVARIABLE">VARIABLE</a></span></div>
<div class="label">Cardinality: [0..1]</div>
</td>
<td> </td>
</tr></table>
<a href="#dtm_sql_views.AggregateEnrichmentViewAndOrderBy.ref"></a>
<h2 id="dtmsqlviewsBaseViewIncorporatingDeltas"><a href="#dtmsqlviewsBaseViewIncorporatingDeltas"><a href="#dtmsqlviewsBaseViewIncorporatingDeltas">BaseViewIncorporatingDeltas</a></a></h2>
<h4><b>Supertype:</b><a href="#dtmsqlviewsSQLView">SQLView</a></h4><table>
<tr>
<th colspan="3"><div class="tableHeader">References</div></th>
</tr>
<tr>
<th><div class="columnHeader">Name</div></th>
<th><div class="columnHeader">Properties</div></th>
<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr> <td><div id="dtmsqlviewsBaseViewIncorporatingDeltas.ultimateSourceCube" class="teletype">ultimateSourceCube</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#cubesFreeBirdToolsCube">FreeBirdToolsCube</a></span></div>
<div class="label">Cardinality: [0..1]</div>
</td>
<td> </td>
</tr></table>
<a href="#dtm_sql_views.BaseViewIncorporatingDeltas.ref"></a>
<h2 id="dtmsqlviewsCastColumnView"><a href="#dtmsqlviewsCastColumnView"><a href="#dtmsqlviewsCastColumnView">CastColumnView</a></a></h2>
<h4><b>Supertype:</b><a href="#dtmsqlviewsSQLView">SQLView</a></h4><table>
<tr>
<th colspan="3"><div class="tableHeader">References</div></th>
</tr>
<tr>
<th><div class="columnHeader">Name</div></th>
<th><div class="columnHeader">Properties</div></th>
<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr> <td><div id="dtmsqlviewsCastColumnView.sourceStructVariable" class="teletype">sourceStructVariable</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#efbtadvanceddatadefinitionStructTypedVariable">StructTypedVariable</a></span></div>
<div class="label">Cardinality: [0..1]</div>
</td>
<td> </td>
</tr><tr> <td><div id="dtmsqlviewsCastColumnView.targetStructVariable" class="teletype">targetStructVariable</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#efbtadvanceddatadefinitionStructTypedVariable">StructTypedVariable</a></span></div>
<div class="label">Cardinality: [0..1]</div>
</td>
<td> </td>
</tr></table>
<a href="#dtm_sql_views.CastColumnView.ref"></a>
<h2 id="dtmsqlviewsCopyView"><a href="#dtmsqlviewsCopyView"><a href="#dtmsqlviewsCopyView">CopyView</a></a></h2>
<p>An SQLView which represents a Copy of all rows of the single source cubw of the associated DereivedCube.
The resulting Cube Structure will be the same as that source cube.
The number of rows in the view will be the same as there were in the source cube.</p>
<h4><b>Supertype:</b><a href="#dtmsqlviewsSQLView">SQLView</a></h4><h2 id="dtmsqlviewsDeltaAccumulation"><a href="#dtmsqlviewsDeltaAccumulation"><a href="#dtmsqlviewsDeltaAccumulation">DeltaAccumulation</a></a></h2>
<h4><b>Supertype:</b><a href="#dtmsqlviewsSQLView">SQLView</a></h4><table>
<tr>
<th colspan="3"><div class="tableHeader">References</div></th>
</tr>
<tr>
<th><div class="columnHeader">Name</div></th>
<th><div class="columnHeader">Properties</div></th>
<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr> <td><div id="dtmsqlviewsDeltaAccumulation.ultimateSourceCube" class="teletype">ultimateSourceCube</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#cubesFreeBirdToolsCube">FreeBirdToolsCube</a></span></div>
<div class="label">Cardinality: [0..1]</div>
</td>
<td> </td>
</tr></table>
<a href="#dtm_sql_views.DeltaAccumulation.ref"></a>
<h2 id="dtmsqlviewsEnrichmentView"><a href="#dtmsqlviewsEnrichmentView"><a href="#dtmsqlviewsEnrichmentView">EnrichmentView</a></a></h2>
<p>An SQLView which represents a Copy of all rows of the single source cube of the associated DerivedCube,
and adds one or more calculated columns.
The resulting cube structure will be the same as that source cube, with one column added per calculated column,
although we can choose to Rename some of the columns from the source cube if we wish.</p>
<h4><b>Supertype:</b><a href="#dtmsqlviewsSQLView">SQLView</a></h4><table>
<tr>
<th colspan="3"><div class="tableHeader">References</div></th>
</tr>
<tr>
<th><div class="columnHeader">Name</div></th>
<th><div class="columnHeader">Properties</div></th>
<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr> <td><div id="dtmsqlviewsEnrichmentView.functions" class="teletype">functions</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#columntransformationlogicBasicColumnFunction">BasicColumnFunction</a></span></div>
<div class="label">Cardinality: [0..*]</div>
<div class="label">Containment</div>
</td>
<td> <p>The ColumnFunctions describing how to derive the new columns. Note that their will be a one to
one relationship between the rows in the resulting view and the rows in the source row. So the column function could<br/>
represent the addition of 2 columns in the source row for example.</p>
</td>
</tr><tr> <td><div id="dtmsqlviewsEnrichmentView.ignores" class="teletype">ignores</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#dtmsqlviewsIgnoreColumn">IgnoreColumn</a></span></div>
<div class="label">Cardinality: [0..*]</div>
<div class="label">Containment</div>
</td>
<td> <p>an IgnoreColumn for each column we want to ignore</p>
</td>
</tr><tr> <td><div id="dtmsqlviewsEnrichmentView.renames" class="teletype">renames</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#dtmsqlviewsRenameAs">RenameAs</a></span></div>
<div class="label">Cardinality: [0..*]</div>
<div class="label">Containment</div>
</td>
<td> <p>A set of Renames, these are similar is concept to the AS command in SQL,
e.g. in SQL select CCY as Currency from cube1, will mean that the cube structure of the resulting view has a column called Currency not CCY, and that cube1 naturally remains with having a column called CCY.</p>
</td>
</tr></table>
<a href="#dtm_sql_views.EnrichmentView.ref"></a>
<h2 id="dtmsqlviewsExplodeArrayOfStructsView"><a href="#dtmsqlviewsExplodeArrayOfStructsView"><a href="#dtmsqlviewsExplodeArrayOfStructsView">ExplodeArrayOfStructsView</a></a></h2>
<h4><b>Supertype:</b><a href="#dtmsqlviewsSQLView">SQLView</a></h4><table>
<tr>
<th colspan="3"><div class="tableHeader">References</div></th>
</tr>
<tr>
<th><div class="columnHeader">Name</div></th>
<th><div class="columnHeader">Properties</div></th>
<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr> <td><div id="dtmsqlviewsExplodeArrayOfStructsView.arraySourceColumn" class="teletype">arraySourceColumn</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#efbtadvanceddatadefinitionArrayTypedVariable">ArrayTypedVariable</a></span></div>
<div class="label">Cardinality: [0..1]</div>
</td>
<td> </td>
</tr><tr> <td><div id="dtmsqlviewsExplodeArrayOfStructsView.indexColumn" class="teletype">indexColumn</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#coreVARIABLE">VARIABLE</a></span></div>
<div class="label">Cardinality: [0..1]</div>
</td>
<td> </td>
</tr><tr> <td><div id="dtmsqlviewsExplodeArrayOfStructsView.targetStructColumn" class="teletype">targetStructColumn</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#efbtadvanceddatadefinitionStructTypedVariable">StructTypedVariable</a></span></div>
<div class="label">Cardinality: [0..1]</div>
</td>
<td> </td>
</tr></table>
<a href="#dtm_sql_views.ExplodeArrayOfStructsView.ref"></a>
<h2 id="dtmsqlviewsExplodeStructView"><a href="#dtmsqlviewsExplodeStructView"><a href="#dtmsqlviewsExplodeStructView">ExplodeStructView</a></a></h2>
<h4><b>Supertype:</b><a href="#dtmsqlviewsSQLView">SQLView</a></h4><table>
<tr>
<th colspan="3"><div class="tableHeader">References</div></th>
</tr>
<tr>
<th><div class="columnHeader">Name</div></th>
<th><div class="columnHeader">Properties</div></th>
<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr> <td><div id="dtmsqlviewsExplodeStructView.columnToUnpack" class="teletype">columnToUnpack</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#efbtadvanceddatadefinitionStructTypedVariable">StructTypedVariable</a></span></div>
<div class="label">Cardinality: [0..1]</div>
</td>
<td> </td>
</tr></table>
<a href="#dtm_sql_views.ExplodeStructView.ref"></a>
<h2 id="dtmsqlviewsFilterByConditionView"><a href="#dtmsqlviewsFilterByConditionView"><a href="#dtmsqlviewsFilterByConditionView">FilterByConditionView</a></a></h2>
<p>An SQLView which represents a Copy of all rows of the single source cube of the associated cube IF they meet a filter condition.
The resulting cube structure will be the same as that source cube.
The number of rows in the view will be the number of rows in the source table that meet the supplied condition.</p>
<h4><b>Supertype:</b><a href="#dtmsqlviewsSQLView">SQLView</a></h4><table>
<tr>
<th colspan="3"><div class="tableHeader">References</div></th>
</tr>
<tr>
<th><div class="columnHeader">Name</div></th>
<th><div class="columnHeader">Properties</div></th>
<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr> <td><div id="dtmsqlviewsFilterByConditionView.whereClause" class="teletype">whereClause</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#dtmsqlviewsWhereClause">WhereClause</a></span></div>
<div class="label">Cardinality: [0..1]</div>
<div class="label">Containment</div>
</td>
<td> <p>A WhereClause clause representing the filter condition</p>
</td>
</tr></table>
<a href="#dtm_sql_views.FilterByConditionView.ref"></a>
<h2 id="dtmsqlviewsFilterByStructClassColumnView"><a href="#dtmsqlviewsFilterByStructClassColumnView"><a href="#dtmsqlviewsFilterByStructClassColumnView">FilterByStructClassColumnView</a></a></h2>
<h4><b>Supertype:</b><a href="#dtmsqlviewsSQLView">SQLView</a></h4><table>
<tr>
<th colspan="3"><div class="tableHeader">References</div></th>
</tr>
<tr>
<th><div class="columnHeader">Name</div></th>
<th><div class="columnHeader">Properties</div></th>
<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr> <td><div id="dtmsqlviewsFilterByStructClassColumnView.renameAsStructColumn" class="teletype">renameAsStructColumn</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#efbtadvanceddatadefinitionStructTypedVariable">StructTypedVariable</a></span></div>
<div class="label">Cardinality: [0..1]</div>
</td>
<td> </td>
</tr><tr> <td><div id="dtmsqlviewsFilterByStructClassColumnView.structClass" class="teletype">structClass</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#cubesFreeBirdToolsCube">FreeBirdToolsCube</a></span></div>
<div class="label">Cardinality: [0..1]</div>
</td>
<td> </td>
</tr><tr> <td><div id="dtmsqlviewsFilterByStructClassColumnView.structColumn" class="teletype">structColumn</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#efbtadvanceddatadefinitionStructTypedVariable">StructTypedVariable</a></span></div>
<div class="label">Cardinality: [0..1]</div>
</td>
<td> </td>
</tr></table>
<a href="#dtm_sql_views.FilterByStructClassColumnView.ref"></a>
<h2 id="dtmsqlviewsGenericView"><a href="#dtmsqlviewsGenericView"><a href="#dtmsqlviewsGenericView">GenericView</a></a></h2>
<p>An SQLView which represents a custom transformation.</p>
<h4><b>Supertype:</b><a href="#dtmsqlviewsSQLView">SQLView</a></h4><table>
<tr>
<th colspan="3"><div class="tableHeader">References</div></th>
</tr>
<tr>
<th><div class="columnHeader">Name</div></th>
<th><div class="columnHeader">Properties</div></th>
<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr> <td><div id="dtmsqlviewsGenericView.groupByClause" class="teletype">groupByClause</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#dtmsqlviewsGroupByClause">GroupByClause</a></span></div>
<div class="label">Cardinality: [0..1]</div>
<div class="label">Containment</div>
</td>
<td> <p>A custom groupby clause</p>
</td>
</tr><tr> <td><div id="dtmsqlviewsGenericView.selectClause" class="teletype">selectClause</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#dtmsqlviewsSelectClause">SelectClause</a></span></div>
<div class="label">Cardinality: [0..1]</div>
<div class="label">Containment</div>
</td>
<td> <p>A custom select clause</p>
</td>
</tr><tr> <td><div id="dtmsqlviewsGenericView.whereClause" class="teletype">whereClause</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#dtmsqlviewsWhereClause">WhereClause</a></span></div>
<div class="label">Cardinality: [0..1]</div>
<div class="label">Containment</div>
</td>
<td> <p>A custom where clause</p>
</td>
</tr></table>
<a href="#dtm_sql_views.GenericView.ref"></a>
<h2 id="dtmsqlviewsGroupByClause"><a href="#dtmsqlviewsGroupByClause"><a href="#dtmsqlviewsGroupByClause">GroupByClause</a></a></h2>
<p>This is equivalent to the Group By section in SQL such as select ccy, country, sum(amount) from trades, group by ccy, country.
The resulting cube structure will be a column for each of the groupBy columns, with one column added per calculated column.
There will likely be considerably less rows in the results of the view, for example if we are grouping on million trades
by currency, there will be on row per unique currency in the results.</p>
<table>
<tr>
<th colspan="3"><div class="tableHeader">References</div></th>
</tr>
<tr>
<th><div class="columnHeader">Name</div></th>
<th><div class="columnHeader">Properties</div></th>
<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr> <td><div id="dtmsqlviewsGroupByClause.groupByColumns" class="teletype">groupByColumns</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#coreVARIABLE">VARIABLE</a></span></div>
<div class="label">Cardinality: [0..*]</div>
</td>
<td> <p>the columns to group by </p>
</td>
</tr></table>
<a href="#dtm_sql_views.GroupByClause.ref"></a>
<h2 id="dtmsqlviewsIgnoreColumn"><a href="#dtmsqlviewsIgnoreColumn"><a href="#dtmsqlviewsIgnoreColumn">IgnoreColumn</a></a></h2>
<p>Column to Ignore. Used in a JoinView if we dont want all the columns from the joined cubes to be in the resulting Views cube structure.</p>
<table>
<tr>
<th colspan="3"><div class="tableHeader">References</div></th>
</tr>
<tr>
<th><div class="columnHeader">Name</div></th>
<th><div class="columnHeader">Properties</div></th>
<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr> <td><div id="dtmsqlviewsIgnoreColumn.columnToIgnore" class="teletype">columnToIgnore</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#coreVARIABLE">VARIABLE</a></span></div>
<div class="label">Cardinality: [0..1]</div>
</td>
<td> <p>the column to Ignore</p>
</td>
</tr><tr> <td><div id="dtmsqlviewsIgnoreColumn.cube" class="teletype">cube</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#cubesFreeBirdToolsCube">FreeBirdToolsCube</a></span></div>
<div class="label">Cardinality: [0..1]</div>
</td>
<td> <p>the cube with the column to ignore.</p>
</td>
</tr></table>
<a href="#dtm_sql_views.IgnoreColumn.ref"></a>
<h2 id="dtmsqlviewsJoinView"><a href="#dtmsqlviewsJoinView"><a href="#dtmsqlviewsJoinView">JoinView</a></a></h2>
<p>An SQLView which represents a join of rows of two source cubes of the associated table, according to a join condition.
This is equivalent to joining 2 tables using SQL
The resulting cube structure will be a column for each of the columns in the 2 source cubes unless we specify that we want to ignore columns or rename columns.</p>
<h4><b>Supertype:</b><a href="#dtmsqlviewsSQLView">SQLView</a></h4><table>
<tr>
<th colspan="3"><div class="tableHeader">References</div></th>
</tr>
<tr>
<th><div class="columnHeader">Name</div></th>
<th><div class="columnHeader">Properties</div></th>
<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr> <td><div id="dtmsqlviewsJoinView.ignores" class="teletype">ignores</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#dtmsqlviewsIgnoreColumn">IgnoreColumn</a></span></div>
<div class="label">Cardinality: [0..*]</div>
<div class="label">Containment</div>
</td>
<td> <p>an IgnoreColumn for each column we want to ignore</p>
</td>
</tr><tr> <td><div id="dtmsqlviewsJoinView.renames" class="teletype">renames</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#dtmsqlviewsRenameAs">RenameAs</a></span></div>
<div class="label">Cardinality: [0..*]</div>
<div class="label">Containment</div>
</td>
<td> <p>A rename for each column we wish to rename</p>
</td>
</tr><tr> <td><div id="dtmsqlviewsJoinView.whereClause" class="teletype">whereClause</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#dtmsqlviewsWhereClause">WhereClause</a></span></div>
<div class="label">Cardinality: [0..1]</div>
<div class="label">Containment</div>
</td>
<td> <p>A WhereClause clause representing the join condition</p>
</td>
</tr></table>
<a href="#dtm_sql_views.JoinView.ref"></a>
<h2 id="dtmsqlviewsMakeArrayOfStructsView"><a href="#dtmsqlviewsMakeArrayOfStructsView"><a href="#dtmsqlviewsMakeArrayOfStructsView">MakeArrayOfStructsView</a></a></h2>
<h4><b>Supertype:</b><a href="#dtmsqlviewsSQLView">SQLView</a></h4><table>
<tr>
<th colspan="3"><div class="tableHeader">References</div></th>
</tr>
<tr>
<th><div class="columnHeader">Name</div></th>
<th><div class="columnHeader">Properties</div></th>
<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr> <td><div id="dtmsqlviewsMakeArrayOfStructsView.groupingVariable" class="teletype">groupingVariable</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#coreVARIABLE">VARIABLE</a></span></div>
<div class="label">Cardinality: [0..1]</div>
</td>
<td> </td>
</tr><tr> <td><div id="dtmsqlviewsMakeArrayOfStructsView.sourceStructVariable" class="teletype">sourceStructVariable</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#efbtadvanceddatadefinitionStructTypedVariable">StructTypedVariable</a></span></div>
<div class="label">Cardinality: [0..1]</div>
</td>
<td> </td>
</tr><tr> <td><div id="dtmsqlviewsMakeArrayOfStructsView.targetArrayVariable" class="teletype">targetArrayVariable</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#efbtadvanceddatadefinitionArrayTypedVariable">ArrayTypedVariable</a></span></div>
<div class="label">Cardinality: [0..1]</div>
</td>
<td> </td>
</tr></table>
<a href="#dtm_sql_views.MakeArrayOfStructsView.ref"></a>
<h2 id="dtmsqlviewsMakeStructView"><a href="#dtmsqlviewsMakeStructView"><a href="#dtmsqlviewsMakeStructView">MakeStructView</a></a></h2>
<h4><b>Supertype:</b><a href="#dtmsqlviewsSQLView">SQLView</a></h4><table>
<tr>
<th colspan="3"><div class="tableHeader">References</div></th>
</tr>
<tr>
<th><div class="columnHeader">Name</div></th>
<th><div class="columnHeader">Properties</div></th>
<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr> <td><div id="dtmsqlviewsMakeStructView.targetVariable" class="teletype">targetVariable</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#efbtadvanceddatadefinitionStructTypedVariable">StructTypedVariable</a></span></div>
<div class="label">Cardinality: [0..1]</div>
</td>
<td> </td>
</tr></table>
<a href="#dtm_sql_views.MakeStructView.ref"></a>
<h2 id="dtmsqlviewsRenameAs"><a href="#dtmsqlviewsRenameAs"><a href="#dtmsqlviewsRenameAs">RenameAs</a></a></h2>
<p>Column to rename in the resulting View. similar to AS in SQL. Particularly useful if a Join View would result in 2 columns with the same name</p>
<table>
<tr>
<th colspan="3"><div class="tableHeader">References</div></th>
</tr>
<tr>
<th><div class="columnHeader">Name</div></th>
<th><div class="columnHeader">Properties</div></th>
<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr> <td><div id="dtmsqlviewsRenameAs.fromCube" class="teletype">fromCube</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#cubesFreeBirdToolsCube">FreeBirdToolsCube</a></span></div>
<div class="label">Cardinality: [0..1]</div>
</td>
<td> <p>The source cube containing the Column</p>
</td>
</tr><tr> <td><div id="dtmsqlviewsRenameAs.fromVariable" class="teletype">fromVariable</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#coreVARIABLE">VARIABLE</a></span></div>
<div class="label">Cardinality: [0..1]</div>
</td>
<td> <p>the Column from the source cube that we choose to Rename in the resulting View</p>
</td>
</tr><tr> <td><div id="dtmsqlviewsRenameAs.toVariable" class="teletype">toVariable</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#coreVARIABLE">VARIABLE</a></span></div>
<div class="label">Cardinality: [0..1]</div>
</td>
<td> <p>What Column would we like to use instead.</p>
</td>
</tr></table>
<a href="#dtm_sql_views.RenameAs.ref"></a>
<h2 id="dtmsqlviewsSQLView"><a href="#dtmsqlviewsSQLView"><a href="#dtmsqlviewsSQLView">SQLView</a></a></h2>
<p>An SQLView represents a DataSetTransformation which transforms data from one DataSet to another in an immutable side-effect free fashion. They use concepts from the well-known SQL StructuredQueryLanguage.</p>
<pre><code>The transformed dataset is created just once by the transformation and then never amended (it is immutable)
The only data that can be used in the transformation is the data from the source dataset(s), so it cannot use anything else including
'global variables' (which do not exist in the compitational model, the only data created by the transformation is the data in the resulting transformed dataset,
no other data is created or affected so the transformations are side-effect free.
</code></pre>
<h4><b>Supertype:</b><a href="#transformationDataSetTransformation">DataSetTransformation</a></h4><table>
<tr>
<th colspan="3"><div class="tableHeader">Attributes</div></th>
</tr>
<tr>
<th><div class="columnHeader">Name</div></th>
<th><div class="columnHeader">Properties</div></th>
<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr> <td><div id="dtmsqlviewsSQLView.VTL_Code" class="teletype">VTL_Code</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype">EString</span></div>
<div class="label">Cardinality: [0..1]</div>
</td> <td></td>
</tr></table>
<a href="#dtm_sql_views.SQLView.attr"></a>
<h2 id="dtmsqlviewsSelectClause"><a href="#dtmsqlviewsSelectClause"><a href="#dtmsqlviewsSelectClause">SelectClause</a></a></h2>
<p>A Set of Functions representing a select clause in SQL</p>
<table>
<tr>
<th colspan="3"><div class="tableHeader">References</div></th>
</tr>
<tr>
<th><div class="columnHeader">Name</div></th>
<th><div class="columnHeader">Properties</div></th>
<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr> <td><div id="dtmsqlviewsSelectClause.aggregateFunctions" class="teletype">aggregateFunctions</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#functionsAggregateFunction">AggregateFunction</a></span></div>
<div class="label">Cardinality: [0..*]</div>
</td>
<td> <p>Aggregating functions</p>
</td>
</tr><tr> <td><div id="dtmsqlviewsSelectClause.basicFunctions" class="teletype">basicFunctions</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#functionsBasicFunction">BasicFunction</a></span></div>
<div class="label">Cardinality: [0..1]</div>
</td>
<td> <p>Non-aggregating functions</p>
</td>
</tr><tr> <td><div id="dtmsqlviewsSelectClause.varaibles" class="teletype">varaibles</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#coreVARIABLE">VARIABLE</a></span></div>
<div class="label">Cardinality: [0..*]</div>
</td>
<td> <p>Column</p>
</td>
</tr></table>
<a href="#dtm_sql_views.SelectClause.ref"></a>
<h2 id="dtmsqlviewsUnionView"><a href="#dtmsqlviewsUnionView"><a href="#dtmsqlviewsUnionView">UnionView</a></a></h2>
<p>An SQLView which represents a Union of multiple source cubes of the associated DerivedCube
.The source cubes must have the same Structure. This is equivalent to Union of tables in SQL.
The resulting cube structure will be the same as the source cubes and include all the rows from all the source cubes.</p>
<h4><b>Supertype:</b><a href="#dtmsqlviewsSQLView">SQLView</a></h4><h2 id="dtmsqlviewsVersionedSQLViewsModule"><a href="#dtmsqlviewsVersionedSQLViewsModule"><a href="#dtmsqlviewsVersionedSQLViewsModule">VersionedSQLViewsModule</a></a></h2>
<p>A module of SQLViews with a version number</p>
<h4><b>Supertype:</b><a href="#transformationVersionedFunctionalModuleLogic">VersionedFunctionalModuleLogic</a></h4><table>
<tr>
<th colspan="3"><div class="tableHeader">References</div></th>
</tr>
<tr>
<th><div class="columnHeader">Name</div></th>
<th><div class="columnHeader">Properties</div></th>
<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr> <td><div id="dtmsqlviewsVersionedSQLViewsModule.sqlViews" class="teletype">sqlViews</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#dtmsqlviewsSQLView">SQLView</a></span></div>
<div class="label">Cardinality: [0..*]</div>
<div class="label">Containment</div>
</td>
<td> <p>The SQLViews in the module.</p>
</td>
</tr></table>
<a href="#dtm_sql_views.VersionedSQLViewsModule.ref"></a>
<h2 id="dtmsqlviewsWhereClause"><a href="#dtmsqlviewsWhereClause"><a href="#dtmsqlviewsWhereClause">WhereClause</a></a></h2>
<p>WhereClause contains a boolean function used in filters and joins. This is equivalent to where clause in SQL. </p>
<table>
<tr>
<th colspan="3"><div class="tableHeader">References</div></th>
</tr>
<tr>
<th><div class="columnHeader">Name</div></th>
<th><div class="columnHeader">Properties</div></th>
<th><div class="columnHeader">Documentation</div></th>
</tr>
<tr> <td><div id="dtmsqlviewsWhereClause.function" class="teletype">function</div>
</td>
<td><div class="keyValue"><span class="label">T: </span><span class="teletype"><a href="#functionsBooleanFunction">BooleanFunction</a></span></div>
<div class="label">Cardinality: [0..1]</div>
<div class="label">Containment</div>
</td>
<td> <p>The boolean function</p>
</td>
</tr></table>
<a href="#dtm_sql_views.WhereClause.ref"></a>
</body>
</html>