Как разделить данные таблицы App Insights на несколько наборов данных

У меня есть таблица Application Sights с примерно миллионом строк, и мне нужны равные разделенные данные 4 набора данных/запросов, а затем объединить их все в отчете. У меня есть insertDate, который можно использовать для разделения на разные наборы данных без перекрытия данных между запросами. использование insertDate>=ago(180d) и insertDate < ago(180d) даст мне только 2 раздела этих данных, как я могу разделить эти данные поровну, скажем, 5 наборов данных, означающих 5 запросов, каждый из которых возвращает данные за 2 месяца?

Примечание. Я не знаю базовых дат, поэтому не могу жестко кодировать даты, например, оператор между датами. Это пример данных. В некоторые месяцы данных больше, чем в другие месяцы, но необходимо разделить данные поровну, чтобы избежать ограничения максимального количества строк API остальных приложений в 500 000 строк.

Контекст. Коннектор API REST Application Insights для powerBI не поддерживает более 500 тыс. строк, поэтому выше приведен один обходной путь, о котором я думаю.

let T = datatable(release:string, insertDate:datetime )  
[
"2205", datetime(2022-01-05),
"2205", datetime(2022-01-10),
"2205", datetime(2022-02-10),
"2204", datetime(2022-03-25),
"2203", datetime(2022-04-15),
"2205", datetime(2022-04-12),
"2205", datetime(2022-05-12),
"2206", datetime(2022-06-23),
"2207", datetime(2022-07-27),
"2209", datetime(2022-08-12),
"2201", datetime(2022-09-26),
"2201", datetime(2022-10-08),
];

T
|take 100;

Какова ваша мотивация для этого?

David דודו Markovitz 10.12.2022 07:59

Сколько записей?

David דודו Markovitz 10.12.2022 16:11

@DavidדודוMarkovitz, остальные API-интерфейсы App Insights, подключенные к PBI, не могут поддерживать более 500 000 строк, поэтому мы пытаемся разделить набор данных на несколько наборов данных, чтобы объединить их позже в отчете. количество строк превышает 700 тыс. и может увеличиться до 1,2 млн строк.

novice8989 12.12.2022 02:12

Еще одна проблема XY

David דודו Markovitz 12.12.2022 06:53

Извиняюсь, Дэвид, обновил вопрос, указав контекст подхода, который я пытаюсь

novice8989 12.12.2022 07:39
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
let T = datatable(release:string, insertDate:datetime )  
[
"2205", datetime(2022-01-05),
"2205", datetime(2022-01-10),
"2205", datetime(2022-02-10),
"2204", datetime(2022-03-25),
"2203", datetime(2022-04-15),
"2205", datetime(2022-04-12),
"2205", datetime(2022-05-12),
"2206", datetime(2022-06-23),
"2207", datetime(2022-07-27),
"2209", datetime(2022-08-12),
"2201", datetime(2022-09-26),
"2201", datetime(2022-10-08),
];
let groups = 5;
let total_rows = toscalar(T | count);
let group_rows = 1.0 * total_rows / groups;
let edge_rows = toscalar
(
    range x from group_rows to total_rows - group_rows step group_rows
    | extend x = round(x)
    | summarize make_list(x)
);
union   (print insertDate = datetime(0001))
       ,(T
         | order by insertDate asc 
         | where row_number() in (edge_rows)
         | project insertDate
        )
| order by insertDate asc
| project fromDate  = insertDate
         ,toDate    = next(insertDate, 1, datetime(3000))
с даты на свидание 0001-01-01T00:00:00Z 2022-01-10T00:00:00Z 2022-01-10T00:00:00Z 2022-04-12T00:00:00Z 2022-04-12T00:00:00Z 2022-05-12T00:00:00Z 2022-05-12T00:00:00Z 2022-08-12T00:00:00Z 2022-08-12T00:00:00Z 3000-01-01T00:00:00Z

Скрипка

Спасибо, Дэвид. Не могли бы вы помочь мне понять, как это поможет динамически выбирать данные, как я уже упоминал, я не знаю основных дат, которые нужно указать в условии where, например qeury1 = T | где вставить дату между <00001-01-01> <2022-01-10> ? пожалуйста, исправьте, если я что-то упустил здесь. . В основном я должен иметь возможность выбрать что-то вроде: query1 | где <условие получения первой части строк> = <> ; Запрос 2 | где условие получения второго патрона строк; так далее

novice8989 13.12.2022 08:12

Как вы можете видеть в коде, как только вы определили количество групп, все остальное полностью динамическое. Вы получаете x диапазонов дат, и для каждого из них вы должны создать запрос, например T | where insertDate >= fromDate and insertDate < toDate.

David דודו Markovitz 13.12.2022 11:01

Другие вопросы по теме