Как вернуть отдельные строки из нескольких слов из блоков текста журнала использования с POSIX? - PullRequest
0 голосов
/ 18 января 2019

Первый постер и все еще учусь веревкам, поэтому я прошу прощения, если приведенное ниже описание слишком многословно.

У меня есть база данных журналов использования, из которых я извлекаю данные через различные предварительно проанализированные поля. Этот запрос предназначен для того, чтобы возвращать счетчик того, сколько раз была зарегистрирована отдельная подпись ошибки за определенный период времени. Каждой зарегистрированной ошибке присваивается signature_id, все ошибки одного типа присваиваются одинаковым signature_id. Одно из полей, которое я возвращаю в своем запросе, message, возвращает всю трассировку стека сообщений / блок текста журнала использования.

Я хочу, чтобы мой запрос группировался по signature_id, что является предварительно проанализированным полем в таблице, из которой я выбираю. Я изо всех сил пытаюсь заставить это работать, потому что, хотя подобным типам ошибок назначается то же самое signature_id', every usage log differs slightly due to the timestamp of when the message was logged. So my query is grouping by сообщение instead of подпись`.

EX: из того, что возвращает мой запрос, если я возвращаю весь журнал использования message

signature_id    
b2dea422 

message
2019-01-17 18:01:52,130 ip-BLANK [WARN ][159] [request_id=00e74d7c] Type=Blank.Multiverse.Web.Mvc.Attributes.Usage+UsageLoggingException Message=UsageLogContext not present in HttpContext.Current.Items Data: Signature=b2dea422 Stack Trace: at Blank.Blank.Web.Mvc.Attributes.Usage.GetUsageLogContext() at Blank.Blank.Web.Mvc.Attributes.Usage.AddData(Object data)

count
1

signature_id    
b2dea422 

message
2019-01-17 16:21:36,681,130 ip-BLANK [WARN ][38] [request_id=c140f8ea] Type=Blank.Multiverse.Web.Mvc.Attributes.Usage+UsageLoggingException Message=UsageLogContext not present in HttpContext.Current.Items Data: Signature=b2dea422 Stack Trace: at Blank.Blank.Web.Mvc.Attributes.Usage.GetUsageLogContext() at Blank.Blank.Web.Mvc.Attributes.Usage.AddData(Object data)

count
1

Я упоминал выше, что каждый журнал использования отличается из-за отметки времени, когда данное сообщение было зарегистрировано, но аналогичные типы ошибок назначаются одинаковыми signature_id. Подобные типы ошибок также имеют одинаковые Exception Message= ...

EX: Каждый раз, когда сообщение регистрируется с signature_id=ab7d890pq, оно также будет иметь Exception Message=Cannot read property 'get' of undefined в блоке сообщения.

Поскольку в таблице, которую я выбираю, нет предварительно проанализированного поля exception_message, я хочу проанализировать строку Exception Message=, чтобы мой GROUP BY возвратил количество различных зарегистрированных signature_id и столбец с сообщением об исключении предназначен для каждой отдельной подписи.

Мой текущий запрос, показанный ниже, начинает анализировать строку исключения, но я не могу заставить ее вернуть всю строку:

SELECT CASE
           WHEN sourcecategory = 'source_hello_world_category' THEN 'hwCategory'
       END AS Service,
       signature,
       NULLIF(SUBSTRING(REGEXP_SUBSTR(message, 'Message=\\w+[[:space:]]+'), 9), '') AS exceptionmessage,
       count(*)
FROM user_usage_logs
WHERE (signature IS NOT NULL
       AND signature NOT IN ('ccce9e73',
                             '787dd1b5',
                             '17fc66bc',
                             'ca384d1f',
                             '20121ecb',
                             'ccce9e73'))
  AND sourcecategory IN ('source_hello_world_category')
  AND messagetime > (getdate() - 1)
GROUP BY signature,
         sourcecategory,
         exceptionmessage
ORDER BY COUNT DESC
LIMIT 10;

Код, показанный выше, возвращает:

signature_id   exceptionmessage        count

b1det422       Cannot                  31,321
330ope77       Unauthorized            1,207
53m6m466       Reference               311

Это пример того, как я хочу вернуло:

signature_id   exceptionmessage                                  count

b1det422       Cannot read property 'get' of undefined Stack     31,321
330ope77       Unauthorized access response for many users       1,207
53m6m466       Reference cannot be set to an empty.object.3      311
...