OMS Log Analytics 8 МБ PowerBI Query Limit обходные пути?

Поэтому я запрашиваю данные напрямую из аналитики OMS Log с помощью PowerBI Desktop и считаю, что для данных, возвращаемых запросом, существует жесткое ограничение в 8 МБ. У меня проблема в том, что мне нужно запросить около 30 000 строк, но достигнуть ограничения в 8 МБ около 18 000 строк. Можно ли разбить запрос, например, запрос1 будет возвращать строки 1 - 18 000, запрос 2 будет возвращать 18 001 - 28 000 и т. Д., Затем я могу объединить запросы в PowerBI, чтобы получить представление обо всех данных?

Проблема в моем опыте в этой области, в частности DAX довольно ограничен, поэтому я не знаю, как это указать в расширенном редакторе. Любая помощь здесь будет высоко ценится.

Спасибо!

0 ответов

Та же проблема. Решил это.

Моя потребность: у меня есть таблица в Azure LogAnalytics (LA), которая накапливает около 35 000 строк в день. Мне нужно было перенести все строки из Лос-Анджелеса в PowerBi для анализа.

Моя проблема: я создал нужный KQL-запрос в веб-интерфейсе LA Logs Web UX. Затем я выбрал функцию "Экспорт -> Экспорт в запрос PowerBI M". Вставил его в ПУСТОЙ запрос в PowerBi. Автор. И я заметил несколько странных поступков:

1) - Как вы сказали, я получал около 35 тысяч строк данных, каждый запрос немного урезал бы первую дату в моем диапазоне KQL.

2) - Кроме того, я обнаружил, что каждый день запрос произвольно обрезает некоторые строки - как будто он "угадывает", какие данные мне не нужны, чтобы соответствовать лимиту.

3) - Независимо от того, какой пункт KQL |where TimeGenerated >= ago(xd) я написал, я явно не собирался возвращать больше, чем ограничения, которые он удерживал.

Мое решение - и оно отлично работает. В PowerQuery я создал новую пустую таблицу в PowerQuery/M (не таблицу DAX!). В этой таблице я использовал DateTimeZone.UtcNow(), чтобы начать с сегодняшней даты, затем я добавил столбец с именем [Days Back] и добавил строки для -1,-2,-3...-7. Затем, добавив немного M, я добавил еще одно двоеточие, которое вычитает сегодня из дней назад, давая мне историю дат. .

Теперь у меня есть таблица, из которой я могу перебирать каждую дату в истории и передавать своему KQL-запросу parm1 для: | where TimeGeneratedDate == todatetime('"& Date.ToText(TimeGeneratedDateLoop) & "')

Как видите, после того, как я отредактировал свой основной запрос в Лос-Анджелесе, чтобы использовать TimeGeneratedDateLoop в качестве параметра, теперь я могу получать количество записей за каждый полный день без превышения лимита в Лос-Анджелесе. Обратите внимание, что в моем случае ни один день не нарушает ограничение в 8 МБ. Если у вас есть, то вы можете решить эту проблему, сделав 12-часовые поломки вместо полного рабочего дня.

Вот мой последний M-запрос для функции:

ПРИМЕЧАНИЕ. Я также удалил эту строку из предварительно сгенерированного запроса: "prefer"="ai.response-thinning=true" <- Не знаю, помогло ли это, но установка значения false не сработала.

let
  FxDailyQuery = (TimeGeneratedDateLoop as date) => 
    let
      AnalyticsQuery = 
        let
          Source = Json.Document(Web.Contents(
            "https://api.loganalytics.io/v1/workspaces/xxxxx-202d-xxxx-a351-xxxxxxxxxxxx/query", 
            [
              Query = [#"query"
                = "YourLogAnalyticsTbl
| extend TimeGeneratedDate = bin(TimeGenerated, 1d)
| where notempty(Col1)
| where notempty(Col2) 
| where TimeGenerated >= ago(30d) 
| where TimeGeneratedDate == todatetime('"& Date.ToText(TimeGeneratedDateLoop) & "')
", #"x-ms-app" = "OmsAnalyticsPBI"], 
              Timeout = #duration(0, 0, 4, 0)
            ]
          )),
          TypeMap = #table({"AnalyticsTypes", "Type"}, {
            {"string", Text.Type}, 
            {"int", Int32.Type}, 
            {"long", Int64.Type}, 
            {"real", Double.Type}, 
            {"timespan", Duration.Type}, 
            {"datetime", DateTimeZone.Type}, 
            {"bool", Logical.Type}, 
            {"guid", Text.Type}, 
            {"dynamic", Text.Type}
          }),
          DataTable = Source[tables]{0},
          Columns = Table.FromRecords(DataTable[columns]),
          ColumnsWithType = Table.Join(Columns, {"type"}, TypeMap, {"AnalyticsTypes"}),
          Rows = Table.FromRows(DataTable[rows], Columns[name]),
          Table = Table.TransformColumnTypes(Rows, Table.ToList(
            ColumnsWithType, 
            (c) => {c{0}, c{3}}
          ))
        in
          Table
    in
      AnalyticsQuery
in
  FxDailyQuery
Другие вопросы по тегам