Предыдущие посты серии:
1. Документация по промптам.
2. Выбор нейронок.
3. Подготовка к разработке.
4. Оптимизация кода.
5. Если код не "летает".
6. Минимизируем вычисления.
7. Фатальный пример вычислений.
8. Порядок обработки данных.
9. Смерть производительности. Часть 1.
10. Смерть производительности. Часть 2.
11. Плохие и хорошие примеры.
12. Когда в PQ сортировать данные.
13. Параметризация переменными.
Что обязательно нужно учесть перед созданием кода:
⚫️ В какие типы объектов преобразовать те или иные данные для ускорения их обработки.
⚫️ Нужна ли сортировка и на каком этапе:
😶 По каким атрибутам: текстовым, числовым.
😶 В каком порядке.
😶 Как получить списки этих полей динамически.
⚫️ На каком этапе получать список уникальных значений:
😶 Удалением дублей в таблице и по каким столбцам:
Table.Distinct.😶 Получением списка и удаления дублей в нём:
List.Distinct(Table1[Column1])😶 Группировкой таблицы и по каким столбцам:
Table.Group.😶 Как сгруппировать остальные столбцы:
🥷 С текстом:
List.Sort, List.Distinct, Text.Combine.🥷 С числами:
List.Max, List.Sum, List.Min.😶 Что вы собираетесь делать с этими данными дальше.
⚫️ На каком этапе значения null заменить на 0. Потому что нейронка не знает, что вы текущий кусок кода через 10 этапов преобразований будете группировать с суммированием, а суммирование значений null вернёт ошибку.
⚫️ На каком этапе преобразований и в каком столбце указать какой тип данных.
😶 Если в столбце с числовыми значениями будет ошибочно указан текстовый тип данных, агрегатные функции
List.Max, List.Sum, List.Min вернут ошибку.😶 При сцепке (конкатенации) двух столбцов, в одном из которых тип данных — текст, а в другом — целое число, эта операция вернёт ошибку. Сцеплять можно только текст с текстом.
😶 Оборачивание столбца с числами в функцию
Text.From преобразует их в текст для последующих текстовых преобразований.⚫️ Какие функции не использовать, т.к. они очень дорогостоящие, чем их заменить, чтобы они выполнялись мгновенно.
⚫️ Использовать аналоги векторной обработки (всего столбца сразу как единого массива), а не каждой строки по отдельности.
⚫️ Как отфильтровать исходный массив, чтобы вхолостую не применять тяжёлые операции преобразований к строкам, в которых даже нет искомых данных.
😶 По каким условиям фильтровать.
😶 Как получить этот список условий динамически.
⚫️ Как не перегрузить модель данных нормализацией и "снежинкой", чтобы визуальный слой быстро обновлялся и легко пересчитывался в "звёздочке".
Что изучать для BI-разработки и работы с данными — в следующем посте.
via @ppc_bigbrain