之前有说Phoenix的一些操作,无非就是一些概念上的一些内容,这些内容也是笔者根据一个微信公众号来的,说白了就是一个转载,后来笔者发现那个哥们也是吧官网翻译了一遍。这篇主要是笔者在使用Phoenix的过程中会用到的一些内容且在前一篇博客中没有涉及到的部分做一个深入的介绍吧。
本文原文链接:大数据框架开发基础之Phoenix扩展
Phoenix的命令行操作
怎样在已有的表的基础上增加一列
ALTER TABLE [table_name] ADD [culomn_name] [type];
删除已有表的字段
ALTER TABLE [table_name] DROP COLUMN [culomn_name];
Phoenix常见的脚本的使用
SqlLine.py
Usage:
$ sqlline.py <zookeeper> <optional_sql_file>
Example:
$ sqlline.py localhost
$ sqlline.py localhost <examples dir>/STOCK_SYMBOL.sql
psql.py
这个脚本可以用来导入外来的数据,但仅限sql/csv
Usage:
psql [-t table-name] [-h comma-separated-column-names | in-line] <zookeeper> <path-to-sql-or-csv-file>...
Example 1.
Create table, upsert row and run query using single .sql file
./psql.py localhost <examples dir>/STOCK_SYMBOL.sql
Example 2.
Create table, load CSV data and run queries using .csv and .sql files:
./psql.py localhost <examples dir>/WEB_STAT.sql <examples dir>/WEB_STAT.csv <examples dir>/WEB_STAT_QUERIES.sql
performance.py
Usage:
performance <zookeeper> <row count>
Example:
Generates and upserts 1000000 rows and time basic queries on this data
./performance.py localhost 1000000
Phoenix中常见的函数
Aggregate Functions
Function Name | Function Description | example |
---|---|---|
AVG | 求平均 | AVG(X) |
COUNT | 计数 | COUNT(*) |
APPROX_COUNT_DISTINCT | 所有行或非空值的近似不重复计数 | APPROX_COUNT_DISTINCT(*) |
MAX | 最大值 | MAX(X) |
SUM | 所有值的总和 | SUM(X) |
MIN | 最低值 | MIN(X) |
PERCENTILE_CONT | 列中值的第n个百分点 | PERCENTILE_CONT( 0.9 ) WITHIN GROUP (ORDER BY X ASC) |
PERCENTILE_DISC | PERCENTILE_DISC是一个假设离散分布模型的逆分布函数。它需要一个百分位值和一个排序规范,并从集合中返回一个元素。 | PERCENTILE_DISC( 0.9 ) WITHIN GROUP (ORDER BY X DESC) |
PERCENT_RANK | 如果插入列中,则为假设值的百分数等级。 | PERCENT_RANK( 100 ) WITHIN GROUP (ORDER BY X ASC) |
FIRST_VALUE | 根据ORDERBY规范排序的每个不同组中的第一个值 | FIRST_VALUE( name ) WITHIN GROUP (ORDER BY salary DESC) |
LAST_VALUE | 根据ORDER BY规范排序的每个不同组中的最后一个值 | LAST_VALUE( name ) WITHIN GROUP (ORDER BY salary DESC) |
FIRST_VALUES | 返回一个数组,该数组最多具有根据ORDER BY规范排序的每个不同组中的第一个值的给定数值大小 | FIRST_VALUES( name, 3 ) WITHIN GROUP (ORDER BY salary DESC) |
LAST_VALUES | 返回一个数组,该数组最多具有根据ORDER BY规范排序的每个不同组中最后一个值的给定数字大小 | LAST_VALUES( name, 3 ) WITHIN GROUP (ORDER BY salary DESC) |
NTH_VALUE | 根据ORDER BY规范排序的每个不同组中的第n个值 | NTH_VALUE( name, 2 ) WITHIN GROUP (ORDER BY salary DESC) |
STDDEV_POP | 所有值的总体标准差。仅在选择语句中允许聚合 | STDDEV_POP( X ) |
STDDEV_SAMP | 所有值的样本标准偏差 | STDDEV_SAMP( X ) |
String Functions
Function Name | Function Description | Example |
---|---|---|
SUBSTR | 返回从一个位置开始的字符串的子字符串 | SUBSTR(str, startIndex, length) |
INSTR | 返回第二个参数在第一个参数中首次出现的基于位置的位置 | INSTR ( stringTerm , stringTerm ) |
TRIM | 从输入字符串中删除前导和尾随空格 | TRIM ( stringTerm ) |
LTRIM | 从输入字符串中删除前导空格 | LTRIM ( stringTerm ) |
RTRIM | 从输入字符串中删除尾随空格 | RTRIM ( stringTerm ) |
LPAD | 使用特定的填充字符(默认为空格)填充字符串表达式,直到length参数为止 | LPAD(‘John’,30) |
LENGTH | 返回字符串的长度(以字符为单位) | LENGTH(‘Hello’) |
REGEXP_SUBSTR | 通过应用基于一个位置的偏移量的正则表达式,返回字符串的子字符串。就像使用一样SUBSTR,如果开始索引为负,则它相对于字符串的结尾。如果未指定,则起始索引默认为1。 | REGEXP_SUBSTR(‘na1-appsrv35-sj35’, ‘[^-]+’) evaluates to ‘na1’ |
REGEXP_REPLACE | 通过应用正则表达式并将匹配项替换为替换字符串来返回字符串。如果未指定替换字符串,则默认为空字符串。 | REGEXP_REPLACE(‘abc123ABC’, ‘[0-9]+’, ‘#’) evaluates to ‘abc#ABC’ |
REGEXP_SPLIT | VARCHAR ARRAY使用正则表达式将字符串拆分为a 。如果要将正则表达式中具有特殊含义的字符用作模式字符串中的正则分隔符,则必须使用反斜杠对它们进行转义。 | REGEXP_SPLIT(‘ONE,TWO,THREE’, ‘,’) evaluates to ARRAY[‘ONE’, ‘TWO’, ‘THREE’] |
UPPER | 返回字符串参数的大写字符串。 | UPPER(‘Hello’) |
LOWER | 返回字符串参数的小写字符串 | LOWER(‘HELLO’) |
REVERSE | 返回字符串参数的反向字符串 | REVERSE(‘Hello’) |
TO_CHAR | 将日期,时间,时间戳或数字格式化为字符串。 | TO_CHAR(myDate, ‘2001-02-03 04:05:06’) |
COLLATION_KEY | 计算排序规则键,该键可用于以自然语言感知的方式对字符串进行排序 | SELECT NAME FROM EMPLOYEE ORDER BY COLLATION_KEY(NAME, ‘zh_TW’) |
Time and Date Functions
Function Name | Function Description |
---|---|
TO_DATE | 解析字符串并返回日期 |
TO_TIME | 将给定的字符串转换为TIME实例 |
TO_TIMESTAMP | 将给定的字符串转换为TIMESTAMP实例 |
CURRENT_TIME | 与CURRENT_DATE()相同,除了返回类型为的值TIME |
CONVERT_TZ | 将日期/时间从一个时区转换为另一个时区,并返回转换后的日期/时间值。 |
TIMEZONE_OFFSET | 返回特定日期/时间的时区偏移量(以分钟为单位),以分钟为单位 |
NOW | 返回当前日期,该日期根据拥有所查询表元数据的区域服务器上的当前时间,在查询执行开始时绑定 |
YEAR | 返回指定日期的年份。 |
MONTH | 返回指定日期的月份 |
WEEK | 返回指定日期的星期 |
DAYOFYEAR | 返回指定日期的日期。 |
DAYOFMONTH | 返回指定日期的月份中的一天。 |
DAYOFWEEK | 返回指定日期的星期几。 |
HOUR | 返回指定日期的小时。 |
MINUTE | 返回指定日期的分钟。 |
SECOND | 返回指定日期的第二个。 |
Note: 下面的方法,还是直接去看官网的吧。
Phoenix中的Functions汇总
Numeric Functions
Function Name | Function Description |
---|---|
ROUND | |
CEIL | |
FLOOR | |
TRUNC | |
TO_NUMBER | |
RAND |
Array Functions
Function Name | Function Description |
---|---|
ARRAY_ELEM | |
ARRAY_LENGTH | |
ARRAY_APPEND | |
ARRAY_PREPEND | |
ARRAY_CAT | |
ARRAY_FILL | |
ARRAY_TO_STRING | |
ANY | |
ALL |
Math Functions
Function Name | Function Description |
---|---|
SIGN | |
ABS | |
SQRT | |
CBRT | |
EXP | |
POWER | |
LN | |
LOG |
Other Functions
Function Name | Function Description |
---|---|
MD5 | |
INVERT | |
ENCODE | |
DECODE | |
COALESCE | |
GET_BIT | |
GET_BYTE | |
OCTET_LENGTH | |
SET_BIT | |
SET_BYTE |