Поделиться через


Параметры в виде раскрывающегося списка в книге

С помощью параметров раскрывающегося списка можно собирать одно или несколько входных значений из известного набора. Например, можно использовать раскрывающийся список, чтобы выбрать один из запросов приложения. Раскрывающиеся списки предоставляют понятный пользователю способ сбора произвольных входных данных от пользователей. Раскрывающиеся списки особенно полезны при включении фильтрации в интерактивных отчетах.

Самый простой способ задать параметр раскрывающегося списка — это указать статический список в настройке параметров. Более интересный способ — получить список динамически при помощи запроса KQL. Также с помощью настройки параметров можно указать, будет ли он с одиночным или множественным выбором. При множественном выборе можно указать, каким образом должен быть отформатирован результирующий набор, например, в виде разделителя или в кавычках.

При использовании статического содержимого JSON или получения динамических значений из запросов раскрывающиеся параметры позволяют получить до четырех полей информации в этом конкретном порядке:

  1. value (обязательно): первый столбец или поле в данных используется в качестве литерального значения параметра. В случае простых статических параметров JSON это может быть так же просто, как содержимое ["dev", "test", "prod"]JSON, которое создаст раскрывающийся список из трех элементов с этими значениями как значением, так и меткой в раскрывающемся списке. Имя этого поля не обязательно value, раскрывающийся список будет использовать первое поле в данных независимо от имени.

  2. label (необязательно): второй столбец / поле в данных используется в качестве отображаемого имени или метки параметра в раскрывающемся списке. Если значение не указано, оно используется в качестве метки. Имя этого поля не обязательно label, раскрывающийся список будет использовать второе поле в данных независимо от имени.

  3. selected (необязательно): третий столбец или поле в данных используется для указания значения, которое должно быть выбрано по умолчанию. Если он не указан, элементы по умолчанию не выбраны. Поведение выбора основано на концепции "фальсии" JavaScript, поэтому значения, такие как 0, falsenullили пустые строки, обрабатываются как не выбранные. Имя этого поля не обязательно selected, раскрывающийся список будет использовать третье поле в данных независимо от имени.

    Примечание.

    Это только управляет выбором по умолчанию , когда пользователь выбрал значения в раскрывающемся списке, используются эти выбранные пользователем значения. Даже если последующий запрос к параметру выполняется и возвращает новые значения по умолчанию. Чтобы вернуться к выбору по умолчанию, можно использовать параметр "Элементы по умолчанию" в раскрывающемся списке, который повторно запрашивает значения по умолчанию и применяет их.

    Значения по умолчанию применяются только в том случае, если элементы не были выбраны пользователем.

    Если последующий запрос возвращает элементы, которые не включают ранее выбранные значения, отсутствующие значения удаляются из выбора. Выбранные элементы в раскрывающемся списке становятся пересечением элементов, возвращаемых запросом, и выбранными ранее элементами.

  4. group (необязательно): в отличие от других полей, столбец группировки должен называться group и отображаться после valueи label selected. Это поле в данных используется для группировки элементов в раскрывающемся списке. Если это не указано, группирование не используется. Если выбор по умолчанию не нужен, данные или запрос по-прежнему должны возвращать selected поле по крайней мере в одном объекте или строке, даже если все значения имеют значение false.

Примечание.

Любые другие поля в данных игнорируются параметром раскрывающегося списка. Рекомендуется ограничить содержимое только теми полями, которые используются раскрывающимся списком, чтобы избежать сложных запросов, возвращающих данные, которые игнорируются.

Создание параметра статического раскрывающегося списка

  1. Начните с пустой книги в режиме редактирования.

  2. Выберите Добавить параметры>Добавить параметр.

  3. В открывшейся области параметров введите:

    1. Имя параметра: Environment

    2. Тип параметра: Drop down

    3. Требуется: checked

    4. Разрешить множественный выбор: unchecked

    5. Получите данные из: JSON или выберите Query и выберите JSON источник данных.

      Источник данных JSON позволяет содержимому JSON ссылаться на все существующие параметры.

  4. Вставьте следующий фрагмент JSON в блок входных текстовых данных JSON:

    [
        { "value":"dev", "label":"Development" },
        { "value":"ppe", "label":"Pre-production" },
        { "value":"prod", "label":"Production", "selected":true }
    ]
    
  5. Выберите Обновить.

  6. Нажмите кнопку Сохранить, чтобы создать параметр.

  7. Параметр Environment — это раскрывающийся список с тремя значениями.

    Снимок экрана: создание параметра статического раскрывающегося списка.

Создание статического раскрывающегося списка с группами элементов

Если результат запроса или JSON содержит поле, в раскрывающемся списке отображаются group группы значений. Следуйте приведенному выше примеру, но вместо этого используйте следующий код JSON:

[
    { "value":"dev", "label":"Development", "group":"Development" },
    { "value":"dev-cloud", "label":"Development (Cloud)", "group":"Development" },
    { "value":"ppe", "label":"Pre-production", "group":"Test" },
    { "value":"ppe-test", "label":"Pre-production (Test)", "group":"Test" },
    { "value":"prod1", "label":"Prod 1", "selected":true, "group":"Production" },
    { "value":"prod2", "label":"Prod 2", "group":"Production" }
]

Снимок экрана: пример сгруппированного раскрывающегося списка.

Примечание.

При использовании group поля в запросе необходимо также указать значение и label selected поля.

