Предыдущие посты серии:
1. Документация по промптам.
2. Выбор нейронок.
3. Подготовка к разработке.
4. Оптимизация кода.
5. Если код не "летает".
6. Минимизируем вычисления.
7. Фатальный пример вычислений.
1️⃣ Удаляем ненужные столбцы.
2️⃣ Обрабатываем не исходный массив с разбивкой по датам и другим атрибутам, а в новом запросе ссылаемся на этот массив, получаем список уникальных значений из нужного столбца.
3️⃣ Обрабатываем уникальные значения в новом столбце.
4️⃣ Если эти данные нужны на следующих этапах — объединяем исходный массив с этим запросом по общему полю.
5️⃣ Если эти данные нужны в таком виде в конечной визуализации данных:
а) Выгружаем второй запрос в модель данных.
б) Объединяем две таблицы по ключевому полю в модели данных, т.к. это работает быстрее.
✅ Нет необходимости понимать код. Достаточно понимать, как попросить нейронку:
1. Обратиться к нужным таблицам и столбцам.
2. Какие операции нужно сделать.
3. Что должно получиться в результате.
4. Какие вычисления безопасны: O(1), O(log n), O(n), O(n + m).
5. А какие — смерть для производительности: O(n log n), O(n × m), O(n²), O(nᵏ), O(2ⁿ), O(n!).
✅ Если группировать, фильтровать, сортировать таблицу нужно по списку полей, названия и количество которых могут меняться от проекта к проекту, для возможности использования кода в других проектах, список этих полей нужно получить динамически:
😶 Либо обратившись к умной таблице в Excel, куда вводить вручную эти значения, и передавать их дальше в код просто как название списка (количество элементов в списке и их значения при этом будут не важны).
😶 Либо вычленив общие текстовые паттерны в заголовках этих полей и отфильтровав:
1. Значение:
{"Текст"}.2. Хардкод списка (так делать не нужно):
{"Текст1", "Текст2", "Текст3"}.3. Имя списка, который динамически получает список текстовых значений.
Примеры, как их отфильтровать (список неполный, ибо способов — уйма) по:
— Содержанию:
List.Contains— Отсутствию:
not List.Contains— Началу:
Text.StartsWith— Не началу:
not Text.StartsWith— Окончанию:
Text.EndsWith— Не окончанию:
not Text.EndsWith😶 Либо обратив внимание на расположение в таблице самих полей и если они находятся:
— Или всегда в начале;
— Или всегда в конце;
— Или идут подряд;
— Или стоят до, после или между полями с заведомо известными значениями;
То получить функцией
Table.ColumnNames список полей таблицы, а дальше отфильтровать их:— Взяв N элементов с начала списка:
List.FirstN— Взяв N элементов с конца списка:
List.LastN— Удалив N элементов в конце списка:
List.RemoveLastN— Получив диапазон значений между N и M позициями списка:
List.Range— Пропустив N элементов с начала списка:
List.Skip✅ Преобразуем список уникальных значений:
😶 Удаляем дубликаты, пустоты, null.
😶 В начале следующего запроса буферизуем его:
List.Buffer.В следующем посте — о смерти производительности кода в Power Query.
via @ppc_bigbrain
