官方文档
https://superset.apache.org/docs/databases/elasticsearch/
ElasticSearch(SQL API)
点击添加DATABASE
选择ElasticSearch(SQL API)
输入连接信息,并点击测试连接,右下角提示Connection looks good!
则说明ElasticSearch连接成功
填写内容:elasticsearch+http://elastic:XXXXXXXXXX@10.0.0.107:9200/
设置时区
注意,如果设置时区统计结果不对,把设置时区这个动作取消!数据查询就恢复正常了
添加成功后再列表中可以看到ElasticSearch
创建ElasticSearch测试索引
PUT superset_test
{
"settings":{
"number_of_shards":6,
"number_of_replicas":0
},
"mappings":{
"properties":{
"name":{
"type":"keyword"
},
"uid":{
"type":"keyword"
},
"age":{
"type":"integer"
}
}
}
}
添加三条测试数据
POST /superset_test/_doc
{
"name": "John",
"age": 30,
"uid":"123123123"
}
POST /superset_test/_doc
{
"name": "Jast",
"age": 30,
"uid":"123456"
}
POST /superset_test/_doc
{
"name": "Jack",
"age": 14,
"uid":"8"
}
创建DataSet
选择需要查询的索引,并创建DataSet
选择表格展示
选择字段,就可以基础查询了
到此检查查询可以直接展示了
统计数字显示为k转为数字
默认统计可能会显示数据是多少k
解决方法:
将Y轴设置为Original value
表格展示:根据指定字段GroupBy后并按照日期统计每天总量
最终显示数据效果
统计各数据来源每天的数据新增量
字段说明
release_time : 数据时间
souce_type : 数据类型
配置方法
创建时选择图表Pivot Table
设置Time
选择需要统计的时间字段,设置为按天统计
设置Query
设置统计列COLUMNS
因为我们source_type
字段是字典值,所以在CUSTOM SQL
中做了转换,输入内容如下
CASE CAST(source_type as string )
WHEN '1' THEN '数据来源1'
WHEN '2' THEN '数据来源2'
WHEN '3' THEN '数据来源3'
WHEN '4' THEN '数据来源4'
WHEN '5' THEN '数据来源5'
WHEN '6' THEN '数据来源6'
WHEN '7' THEN '数据来源7'
WHEN '8' THEN '数据来源8'
WHEN '9' THEN '数据来源8'
WHEN '10' THEN '数据来源9'
WHEN '11' THEN '数据来源10'
WHEN '12' THEN '数据来源11'
WHEN '13' THEN '数据来源12'
ELSE CAST(source_type as string ) END
设置行按天显示ROWS
选择我们统计的字段,按照这个时间字段统计,按行显示
设置统计值METRICS
这里统计数量,使用COUNT即可
设置显示格式
APPLY METRICS ON
是设置显示形式,这里选择COLUMNS
设置过滤条件
这里设置release_time
为近30天的数据,now-30d/d
表示近30天数据,这个是ElasticSearch语法。
这里做下简单介绍
- 相对时间查询:
now:表示当前时间点。
now-1h:表示从当前时间向前推算的1小时。
now-2d:表示从当前时间向前推算的2天。
now-1w:表示从当前时间向前推算的1周。
now-1M:表示从当前时间向前推算的1个月。
now-1y:表示从当前时间向前推算的1年。
- 绝对时间查询:
2021-09-01:表示指定的日期,不包括具体的时间。
2021-09-01T10:00:00:表示指定的日期和时间。
- 查询方法
{"range": {"timestamp": {"gte": "now-1d", "lt": "now"}}}:表示查询从过去一天内的数据,包括当前时间之前的数据。
{"range": {"timestamp": {"gte": "2021-09-01", "lt": "2021-09-02"}}}:表示查询指定日期范围内的数据,不包括结束日期的数据。{"range": {"timestamp": {"time_zone": "+08:00", "gte": "now-1h", "lte": "now"}}}:表示在指定的时间区间内进行查询,并指定时区。
{"bool": {"filter": {"range": {"timestamp": {"gte": "now-1h/h", "lte": "now/h"}}}}}:表示查询过去一小时内每个完整小时的数据。
设置显示行数
这个数值计算方式是作用在每一个METRICS的指标下,CELL LIMIT
如果想要显示完整,CELL LIMIT
=source_type
所有枚举*天数,
这里为了方便我直接设置成1000
设置显示为正常数字
在CUSTOMIZE
中VALUE FORMAT
设置为Original valule
保存,最终展示结果如下
折线图展示:根据指定字段GroupBy后并按照日期统计每天总量
最终展示数据效果
配置方法
设置为Time-series Area Chart
设置TIME
选择需要统计的时间字段,设置为按天统计
设置统计值METRICS
这里统计数量,使用COUNT即可
设置DIMENSIONS
这个字段就是需要GroupBy的字段,通过CASE WHEN
,将字典值转换为中文说明
CASE CAST(source_type as string )
WHEN '1' THEN '数据来源1'
WHEN '2' THEN '数据来源2'
WHEN '3' THEN '数据来源3'
WHEN '4' THEN '数据来源4'
WHEN '5' THEN '数据来源5'
WHEN '6' THEN '数据来源6'
WHEN '7' THEN '数据来源7'
WHEN '8' THEN '数据来源8'
WHEN '9' THEN '数据来源8'
WHEN '10' THEN '数据来源9'
WHEN '11' THEN '数据来源10'
WHEN '12' THEN '数据来源11'
WHEN '13' THEN '数据来源12'
ELSE CAST(source_type as string ) END
设置过滤条件
这里设置release_time
为近30天的数据,now-30d/d
表示近30天数据,这个是ElasticSearch语法。
设置显示为正常数字
在CUSTOMIZE
中VALUE FORMAT
设置为Original valule
设置查询数据量ROW LIMIT
设置一共查询出来的数据量
保存,最终展示结果如下