mirror of
https://github.com/apache/impala.git
synced 2025-12-19 09:58:28 -05:00
This now gives a clean RAT check with bin/check-rat-report.py, which is one way for the Impala community to check compliance with ASF rules on intellectual property. Change-Id: I2ad06435f84a65ba126759e42a18fdaf52cd7036 Reviewed-on: http://gerrit.cloudera.org:8080/5232 Reviewed-by: Jim Apple <jbapple-impala@apache.org> Tested-by: Impala Public Jenkins Reviewed-by: John Russell <jrussell@cloudera.com>
135 lines
5.6 KiB
XML
135 lines
5.6 KiB
XML
<?xml version="1.0" encoding="UTF-8"?><!--
|
|
Licensed to the Apache Software Foundation (ASF) under one
|
|
or more contributor license agreements. See the NOTICE file
|
|
distributed with this work for additional information
|
|
regarding copyright ownership. The ASF licenses this file
|
|
to you under the Apache License, Version 2.0 (the
|
|
"License"); you may not use this file except in compliance
|
|
with the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing,
|
|
software distributed under the License is distributed on an
|
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
KIND, either express or implied. See the License for the
|
|
specific language governing permissions and limitations
|
|
under the License.
|
|
-->
|
|
<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
|
|
<concept id="functions">
|
|
|
|
<title>Overview of Impala Functions</title>
|
|
<titlealts audience="PDF"><navtitle>Functions</navtitle></titlealts>
|
|
<prolog>
|
|
<metadata>
|
|
<data name="Category" value="Impala"/>
|
|
<data name="Category" value="Impala Functions"/>
|
|
<data name="Category" value="SQL"/>
|
|
<data name="Category" value="Data Analysts"/>
|
|
<data name="Category" value="Developers"/>
|
|
</metadata>
|
|
</prolog>
|
|
|
|
<conbody>
|
|
|
|
<p>
|
|
Functions let you apply arithmetic, string, or other computations and transformations to Impala data. You
|
|
typically use them in <codeph>SELECT</codeph> lists and <codeph>WHERE</codeph> clauses to filter and format
|
|
query results so that the result set is exactly what you want, with no further processing needed on the
|
|
application side.
|
|
</p>
|
|
|
|
<p>
|
|
Scalar functions return a single result for each input row. See <xref href="impala_functions.xml#builtins"/>.
|
|
</p>
|
|
|
|
<codeblock>[localhost:21000] > select name, population from country where continent = 'North America' order by population desc limit 4;
|
|
[localhost:21000] > select upper(name), population from country where continent = 'North America' order by population desc limit 4;
|
|
+-------------+------------+
|
|
| upper(name) | population |
|
|
+-------------+------------+
|
|
| USA | 320000000 |
|
|
| MEXICO | 122000000 |
|
|
| CANADA | 25000000 |
|
|
| GUATEMALA | 16000000 |
|
|
+-------------+------------+
|
|
</codeblock>
|
|
<p>
|
|
Aggregate functions combine the results from multiple rows:
|
|
either a single result for the entire table, or a separate result for each group of rows.
|
|
Aggregate functions are frequently used in combination with <codeph>GROUP BY</codeph>
|
|
and <codeph>HAVING</codeph> clauses in the <codeph>SELECT</codeph> statement.
|
|
See <xref href="impala_aggregate_functions.xml#aggregate_functions"/>.
|
|
</p>
|
|
|
|
<codeblock>[localhost:21000] > select continent, <b>sum(population)</b> as howmany from country <b>group by continent</b> order by howmany desc;
|
|
+---------------+------------+
|
|
| continent | howmany |
|
|
+---------------+------------+
|
|
| Asia | 4298723000 |
|
|
| Africa | 1110635000 |
|
|
| Europe | 742452000 |
|
|
| North America | 565265000 |
|
|
| South America | 406740000 |
|
|
| Oceania | 38304000 |
|
|
+---------------+------------+
|
|
</codeblock>
|
|
|
|
<p>
|
|
User-defined functions (UDFs) let you code your own logic. They can be either scalar or aggregate functions.
|
|
UDFs let you implement important business or scientific logic using high-performance code for Impala to automatically parallelize.
|
|
You can also use UDFs to implement convenience functions to simplify reporting or porting SQL from other database systems.
|
|
See <xref href="impala_udf.xml#udfs"/>.
|
|
</p>
|
|
|
|
<codeblock>[localhost:21000] > select <b>rot13('Hello world!')</b> as 'Weak obfuscation';
|
|
+------------------+
|
|
| weak obfuscation |
|
|
+------------------+
|
|
| Uryyb jbeyq! |
|
|
+------------------+
|
|
[localhost:21000] > select <b>likelihood_of_new_subatomic_particle(sensor1, sensor2, sensor3)</b> as probability
|
|
> from experimental_results group by experiment;
|
|
</codeblock>
|
|
|
|
<p>
|
|
Each function is associated with a specific database. For example, if you issue a <codeph>USE somedb</codeph>
|
|
statement followed by <codeph>CREATE FUNCTION somefunc</codeph>, the new function is created in the
|
|
<codeph>somedb</codeph> database, and you could refer to it through the fully qualified name
|
|
<codeph>somedb.somefunc</codeph>. You could then issue another <codeph>USE</codeph> statement
|
|
and create a function with the same name in a different database.
|
|
</p>
|
|
|
|
<p>
|
|
Impala built-in functions are associated with a special database named <codeph>_impala_builtins</codeph>,
|
|
which lets you refer to them from any database without qualifying the name.
|
|
</p>
|
|
|
|
<codeblock>[localhost:21000] > show databases;
|
|
+-------------------------+
|
|
| name |
|
|
+-------------------------+
|
|
| <b>_impala_builtins</b> |
|
|
| analytic_functions |
|
|
| avro_testing |
|
|
| data_file_size |
|
|
...
|
|
[localhost:21000] > show functions in _impala_builtins like '*subs*';
|
|
+-------------+-----------------------------------+
|
|
| return type | signature |
|
|
+-------------+-----------------------------------+
|
|
| STRING | substr(STRING, BIGINT) |
|
|
| STRING | substr(STRING, BIGINT, BIGINT) |
|
|
| STRING | substring(STRING, BIGINT) |
|
|
| STRING | substring(STRING, BIGINT, BIGINT) |
|
|
+-------------+-----------------------------------+
|
|
</codeblock>
|
|
|
|
<p>
|
|
<b>Related statements:</b> <xref href="impala_create_function.xml#create_function"/>,
|
|
<xref href="impala_drop_function.xml#drop_function"/>
|
|
</p>
|
|
</conbody>
|
|
</concept>
|