Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Forever310
druid
提交
2ee1defc
D
druid
项目概览
Forever310
/
druid
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
druid
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2ee1defc
编写于
5月 28, 2014
作者:
F
fjy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
better handle dim extraction regex cases
上级
8bcf4bc6
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
134 addition
and
11 deletion
+134
-11
processing/src/main/java/io/druid/query/extraction/JavascriptDimExtractionFn.java
.../io/druid/query/extraction/JavascriptDimExtractionFn.java
+1
-1
processing/src/main/java/io/druid/query/extraction/PartialDimExtractionFn.java
...ava/io/druid/query/extraction/PartialDimExtractionFn.java
+1
-1
processing/src/main/java/io/druid/query/extraction/RegexDimExtractionFn.java
.../java/io/druid/query/extraction/RegexDimExtractionFn.java
+1
-1
processing/src/main/java/io/druid/query/extraction/SearchQuerySpecDimExtractionFn.java
...ruid/query/extraction/SearchQuerySpecDimExtractionFn.java
+1
-1
processing/src/main/java/io/druid/query/extraction/TimeDimExtractionFn.java
...n/java/io/druid/query/extraction/TimeDimExtractionFn.java
+1
-1
processing/src/main/java/io/druid/query/topn/DimExtractionTopNAlgorithm.java
.../java/io/druid/query/topn/DimExtractionTopNAlgorithm.java
+3
-1
processing/src/main/java/io/druid/query/topn/InvertedTopNMetricSpec.java
...main/java/io/druid/query/topn/InvertedTopNMetricSpec.java
+20
-3
processing/src/main/java/io/druid/query/topn/LexicographicTopNMetricSpec.java
...java/io/druid/query/topn/LexicographicTopNMetricSpec.java
+9
-2
processing/src/test/java/io/druid/query/topn/TopNQueryRunnerTest.java
...rc/test/java/io/druid/query/topn/TopNQueryRunnerTest.java
+97
-0
未找到文件。
processing/src/main/java/io/druid/query/extraction/JavascriptDimExtractionFn.java
浏览文件 @
2ee1defc
...
...
@@ -96,6 +96,6 @@ public class JavascriptDimExtractionFn implements DimExtractionFn
@Override
public
boolean
preservesOrdering
()
{
return
tru
e
;
return
fals
e
;
}
}
processing/src/main/java/io/druid/query/extraction/PartialDimExtractionFn.java
浏览文件 @
2ee1defc
...
...
@@ -70,7 +70,7 @@ public class PartialDimExtractionFn implements DimExtractionFn
@Override
public
boolean
preservesOrdering
()
{
return
fals
e
;
return
tru
e
;
}
@Override
...
...
processing/src/main/java/io/druid/query/extraction/RegexDimExtractionFn.java
浏览文件 @
2ee1defc
...
...
@@ -70,7 +70,7 @@ public class RegexDimExtractionFn implements DimExtractionFn
@Override
public
boolean
preservesOrdering
()
{
return
tru
e
;
return
fals
e
;
}
@Override
...
...
processing/src/main/java/io/druid/query/extraction/SearchQuerySpecDimExtractionFn.java
浏览文件 @
2ee1defc
...
...
@@ -66,7 +66,7 @@ public class SearchQuerySpecDimExtractionFn implements DimExtractionFn
@Override
public
boolean
preservesOrdering
()
{
return
fals
e
;
return
tru
e
;
}
@Override
...
...
processing/src/main/java/io/druid/query/extraction/TimeDimExtractionFn.java
浏览文件 @
2ee1defc
...
...
@@ -90,7 +90,7 @@ public class TimeDimExtractionFn implements DimExtractionFn
@Override
public
boolean
preservesOrdering
()
{
return
tru
e
;
return
fals
e
;
}
@Override
...
...
processing/src/main/java/io/druid/query/topn/DimExtractionTopNAlgorithm.java
浏览文件 @
2ee1defc
...
...
@@ -65,9 +65,11 @@ public class DimExtractionTopNAlgorithm extends BaseTopNAlgorithm<Aggregator[][]
query
,
params
.
getCardinality
()
);
if
(
query
.
getDimensionSpec
().
preservesOrdering
())
{
if
(!
query
.
getDimensionSpec
().
preservesOrdering
())
{
return
provider
.
build
();
}
return
query
.
getTopNMetricSpec
().
configureOptimizer
(
provider
).
build
();
}
...
...
processing/src/main/java/io/druid/query/topn/InvertedTopNMetricSpec.java
浏览文件 @
2ee1defc
...
...
@@ -21,6 +21,7 @@ package io.druid.query.topn;
import
com.fasterxml.jackson.annotation.JsonCreator
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
com.google.common.collect.Ordering
;
import
com.metamx.common.guava.Comparators
;
import
io.druid.query.aggregation.AggregatorFactory
;
import
io.druid.query.aggregation.PostAggregator
;
...
...
@@ -63,11 +64,27 @@ public class InvertedTopNMetricSpec implements TopNMetricSpec
@Override
public
Comparator
getComparator
(
List
<
AggregatorFactory
>
aggregatorSpecs
,
List
<
PostAggregator
>
postAggregatorSpecs
final
List
<
AggregatorFactory
>
aggregatorSpecs
,
final
List
<
PostAggregator
>
postAggregatorSpecs
)
{
return
Comparators
.
inverse
(
delegate
.
getComparator
(
aggregatorSpecs
,
postAggregatorSpecs
));
return
Comparators
.
inverse
(
new
Comparator
()
{
@Override
public
int
compare
(
Object
o1
,
Object
o2
)
{
// nulls last
if
(
o1
==
null
)
{
return
1
;
}
if
(
o2
==
null
)
{
return
-
1
;
}
return
delegate
.
getComparator
(
aggregatorSpecs
,
postAggregatorSpecs
).
compare
(
o1
,
o2
);
}
}
);
}
@Override
...
...
processing/src/main/java/io/druid/query/topn/LexicographicTopNMetricSpec.java
浏览文件 @
2ee1defc
...
...
@@ -43,6 +43,13 @@ public class LexicographicTopNMetricSpec implements TopNMetricSpec
@Override
public
int
compare
(
String
s
,
String
s2
)
{
// null first
if
(
s
==
null
)
{
return
-
1
;
}
if
(
s2
==
null
)
{
return
1
;
}
return
UnsignedBytes
.
lexicographicalComparator
().
compare
(
s
.
getBytes
(
Charsets
.
UTF_8
),
s2
.
getBytes
(
Charsets
.
UTF_8
));
}
};
...
...
@@ -54,7 +61,7 @@ public class LexicographicTopNMetricSpec implements TopNMetricSpec
@JsonProperty
(
"previousStop"
)
String
previousStop
)
{
this
.
previousStop
=
(
previousStop
==
null
)
?
""
:
previousStop
;
this
.
previousStop
=
previousStop
;
}
@Override
...
...
@@ -98,7 +105,7 @@ public class LexicographicTopNMetricSpec implements TopNMetricSpec
@Override
public
byte
[]
getCacheKey
()
{
byte
[]
previousStopBytes
=
previousStop
.
getBytes
(
Charsets
.
UTF_8
);
byte
[]
previousStopBytes
=
previousStop
==
null
?
new
byte
[]{}
:
previousStop
.
getBytes
(
Charsets
.
UTF_8
);
return
ByteBuffer
.
allocate
(
1
+
previousStopBytes
.
length
)
.
put
(
CACHE_TYPE_ID
)
...
...
processing/src/test/java/io/druid/query/topn/TopNQueryRunnerTest.java
浏览文件 @
2ee1defc
...
...
@@ -1263,6 +1263,58 @@ public class TopNQueryRunnerTest
TestHelper
.
assertExpectedResults
(
expectedResults
,
runner
.
run
(
query
));
}
@Test
public
void
testInvertedTopNLexicographicDimExtraction2
()
{
TopNQuery
query
=
new
TopNQueryBuilder
()
.
dataSource
(
QueryRunnerTestHelper
.
dataSource
)
.
granularity
(
QueryRunnerTestHelper
.
allGran
)
.
dimension
(
new
ExtractionDimensionSpec
(
providerDimension
,
providerDimension
,
new
RegexDimExtractionFn
(
"..(.)"
)
)
)
.
metric
(
new
InvertedTopNMetricSpec
(
new
LexicographicTopNMetricSpec
(
null
)))
.
threshold
(
4
)
.
intervals
(
QueryRunnerTestHelper
.
firstToThird
)
.
aggregators
(
QueryRunnerTestHelper
.
commonAggregators
)
.
postAggregators
(
Arrays
.<
PostAggregator
>
asList
(
QueryRunnerTestHelper
.
addRowsIndexConstant
))
.
build
();
List
<
Result
<
TopNResultValue
>>
expectedResults
=
Arrays
.
asList
(
new
Result
<
TopNResultValue
>(
new
DateTime
(
"2011-04-01T00:00:00.000Z"
),
new
TopNResultValue
(
Arrays
.<
Map
<
String
,
Object
>>
asList
(
ImmutableMap
.<
String
,
Object
>
of
(
providerDimension
,
"t"
,
"rows"
,
4L
,
"index"
,
5351.814697265625
D
,
"addRowsIndexConstant"
,
5356.814697265625
D
,
"uniques"
,
QueryRunnerTestHelper
.
UNIQUES_2
),
ImmutableMap
.<
String
,
Object
>
of
(
providerDimension
,
"o"
,
"rows"
,
18L
,
"index"
,
2231.8768157958984
D
,
"addRowsIndexConstant"
,
2250.8768157958984
D
,
"uniques"
,
QueryRunnerTestHelper
.
UNIQUES_9
),
ImmutableMap
.<
String
,
Object
>
of
(
providerDimension
,
"f"
,
"rows"
,
4L
,
"index"
,
4875.669677734375
D
,
"addRowsIndexConstant"
,
4880.669677734375
D
,
"uniques"
,
QueryRunnerTestHelper
.
UNIQUES_2
)
)
)
)
);
TestHelper
.
assertExpectedResults
(
expectedResults
,
runner
.
run
(
query
));
}
@Test
public
void
testTopNLexicographicDimExtractionWithPreviousStop
()
{
...
...
@@ -1354,6 +1406,51 @@ public class TopNQueryRunnerTest
TestHelper
.
assertExpectedResults
(
expectedResults
,
runner
.
run
(
query
));
}
@Test
public
void
testInvertedTopNLexicographicDimExtractionWithPreviousStop2
()
{
TopNQuery
query
=
new
TopNQueryBuilder
()
.
dataSource
(
QueryRunnerTestHelper
.
dataSource
)
.
granularity
(
QueryRunnerTestHelper
.
allGran
)
.
dimension
(
new
ExtractionDimensionSpec
(
providerDimension
,
providerDimension
,
new
RegexDimExtractionFn
(
"..(.)"
)
)
)
.
metric
(
new
InvertedTopNMetricSpec
(
new
LexicographicTopNMetricSpec
(
"p"
)))
.
threshold
(
4
)
.
intervals
(
QueryRunnerTestHelper
.
firstToThird
)
.
aggregators
(
QueryRunnerTestHelper
.
commonAggregators
)
.
postAggregators
(
Arrays
.<
PostAggregator
>
asList
(
QueryRunnerTestHelper
.
addRowsIndexConstant
))
.
build
();
List
<
Result
<
TopNResultValue
>>
expectedResults
=
Arrays
.
asList
(
new
Result
<
TopNResultValue
>(
new
DateTime
(
"2011-04-01T00:00:00.000Z"
),
new
TopNResultValue
(
Arrays
.<
Map
<
String
,
Object
>>
asList
(
ImmutableMap
.<
String
,
Object
>
of
(
providerDimension
,
"o"
,
"rows"
,
18L
,
"index"
,
2231.8768157958984
D
,
"addRowsIndexConstant"
,
2250.8768157958984
D
,
"uniques"
,
QueryRunnerTestHelper
.
UNIQUES_9
),
ImmutableMap
.<
String
,
Object
>
of
(
providerDimension
,
"f"
,
"rows"
,
4L
,
"index"
,
4875.669677734375
D
,
"addRowsIndexConstant"
,
4880.669677734375
D
,
"uniques"
,
QueryRunnerTestHelper
.
UNIQUES_2
)
)
)
)
);
TestHelper
.
assertExpectedResults
(
expectedResults
,
runner
.
run
(
query
));
}
@Test
public
void
testInvertedTopNQuery
()
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录