Создание параметра динамического раскрывающегося списка

  1. Начните с пустой книги в режиме редактирования.

  2. Выберите Добавить параметры>Добавить параметр.

  3. В открывшейся области параметров введите:

    1. Имя параметра: RequestName
    2. Тип параметра: Drop down
    3. Требуется: checked
    4. Разрешить множественный выбор: unchecked
    5. Получать данные из: Query
  4. Вставьте следующий фрагмент JSON в блок входных текстовых данных JSON:

        requests
        | summarize by name
        | order by name asc
    
  5. Снова выберите Выполнение запроса.

  6. Нажмите кнопку Сохранить, чтобы создать параметр.

  7. Параметр RequestName — это раскрывающийся список со именами всех запросов в приложении.

    Снимок экрана: создание параметра динамического раскрывающегося списка.

Пример: пользовательские метки, выбор первого элемента по умолчанию и группирование по имени операции

Запрос, используемый в предыдущем динамическом раскрывающемся списке, возвращает список значений, отображаемых в раскрывающемся списке. Если требуется другое отображаемое имя или разрешить пользователю выбрать отображаемое имя, используйте значение, метку, выделение и столбцы группы.

В следующем примере показано, как получить список отдельных зависимостей Application Insights. Отображаемые имена стильируются с эмодзи, первый элемент выбирается по умолчанию, а элементы группируются по именам операций:

dependencies
| summarize by operation_Name, name
| where name !contains ('.')
| order by name asc
| serialize Rank = row_number()
| project value = name, label = strcat('🌐 ', name), selected = iff(Rank == 1, true, false), group = operation_Name

Снимок экрана: параметр раскрывающегося списка с параметрами значения, метки, выбора и группы.

Ссылка на параметр раскрывающегося списка

Вы можете ссылаться на параметры раскрывающегося списка в любом месте, где можно использовать параметры, включая замену значения параметра в запросы, параметры визуализации, текстовое содержимое Markdown или другие места, где можно выбрать параметр в качестве параметра.

В KQL

  1. Выберите Добавить запрос, чтобы добавить элемент управления запросом, а затем выберите ресурс Application Insights.

  2. В редакторе KQL введите этот фрагмент кода:

        requests
        | where name == '{RequestName}'
        | summarize Requests = count() by bin(timestamp, 1h)
    
    
  3. Этот фрагмент увеличивает время оценки запроса до:

        requests
        | where name == 'GET Home/Index'
        | summarize Requests = count() by bin(timestamp, 1h)
    
  4. Выберите запрос запуска, чтобы просмотреть результаты. При необходимости выводите его в виде диаграммы.

    Снимок экрана: параметр раскрывающегося списка, на который ссылается KQL.

Параметр Описание Пример
{DependencyName} Выбранное значение GET fabrikamaccount
{DependencyName:value} Выбранное значение (аналогично приведенному выше) GET fabrikamaccount
{DependencyName:label} Выбранная метка 🌐 GET fabrikamaccount
{DependencyName:escape} Выбранное значение с любыми общими символами кавычки, замененными при форматировании в запросы GET fabrikamaccount

Несколько выборок

В рассмотренных примерах явно задан параметр для выбора только одного значения в раскрывающемся списке. Параметры раскрывающегося списка также поддерживают множественный выбор. Чтобы включить этот параметр, установите флажок Разрешить множественный выбор.

Вы можете указать формат результирующего набора с помощью параметров Разделитель и Кавычки. По умолчанию , (запятая) используется в качестве разделителя, а ' (одинарный кавычки) используется в качестве символа кавычки. Значение по умолчанию возвращается в виде коллекции в виде 'a', 'b', 'c' форматирования в запросе. Кроме того, можно ограничить максимальное количество выбранных элементов.

При использовании нескольких параметров выбора в запросе убедитесь, что KQL, ссылающийся на параметр, работает с форматом результата. Например:

  • Один параметр значения не включает кавычки при форматировании в запрос, поэтому обязательно включите кавычки в сам запрос, например: where name == '{parameter}'
  • Кавычки включаются в форматированный параметр при использовании нескольких параметров выбора, поэтому убедитесь, что запрос не содержит кавычки. Например, where name in ({parameter}).

Обратите внимание, как этот пример также переключился на name == name in. Оператор == разрешает только одно значение, а in оператор разрешает несколько значений.

dependencies
| where name in ({DependencyName})
| summarize Requests = count() by bin(timestamp, 1h), name

В этом примере показан параметр раскрывающегося списка с множественным выбором в работе:

Снимок экрана: раскрывающийся список с множественным выбором.

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

  • Любой из них
  • Любые три
  • ...
  • Любой 100
  • Любое настраиваемое ограничение
  • Все

При выборе этих специальных элементов значение параметра автоматически устанавливается на определенное количество элементов или все значения.

Специальный регистр All и разрешение пустого выбора для обработки как "Все"

При выборе "Все" появится дополнительное поле, позволяющее указать специальное значение для параметра All . Это полезно, если "Все" может быть большим количеством элементов и может создать очень большой запрос.

Снимок экрана: окно

В этом конкретном случае строка [] используется вместо значения. Эта строка может использоваться для создания пустого массива в запросе журналов, например:

let selection = dynamic([{Selection}]);
SomeQuery 
| where array_length(selection) == 0 or SomeField in (selection)

Если выбраны все элементы, значение Selection []имеет значение , создающее пустой массив для переменной selection в запросе. Если значения не выбраны, значение Selection отформатировано как пустая строка, что также приводит к пустому массиву. Если выбраны какие-либо значения, они форматируются внутри динамической части запроса, что приводит к возникновению этих значений массива. Затем можно проверить наличие array_length фильтра без применения или использования in оператора для фильтрации значений в массиве.

Другие распространенные примеры используют "*" в качестве специального значения маркера, если требуется параметр, а затем тестировать с помощью:

| where "*" in ({Selection}) or SomeField in ({Selection})

Следующие шаги

Узнайте о типах визуализаций, которые можно использовать для создания расширенных визуальных отчетов с помощью книг Azure.