#lookup #druid
#поиск #druid
Вопрос:
Я работаю с druid уже короткое время и тестирую функциональность зарегистрированного поиска.
Я уже создал поиск в http://:/druid/coordinator/v1/lookups , следующим образом:
{
"__default": {
"home_post_code": {
"type": "map",
"map": {"13210": "Syracuse, NY"}
}
}
}
Насколько я понял, это сопоставление должно заменить все вхождения со значением «13210» на «Сиракузы, Нью-Йорк» для измерения «home_post_code», объявленного в разделе запроса ниже:
...
},
"dimensions": [
"home_post_code",
{
"type":"registeredLookup",
"dimension" : "home_post_code",
"outputName" : "home_post_code_description",
"lookup":"home_post_code",
"retainMissingValue": true,
"injective": false
}
],
...
Проблема в том, что когда я выполняю запрос, значение в столбце «home_post_code_description» не заменяется в соответствии с отображением.
Я могу перечислить поиск в http://:/druid/listen/v1/lookups , поэтому я считаю, что он должным образом зарегистрирован.
Чего мне здесь не хватает? Должен ли я изменить какую-либо конфигурацию чего-либо?
Заранее спасибо.
Ответ №1:
Вы можете попробовать несколько способов, чтобы решить эту проблему.
- Удалите все поисковые запросы, которые вы не используете
- либо используйте «__default» в качестве имени уровня, либо укажите свой уровень, какой захотите, но не забудьте указать во ВСЕХ ваших runtime.properties с именем druid.поиск.lookupTierIsDatasource=ложный druid.поиск.lookupTier=_default_tier
- убедитесь, что GET работает над этим поиском (см. Документацию для get api для поиска)
Пример: Типичный поисковый запрос будет выглядеть следующим образом
{
"intervals":[
"Your interval"
],
"granularity":"all",
"queryType":"groupBy",
"threshold":1000,
"dataSource":"your datasource name",
"aggregations":[
{
"type":"doubleSum",
"name":"sum",
"fieldName":"your field"
}
],
"dimensions":[
{
"type":"default",
"dimension":"your dimention mentioned in lookup- Key",
"outputName":"anyoutput name",
"outputType":<"STRING"|"LONG"|"FLOAT">,
"name":"your registered lookup name"
},
{
"type" : "extraction",
"dimension" : "your dimention mentioned in lookup- Key",
"outputName" : "anyout put name",
"outputType": "<"STRING"|"LONG"|"FLOAT">,
"extractionFn" : {
"type":"registeredLookup",
"lookup":"your registered lookup name",
"retainMissingValue":true
}
}
],
"metric":{
}
}`
```
Это будет работать.. После долгих усилий я, наконец, разбил эту проблему на решения
Ответ №2:
Вероятно, ваш запрос неверен. Вы должны использовать ExtractionDimensionSpec с функцией извлечения, являющейся зарегистрированной функцией извлечения поиска.
"dimensions" : [ {
"type" : "extraction",
"dimension" : "home_post_code",
"outputName" : "home_post_code_description",
"extractionFn": {
"type":"registeredLookup",
"lookup": "home_post_code",
"retainMissingValue":true,
"injective":false
}
} ]
Комментарии:
1. Мало того, что тип поиска в druid не зарегистрирован, я считаю, что это поиск по карте, поэтому даже при правильном запросе для зарегистрированного поиска он не будет работать.
Ответ №3:
Вы должны использовать функцию извлечения, которая преобразует значения измерений с использованием заданной функции извлечения.
"dimensions": [
{
"dimension": "id",
"type": "extraction",
"extractionFn": {
"type":"lookup",
"lookup": {
"type":"map",
"map":{
"13210": "Syracuse, NY"
}
},
"retainMissingValue":false,
"injective":false
}
}
]