SAP HANA CE Functions - Calculation Engine Plan Operators
SAP HANA CE Functions - Calculation Engine Plan Operators
Relational operators that allow a user to bypass the SQL processor during
evaluation and to directly interact with the calculation engine.
1.
CE_COLUMN_TABLE
The CE_COLUMN_TABLE operator provides access to an existing column
table.
Example:
ot_books1 = CE_COLUMN_TABLE("BOOKS");
ot_books2 = CE_COLUMN_TABLE("BOOKS", ["TITLE","PRICE","CRCY"]);
This example only works on a column table and does not invoke the SQL
processor.
It is semantically equivalent to the following:
ot_books3 = SELECT * FROM books;
ot_books4 = SELECT title, price, crcy FROM books;
2.
CE_JOIN_VIEW
The CE_JOIN_VIEW operator returns results for an existing join view (also
known as Attribute View).
out = CE_JOIN_VIEW("PRODUCT_SALES", ["PRODUCT_KEY",
"PRODUCT_TEXT", "SALES"]);
Retrieves the attributes PRODUCT_KEY, PRODUCT_TEXT, and SALES from the
join view PRODUCT_SALES.
It is equivalent to the following SQL:
out = SELECT product_key, product_text, sales FROM product_sales;
3.
CE_OLAP_VIEW
The CE_OLAP_VIEW operator returns results for an existing OLAP view (also
know as an Analytical View).
out = CE_OLAP_VIEW("OLAP_view", ["DIM1", "KF"]);
Is equivalent to the following SQL:
out = select dim1, SUM(kf) FROM OLAP_view GROUP BY dim1;
4.
CE_CALC_VIEW
The CE_CALC_VIEW operator returns results for an existing calculation view.
Example:
out = CE_CALC_VIEW("_SYS_SS_CE_TESTCECTABLE_RET", ["CID", "CNAME"]);
Semantically equivalent to the following SQL:
out = SELECT cid, cname FROM "_SYS_SS_CE_TESTCECTABLE_RET";
Relational operators
The calculation engine plan operators presented in this section provide the
functionality of relational operators which are directly executed in the
calculation engine.
5.
CE_JOIN
The CE_JOIN operator calculates a natural (inner) join of the given pair of
tables on a list of join attributes. For each pair of join attributes, only one
attribute will be in the result. Optionally, a projection list of attribute names
can be given to restrict the output to the given attributes. If a projection list
is provided, it must include the join attributes. Finally, the plan operator
requires each pair of join attributes to have identical attribute names. In
case of join attributes having different names, one of them must be
renamed prior to the join.
Example:
ot_pubs_books1 = CE_JOIN (:lt_pubs, :it_books,["PUBLISHER"]);
ot_pubs_books2 = CE_JOIN (:lt_pubs, :it_books,
["PUBLISHER"], ["TITLE","NAME","PUBLISHER" ,"YEAR" ]);
This example is semantically equivalent to the following SQL but does not
invoke the SQL processor.
ot_pubs_books3 = SELECT P.publisher AS publisher, name, street, post_code,
city, country,
isbn, title, edition, year, price,
crcy FROM :lt_pubs AS P,
:it_books AS B
WHERE P.publisher = B.publisher;
CE_LEFT_OUTER_JOIN
Calculate the left outer join. Besides the function name, the syntax is the
same as for CE_JOIN.
7.
CE_RIGHT_OUTER_JOIN
Calculate the right outer join. Besides the function name, the syntax is the
same as for CE_JOIN.
8.
9.
CE_PROJECTION
Restricts the columns in the schema of table variable var_table to those
mentioned in the projection list.
Example:
ot_books1 = CE_PROJECTION (:it_books,["TITLE","PRICE", "CRCY" AS
"CURRENCY"], '"PRICE" > 50');
Semantically equivalent to the following SQL:
ot_books2= SELECT title, price, crcy AS currency FROM :it_books WHERE
price > 50;
10.
CE_CALC
CE_CALC is used inside other operators discussed in this section. It
evaluates an expression and is usually then bound to a new column.
Example:
with_tax = CE_PROJECTION(:product, ["CID", "CNAME", "OID", "SALES",
CE_CALC('"SALES" * :vat_rate', decimal(10,2)) AS "SALES_VAT"], '"CNAME" =
'':cname''');
Semantically equivalent to the following SQL:
CE_AGGREGATION
Groups the input and computes aggregates for each group.
Example:
ot_books1 = CE_AGGREGATION (:it_books, [COUNT ("PUBLISHER") AS
"CNT"], ["YEAR"]);
Semantically equivalent to the following SQL:
ot_books2 = SELECT COUNT (publisher) AS cnt, year FROM :it_books GROUP
BY year;
12.
CE_UNION_ALL
The CE_UNION_ALL function is semantically equivalent to SQL UNION ALL
statement. It computes the union of two tables which need to have identical
schemas. The CE_UNION_ALL function preserves duplicates
Example:
ot_all_books1 = CE_UNION_ALL (:lt_books, :it_audiobooks);
Semantically equivalent to the following SQL:
ot_all_books2 = SELECT * FROM :lt_books UNION ALL SELECT * FROM
:it_audiobooks;
Special Operators
In this section we discuss operators that have no immediate counterpart in
SQL.
13.
CE_VERTICAL_UNION
For each input, applies the concatenation of their columns. Optionally
columns can be renamed. Clearly, all input tables must have the same
cardinality.
Syntax:
CE_VERTICAL_UNION(:input1, [project_att1 {AS new_param_name}, ...],
:input2, [project_att1 {AS new_param_name}, ...], ...)
Example:
out = CE_VERTICAL_UNION(:firstname, ["ID", "FIRSTNAME" AS
"GIVENNAME"], :lastname, ["LASTNAME" AS "FAMILYNAME"]);
The vertical union is sensitive to the ordering of its input. SQL statements
and many calculation engine plan operators may reorder their input or
return their result in different orders across invocations. This may lead to
unexpected results.
14.
CE_CONVERSION
Applies a unit conversion to input table 'input1' and returns the converted
values. Result columns can optionally be renamed.
Key
Values
Mandato
ry
Y
Default
'currency'
Typ
e
key
'family'
'method'
'ERP'
key
none
error_handli
ng
'fail on error',
'set to null',
'keep
unconverted'
key
'fail on error'
'output'
combinations
of 'input',
'unconverted',
'converted',
'passed_throu
gh',
'output_unit',
'source_unit',
key
'converted,
passed_throu
gh,
output_unit'
Key
none
Documentat
ion
the family of
the
conversion
to be used
the
conversion
method
The reaction
if a rate
could not be
determined
for a row
which
attributes
should be
included in
the output
Value Type
s
'target_unit', 'reference_date'
'source_unit'
Any
Consta
nt
Mandato
ry
Default
Documentat
ion
None
'target_unit'
Any
Consta
nt
None
'reference_date'
Any
Consta
None
the default
source unit
for any kind
of
conversion
the default
target unit
for any kind
of
conversion
the default
nt
'source_unit_colum
n'
colu
mn in
input
table
colum
n
name
None
'target_unit_column
'
colu
mn in
input
table
colum
n
name
None
'reference_date_col
umn'
colu
mn in
input
table
colum
n
name
None
'output_unit_colum
n'
Any
colum
n
name
"OUTPUT_UN
IT"
reference
date for any
kind of
conversion
the name of
the column
containing
the source
unit in the
input table
the name of
the column
containing
the target
unit in the
input table
the default
reference
date for any
kind of
conversion
the name of
the column
containing
the target
unit in the
output table
Values
Type
Mandatory
Default
'client'
Any
Constant
None
'conversion_ty
pe'
Any
Constant
'M'
'schema'
Any
schema
name
current
schema
Documentat
ion
the client as
stored in the
tables
the
conversion
type as
stored in the
tables
the default
schema in
which the
conversion
tables
should be
looked up
Example:
conv_tab = CE_CONVERSION(:input, [family = 'currency', method = 'ERP',
client = '004', conversion_type = 'M', target_unit = 'EUR',
source_unit_column = "WAERK", reference_date_column = "ERDAT",
output_unit_column = "TRGCUR"]);
15.
TRACE
The TRACE operator is used to debug SQLScript procedures. It traces the
tabular data passed as its argument into a local temporary table and returns
its input unmodified. The names of the temporary tables can be retrieved
from the SYS.SQLSCRIPT_TRACE view.
out = TRACE(:input);