MyTetra Share
Делитесь знаниями!
Power Query. Трюки и советы. Таблица навигации по функциям М
Время создания: 07.10.2021 20:18
Текстовые метки: Power Query
Раздел: Разные закладки - MSO - Excel - Power Query
Запись: xintrea/mytetra_db_adgaver_new/master/base/1633627131trdb96y28h/text.html на raw.githubusercontent.com

Описание

В этом уроке вы узнаете как создать таблицу навигации по всем функциям языка Power Query.

На картинке только кусочек таблицы. В полной версии вы увидите намного больше строк и столбцов.

Таблица содержит следующую информацию:

  • Название функции
  • Краткое описание из документации
  • Длинное описание из документации
  • Категория функции
  • Еще один вид описания
  • Код с примером использования
  • Результат использования

Решение

Чтобы получить перечень всех функций нам понадобится функция #shared.

К каждой функции в столбце функций нужно применить функции Value.Type и Value.Metadata.

Дальше останется только привести полученные данные к удобному виду.

Примененные функции

  • Record.ToTable
  • Table.SelectColumns
  • Text.Contains
  • Table.AddColumn
  • Value.Metadata
  • Value.Type
  • Table.ExpandRecordColumn
  • Table.ExpandListColumn
  • Table.SelectRows
  • Table.Sort
  • Order.Ascending
  • Table.TransformColumns
  • List.Accumulate
  • List.Positions
  • Text.Replace

Код

Код для получения готовой таблицы навигации по функциям М будет таким:

let

  source = #shared,

  to_table = Record.ToTable(source),

  filter_name = Table.SelectRows(to_table, each Text.Contains([Name], ".")),

  col_metadata = Table.AddColumn(

    filter_name,

    "Пользовательский",

    each Value.Metadata(Value.Type([Value]))

  ),

  cols_remove = Table.SelectColumns(col_metadata, {"Пользовательский"}),

  expand_col = Table.ExpandRecordColumn(

    cols_remove,

    "Пользовательский",

    {

      "Documentation.Name",

      "Documentation.Description",

      "Documentation.LongDescription",

      "Documentation.Category",

      "Documentation.Examples"

    },

    {

      "Documentation.Name",

      "Documentation.Description",

      "Documentation.LongDescription",

      "Documentation.Category",

      "Documentation.Examples"

    }

  ),

  expand_doc_examples_1 = Table.ExpandListColumn(expand_col, "Documentation.Examples"),

  expand_doc_examples_2 = Table.ExpandRecordColumn(

    expand_doc_examples_1,

    "Documentation.Examples",

    {"Description", "Code", "Result"},

    {"Description", "Code", "Result"}

  ),

  filter_doc_name = Table.SelectRows(expand_doc_examples_2, each ([Documentation.Name] <> null)),

  sort_doc_name = Table.Sort(filter_doc_name, {{"Documentation.Name", Order.Ascending}}),

  transform_col_doc_long_desc = Table.TransformColumns(

    sort_doc_name,

    {

      {

        "Documentation.LongDescription",

        each List.Accumulate(

          List.Positions(Тэги),

          _,

          (state, current) => Text.Replace(state, Тэги{current}, "")

        ),

        type text

      }

    }

  )

in

  transform_col_doc_long_desc

 


Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования