对于时空数据库中的数据,数据查询功能提供了四个查询子模块:查询转换、实时状态、聚合统计、数据导出。
在数据查询页面左侧的目录区域中,选择时空数据源,页面右侧出现该数据源的查询页签,关于页签中四个查询子模块的分别介绍如下。
查询转换的主要功能为从海量数据中查询一部分满足条件的数据,将数据中的某些列转换后进行展示(也可以仅做查询)。
查询转换的步骤如下:
配置基本查询条件:
时空表名:选择所需要查询的时空表。
CQL:填写查询CQL(通用查询语言,具体使用可参考官网)。
查询字段:选择所需要的展示的属性。
结果数量:填写查询数量(查询返回数量)。
展开“转换”区域,配置数据转换规则。
属性别名:填写属性别名。
函数:选择转换需要使用的函数,各函数说明请参见表-1。
参数:填写参数,选择函数后会自动填充,可以手动修改。
填写完成后,点击操作列列中的图标,该条转换规则配置完成。支持配置多条转换规则,点击操作列中的
图标,下方会新出现一行空的转换配置。如需删除该转换规则,可点击操作列中的
图标。
展开“采样”区域,配置采样参数。
采样字段:选择所需要采样的字段。
采样率:填写采样率,采样率填写范围0-1。
采样是指按照此字段在数据集中拾取其中一部分作为查询结果返回。采样的最终返回结果受之前配置的结果数量限制。如果数据总量 * 采样率 > 结果数量,则最终返回的数量 = 结果数量;如果数据总量 * 采样率 ≤ 结果数量,则数据总量 * 采样率 < 最终返回的数量 < 结果数量。
单击<查询>按钮,查看返回结果。
查询完成后,可以单击<重置>按钮,重置查询条件为默认值。
查询转换的查询结果会以两部分数据作为展示:表格、地图。点击“表格”可折叠表格展示结果,点击“地图”可折叠地图展示结果。在“地图”展示区域,将鼠标悬于地图数据之上,可以复现出该数据详情。
函数名称 |
参数位次 |
参数类型 |
参数描述 |
函数释义 |
Area |
1 |
Geometry |
地理位置属性 |
求几何体面积 |
Concatenate |
1 |
String |
属性名称 |
若填写属性名称,则返回属性值ToString后的值,若填写数字,返回数字本身,其他返回空 |
IEEEremainder |
1 |
number |
被除数 |
按照 IEEE 754 标准的规定,对两个参数进行余数运算 |
2 |
number |
除数 |
||
PropertyExists |
1 |
String |
属性名称 |
判断属性是否存在 |
abs |
1 |
Integer/String |
运算数/属性名称 |
整型绝对值求值 |
abs_2 |
1 |
Long/String |
运算数/属性名称 |
Long型绝对值求值 |
abs_3 |
1 |
Float/String |
运算数/属性名称 |
浮点型绝对值求值 |
abs_4 |
1 |
Double/String |
运算数/属性名称 |
双精度浮点值绝对值求值 |
acos |
1 |
Float/String |
运算数/属性名称 |
求反余弦值 |
area2 |
1 |
Geometry |
地理位置属性 |
求几何体面积 |
asin |
1 |
Float/String |
运算数/属性名称 |
求反正弦值 |
atan |
1 |
Float/String |
运算数/属性名称 |
求反正切值 |
atan2 |
1 |
Float/String |
X坐标值 |
返回以弧度表示的y/x的反正切 |
2 |
Float/String |
Y坐标值 |
||
boundary |
1 |
Geometry |
空间属性 |
按照Geojson的形式返回区域边界信息 |
boundaryDimension |
1 |
Geometry |
空间属性 |
边界维度 |
buffer |
1 |
Geometry |
空间属性 |
计算在给定的几何距离内包含所有点的区域 |
2 |
number |
距离属性 |
||
bufferWithSegments |
1 |
Geometry |
空间属性 |
使用指定的距离返回几何图形周围的缓冲区域,并使用指定数量的线段表示圆的象限。 |
2 |
number |
距离属性 |
||
3 |
number |
段数 |
||
ceil |
1 |
number/String |
属性或数字 |
数字类属性、数字向上舍入,向上取整 |
centroid |
1 |
Geometry |
空间属性 |
返回空间属性中心点,以Geojson返回 |
convexHull |
1 |
Geometry |
空间属性 |
计算出图像的凸包 |
cos |
1 |
number |
弧度值 |
根据弧度值求余弦值 |
dateDifference |
1 |
Date |
时间1 |
计算时间1与时间2的时差,结果为毫秒 |
2 |
Date |
时间2 |
||
difference |
1 |
Geometry |
空间属性A |
(A-A∩B),AB形状的差异分析就是A中包含而B中不包含的所有点的集合 |
2 |
Geometry |
空间属性B |
||
dimension |
1 |
Geometry |
空间属性 |
计算空间属性维度 |
distance |
1 |
Geometry |
空间属性A |
计算空间属性A与空间属性B的距离 |
2 |
Geometry |
空间属性B |
||
endAngle |
1 |
linestring |
空间线型属性 |
取出圆弧的最终角度 |
endPoint |
1 |
linestring |
空间线型属性 |
取出线的最后一个点 |
equalTo |
1 |
/ |
属性1 |
判断两个属性是否相同 |
2 |
/ |
属性2 |
||
equalsExact |
1 |
Geometry |
空间属性A |
空间属性A和空间属性B是否完全相同 |
2 |
Geometry |
空间属性B |
||
exp |
1 |
number |
数值属性 |
exp()方法返回x的指数e^x |
floor |
1 |
Double |
双精度浮点数 |
对浮点数向下取整 |
geomFromWKT |
1 |
String |
WKT字符串 |
将WKT字符串转化为Geometry对象 |
geomLength |
1 |
Geometry |
空间属性 |
返回形状的长度/周长(在笛卡尔空间中计算) |
geometryType |
1 |
Geometry |
空间属性 |
以字符串形式返回形状的类型 |
getX |
1 |
Point |
点型空间数据 |
获取数据经度(横坐标) |
getY |
1 |
Point |
点型空间数据 |
获取数据维度(纵坐标) |
greaterEqualThan |
1 |
/ |
属性A |
属性A大于等于属性B |
2 |
/ |
属性B |
||
greaterThan |
1 |
/ |
属性A |
属性A大于属性B |
2 |
/ |
属性B |
||
in10 |
1 |
/ |
属性值A |
判断属性值A是否在属性值B1-B10列表中 |
2 |
/ |
属性值B1 |
||
3 |
/ |
属性值B2 |
||
4 |
/ |
属性值B3 |
||
5 |
/ |
属性值B4 |
||
6 |
/ |
属性值B5 |
||
7 |
/ |
属性值B6 |
||
8 |
/ |
属性值B7 |
||
9 |
/ |
属性值B8 |
||
10 |
/ |
属性值B9 |
||
11 |
/ |
属性值B10 |
||
in2 |
1 |
/ |
属性值A |
判断属性值A是否在属性值B1、B2中(in3、in4、in5、in6、in7、in8、in9功能相近,此处省略) |
2 |
/ |
属性值B1 |
||
3 |
/ |
属性值B2 |
||
int2bbool |
1 |
- |
- |
- |
interiorPoint |
1 |
Geometry |
空间属性 |
求空间属性内点 |
intersection |
1 |
Geometry |
空间属性 |
计算空间属性交集 |
2 |
Geometry |
空间属性 |
||
isNull |
1 |
/ |
属性值 |
判断属性是否为空 |
isRing |
1 |
Geometry |
空间属性 |
判断对象属性是否为环形 |
isWithinDistance |
1 |
Geometry |
空间属性 |
判断两个几何体距离是否超出给定距离 |
2 |
Geometry |
空间属性 |
||
3 |
Double |
距离属性 |
||
length |
1 |
String |
字符串属性 |
计算字符串长度 |
lessEqualThan |
1 |
number |
属性A |
属性A是否小于等于属性B |
2 |
number |
属性B |
||
lessThan |
1 |
number |
属性A |
属性A是否小于属性B |
2 |
number |
属性B |
||
log |
1 |
number |
数字属性A |
计算A的对数 |
max |
1 |
number |
数字属性A |
计算A与B中较大的值,max_2 长整型,max_3 单精度浮点数,max_4 整型,min与max类似 |
2 |
number |
数字属性B |
||
mincircle |
1 |
Geometry |
空间属性 |
获取该空间属性的最小覆盖圆 |
minrectangle |
1 |
Geometry |
空间属性 |
获取该空间属性的最小覆盖矩形 |
modulo |
1 |
number |
被除数 |
取模 |
2 |
number |
除数 |
||
notEqualTo |
1 |
/ |
属性A |
判断属性A是否不等于属性B |
2 |
/ |
属性B |
||
numInteriorRing |
1 |
Geometry |
空间属性 |
空间属性(多边形)内边界数量 |
offset |
1 |
number |
经度偏移量 |
平移空间属性 |
2 |
number |
维度偏移量 |
||
parseDouble |
1 |
String |
字符串属性A |
将字符串转化为Double |
parseInt |
1 |
String |
字符串属性A |
将字符串转化为Int |
parseLong |
1 |
String |
字符串属性A |
将字符串转化为Long |
pi |
- |
- |
- |
π |
pointN |
1 |
Geometry |
空间属性 |
只支持LINESTRING,且如果输入的index大于linestring的长度,则不会有结果 |
2 |
Integer |
位次索引n |
||
pow |
1 |
Double |
base |
求base的exponent次方 |
2 |
Double |
exponent |
||
random |
- |
- |
- |
随机数生成(0-1) |
rint |
1 |
String |
Double类数字属性A |
计算最接近A的整数 |
round |
1 |
Number |
数字属性 |
四舍五入 |
roundDouble |
1 |
Double |
数字属性 |
四舍五入 |
round_2 |
1 |
Number |
数字属性 |
四舍五入结果为LONG型 |
sin |
1 |
Number |
弧度值 |
根据弧度值求正弦值 |
sqrt |
1 |
Number |
数字属性 |
求解平方根 |
startPoint |
1 |
LineString |
线型空间数据 |
取线的其实点经纬度 |
strEndsWith |
1 |
String |
字符串Base |
字符串Base是否已Postfix结尾 |
2 |
String |
字符串Postfix |
||
strEqualsIgnoreCase |
1 |
String |
字符串A |
字符串A是否与字符串B相同忽略大小写 |
2 |
String |
字符串B |
||
strIndexOf |
1 |
String |
字符串A |
字符串B在字符串A中首次出现的位置, 字符串需要带上’’单引号 |
2 |
String |
字符串B |
||
strLastIndexOf |
1 |
String |
字符串A |
字符串B在字符串A中末次出现的位置, 字符串需要带上’’单引号 |
2 |
String |
字符串B |
||
strLength |
1 |
String |
字符串 |
字符串长度计算 |
strReplace |
1 |
String |
原字符串 |
将源字符串中的某些字符替换为新的字符 |
2 |
String |
被替换字符串 |
||
3 |
String |
替换字符串 |
||
4 |
boolean |
是否全部替换 |
||
strStartsWith |
1 |
String |
源字符串 |
判断源字符串是否以字符串B开头 |
2 |
String |
字符串B |
||
strSubstring |
1 |
String |
字符串 |
字符串子串 |
2 |
integer |
起始位置 |
||
3 |
integer |
结束位置 |
||
strSubstringStart |
1 |
String |
字符串 |
字符串子串 |
2 |
integer |
起始位置 |
||
strToLowerCase |
1 |
String |
字符串 |
将源字符串转化为小写 |
strToUpperCase |
1 |
String |
字符串 |
将源字符串转化为大写 |
strTrim |
1 |
String |
字符串 |
去除字符串两边空格 |
tan |
1 |
Number |
弧度值 |
用弧度计算正切值 |
toDegrees |
1 |
Number |
弧度值 |
将弧度值转化我角度 |
toRadians |
1 |
Number |
角度值 |
将角度转化为弧度 |
toWKT |
1 |
Geometry |
空间属性 |
将空间属性转化为WKT字符串 |
支持对时空数据执行如下操作:
查询结束后会在表格按钮下出现<新建>按钮,点击新建,弹出新建弹框,可以选择往对应的存储集群中添加数据,集群来源于建表时添加的集群选项,数据添加的方式有两种:
键值对。
GeoJson。
键值对填写,按照对应字段要求填写完成即可,GeoJson需要按照GeoJson标准格式添加数据,标准格式在输入框占位符中有具体提示可参考输入,若有问题,可参考GeoJson官网对照输入。
两种添加方式可随意选择一种输入即可,输入完成以后点击<确认>可提交添加请求,若需要取消添加点击<取消>即可
在列表展示中有些列因为数据过长,而被隐藏了部分,需要查看数据可将鼠标悬浮于其上,即可显示全部数据,也可以在操作栏点击<查看>,在弹框中可以查看该行所有数据详情展示
选中查询结果中的选中某一列,在操作栏点击<编辑>,在弹出框中,选择所需要编辑的属性,编辑后点击<确定>可提交更改,点击<取消>可取消编辑
选中查询结果中的某一列,在操作栏点击<删除>,在弹出框中,点击<确定>可永久删除该数据,点击<取消>取消删除
实时状态主要功能为从暂态数据(上报时空数据的对象的当前上报的数据)中查询一部分满足条件的数据,将数据中的某些列转换后作展示(也可以仅做查询),关于其操作与查询转换完全相同,在此不做赘述。
时空表聚合统计是使用CQL条件进行过滤,然后选择对应的聚合函数对结果数据进行统计分析,支持分组统计。统计的结果数据只包含统计结果,不包含原始数据,结果展示使用图表形式呈现。分组统计使用表格形式呈现结果。
操作步骤如下:
点击数据查询表列表的时空表,点击聚合统计标签进入聚合统计页面。
在时空表名下拉列表中选择对应需要统计的表。
在CQL中输入CQL查询语句(默认为INCLUDE,即全表查询)。
在聚合统计中分别填入:属性别名,下拉选择统计函数,按照格式填写参数,点击√确认当前栏,如需要统计多个,点击+添加一行重复操作。
点击统计,等待结果。
表-2 统计分析
类型 |
说明 |
表达式 |
图形 |
count |
数量 |
Count() |
柱图 |
min/max |
最小值/最大值 |
MinMax(field) |
柱图 |
enumeration |
枚举 |
Enumeration(field) |
柱图 |
top-k |
Top-k |
TopK(field) |
柱图, 堆叠 |
histogram |
直方图 |
Histogram(field,number,min,max) |
柱图 |
descriptivestats |
描述性统计 |
DescriptiveStats(...attrs) |
表格 |
GroupBy |
统计数据 |
GroupBy(field, function(..args)) |
柱图 |
可以使用GroupBy根据分组值计算统计数据。
例如,GroupBy ("foo", MinMax("bar"))。
Z3频率和直方图是特殊的统计数据,它们将对几何图形和日期创建的Z3值进行操作。
<time period>为:day、week、month,或year。
<precision>为:
对于几何和Z3类型,表示z索引要保留的位的数量(最大值为64),且前2位不包含任何信息。
对于日期类型,表示为分组的毫秒数。
对于数字类型,表示将组合在一起的数字的数量。
对于浮点类型,表示小数点位数。
对于字符串类型,表示字符的数量。
对于histogram统计:
<bins>:直方图分为多少组。
<min>/<max>:直方图各组的初始大小,但不是绝对限制,如果需要,直方图会随着新值的添加而扩展,但是可能会丢失一些精度。注意min必须小于max。
对于DescriptiveStats(描述性)统计:属性只能为数字类型(Int、Double、Long、Float)。
表-3 参数说明
参数 |
取值类型 |
说明 |
解释 |
count |
Long |
统计结果数 |
DescriptiveStats(...fields)参数为可变数字。统计结果各个属性除去count均为数组,数组中统计结果顺序同参数顺序。 |
minimum |
Double |
最小值 |
|
maximum |
Double |
最大值 |
|
mean |
Double |
平均值 |
|
population_variance |
Double |
总体方差 |
|
population_standard_deviation |
Double |
总体标准差 |
|
population_skewness |
Double |
总体偏度 |
|
population_kurtosis |
Double |
总体峭度 |
|
population_excess_kurtosis |
Double |
总体过度峰度 |
|
sample_variance |
Double |
样本方差 |
|
sample_standard_deviation |
Double |
样本标准差 |
|
sample_skewness |
Double |
样本偏度 |
|
sample_kurtosis |
Double |
样本峰度 |
|
sample_excess_kurtosis |
Double |
样本过度峰度 |
|
population_covariance |
Double |
总体协方差 |
|
population_correlation |
Double |
总体相关度 |
|
sample_covariance |
Double |
样本协方差 |
|
sample_correlation |
Double |
样本相关度 |
如果查询条件匹配到的结果数据量超过时空引擎限制,可以选择使用查询条件将结果数据导出到HDFS,导出任务是运行在YARN上的MR任务,任务的创建可以通过查询界面一键创建并提交一次性任务,直接由时空引擎管理,记录任务定义,运行状态,结果导出目录,可根据运行记录打开HDFS文件管理器查看导出的数据文件。
操作步骤如下:
点击数据查询表列表的时空表,点击数据导出标签进入数据导出页面。
选择需要导出的表名,填写查询CQL语句,查询字段中,勾选需要导出的字段,选则排序方式、排序字段、导出路径、文件格式及文件名,单击导出即可。
如果需要对字段转换,可在转换标签下添加转换函数,函数说明见查询转换页面。
页面最下方可查看当前表所有的导出任务,点击查询可刷新。当文件导出显示成功后,可点击查看文件从文件浏览框中下载文件至本地。
此处展示一次性导出任务的结束时间,在任务没有结束时,此处展示时间为任务状态最后监测的时间,用于对任务进行监控,可直观观察任务运行状态的变化情况。 |