Запрос Kusto для расчета количества пользователей, которые столкнулись с X количеством сбоев за Y дней с момента выпуска - PullRequest
0 голосов
/ 31 марта 2020

Моя таблица данных kusto записывает событие каждый раз, когда кто-либо, пользующийся продуктом, испытывает кр sh. Я хочу подсчитать, сколько пользователей испытали как минимум «X» количество сбоев за «Y» количество дней с момента выпуска продукта.

Итак, если продукт был выпущен 1 января, а таблица событий cra sh выглядит следующим образом:

 |  Date  |  User Id  |  Days Since Release  |
 |  1/1   |    A      |          0           |
 |  1/1   |    A      |          0           |
 |  1/1   |    B      |          0           |
 |  1/2   |    A      |          1           |
 |  1/3   |    B      |          2           |
 |  1/4   |    C      |          3           |

Тогда результаты будут:

 | Days Since Release  |  Number of Crashes  | Number of users  |
 |        0            |         1           |        2         |    // Users A and B experienced 1 crash on 0th day
 |        0            |         2           |        1         |    // User A experienced 2 crashes on 0th day
 |        1            |         1           |        2         |    // Users A and B experienced at least 1 crash on 1st day
 |        1            |         2           |        1         |    // User A experienced at least 2 crashes on 1st day
 |        1            |         3           |        1         |    // User A experienced at least 3 crashes on 1st day
 |        2            |         1           |        2         |    // Users A and B experienced at least 1 crash on 2nd day
 |        2            |         2           |        2         |    // Users A and B experienced at least 2 crashes on 2nd day
 |        2            |         3           |        1         |    // User A experienced at least 3 crashes on 2nd day
 |        3            |         1           |        3         |    // Users A, B and C experienced at least 1 crash on 3rd day
 |        3            |         2           |        2         |    // Users A and B experienced at least 2 crashes on 3rd day
 |        3            |         3           |        1         |    // User A experienced at least 3 crashes on 3rd day

Я пытался сделать это с помощью функции activity_engagement, но не смог выполнить агрегирование, необходимое для количества сбоев "X" и дней после выпуска "Y".

1 Ответ

2 голосов
/ 31 марта 2020

Пожалуйста, посмотрите запрос ниже, я считаю, что это то, что вы ищете. Идея состоит в том, чтобы расширить счет для каждого пользователя, начиная со дня cra sh и до общего числа DaysSinceRelease (поскольку, если cra sh произошел в день # 1, его также следует учитывать во все дни, следующие за # 1) , Затем мы также расширяем range(1, NumCrashes, 1), поскольку, если у пользователя было 3 сбоя, они также должны учитываться в ячейках at-least-1 и at-least-2.

let totalDaysSinceRelease = 3; 
datatable(Date:datetime, UserId:string, DaysSinceRelease:long)
[ 
    datetime(2020-01-01), "A", 0,
    datetime(2020-01-01), "A", 0, 
    datetime(2020-01-01), "B", 0, 
    datetime(2020-01-02), "A", 1, 
    datetime(2020-01-03), "B", 2,
    datetime(2020-01-04), "C", 3 
]
| summarize NumCrashes = count() by UserId, DaysSinceRelease
| order by UserId asc, DaysSinceRelease asc
| extend NumCrashes = row_cumsum(NumCrashes, UserId != prev(UserId))
| extend DaysSinceRelease = range(DaysSinceRelease, totalDaysSinceRelease, 1)
| mv-expand DaysSinceRelease to typeof(long)
| summarize NumCrashes=max(NumCrashes) by UserId, DaysSinceRelease
| extend NumCrashes = range(1, NumCrashes, 1) | mv-expand NumCrashes to typeof(long)
| summarize dcount(UserId) by DaysSinceRelease, NumCrashes
| order by DaysSinceRelease asc, NumCrashes asc

enter image description here

...