В настоящее время я использую версию druid-Incubating-0.16.0. Как упомянуто в https://druid.apache.org/docs/latest/tutorials/tutorial-update-data.html учебной ссылке, мы можем использовать комбинированный пожарный шланг для обновления и объединения данных для источника данных.
Шаг: 1 Я использую те же примеры данных с исходной структурой, что и
┌──────────────────────────┬──────────┬───────┬────────┐
│ __time │ animal │ count │ number │
├──────────────────────────┼──────────┼───────┼────────┤
│ 2018-01-01T01:01:00.000Z │ tiger │ 1 │ 100 │
│ 2018-01-01T03:01:00.000Z │ aardvark │ 1 │ 42 │
│ 2018-01-01T03:01:00.000Z │ giraffe │ 1 │ 14124 │
└──────────────────────────┴──────────┴───────┴────────┘
Шаг 2. Я обновил данные для тигра с помощью {"отметка времени": "2018-01-01T01: 01: 35Z", "животное": "тигр", "число": 30} с помощьюappendToExisting = false и rollUp = true и нашли результат
┌──────────────────────────┬──────────┬───────┬────────┐
│ __time │ animal │ count │ number │
├──────────────────────────┼──────────┼───────┼────────┤
│ 2018-01-01T01:01:00.000Z │ tiger │ 2 │ 130 │
│ 2018-01-01T03:01:00.000Z │ aardvark │ 1 │ 42 │
│ 2018-01-01T03:01:00.000Z │ giraffe │ 1 │ 14124 │
└──────────────────────────┴──────────┴───────┴────────┘
Шаг 3: Теперь я обновляю жирафа с помощью {"timestamp": "2018-01-01T03: 01: 35Z", "animal":"giraffe", "number": 30} с appendToExisting = false и rollUp = true и получают следующий результат
┌──────────────────────────┬──────────┬───────┬────────┐
│ __time │ animal │ count │ number │
├──────────────────────────┼──────────┼───────┼────────┤
│ 2018-01-01T01:01:00.000Z │ tiger │ 1 │ 130 │
│ 2018-01-01T03:01:00.000Z │ aardvark │ 1 │ 42 │
│ 2018-01-01T03:01:00.000Z │ giraffe │ 2 │ 14154 │
└──────────────────────────┴──────────┴───────┴────────┘
Я сомневаюсь, что на шаге 3 количество тигров уменьшается на 1, ноЯ думаю, что это не должно быть изменено, так как нет никаких изменений в шаге 3 для тигра, и нет никакого изменения числа также
К вашему сведению, count и number являются metricSpec, и они являются count и longSum соответственно. Пожалуйста, уточните.
при использовании пожарного рукава ingestSegment с начальными данными, такими как
┌──────────────────────────┬──────────┬───────┬────────┐
│ __time │ animal │ count │ number │
├──────────────────────────┼──────────┼───────┼────────┤
│ 2018-01-01T00:00:00.000Z │ aardvark │ 1 │ 9999 │
│ 2018-01-01T00:00:00.000Z │ bear │ 1 │ 111 │
│ 2018-01-01T00:00:00.000Z │ lion │ 2 │ 200 │
└──────────────────────────┴──────────┴───────┴────────┘
при добавлении новых данных {"отметка времени": "2018-01-01T03: 01: 35Z", "animal": "giraffe", "number": 30} with appendToExisting = true, я получаю
┌──────────────────────────┬──────────┬───────┬────────┐
│ __time │ animal │ count │ number │
├──────────────────────────┼──────────┼───────┼────────┤
│ 2018-01-01T00:00:00.000Z │ aardvark │ 1 │ 9999 │
│ 2018-01-01T00:00:00.000Z │ bear │ 1 │ 111 │
│ 2018-01-01T00:00:00.000Z │ lion │ 2 │ 200 │
│ 2018-01-01T00:00:00.000Z │ aardvark │ 1 │ 9999 │
│ 2018-01-01T00:00:00.000Z │ bear │ 1 │ 111 │
│ 2018-01-01T00:00:00.000Z │ giraffe │ 1 │ 30 │
│ 2018-01-01T00:00:00.000Z │ lion │ 1 │ 200 │
└──────────────────────────┴──────────┴───────┴────────┘
это правильный и ожидаемый результат? почему свертка не произошла?