Что такое self в Python: примеры из реального мира
Что такое self в Python: примеры из реального мира
В этом руководстве вы узнаете о различных методах сжатия LuckyTemplates в , которые помогают оптимизировать отчет.
После загрузки данных посегментно службами Analysis Services в LuckyTemplates Power Pivot и службами SSAS происходят два события. Во-первых, они пытаются использовать различные методы кодирования для сжатия столбцов, чтобы уменьшить общий размер оперативной памяти . Во-вторых, они пытаются профинансировать лучший порядок сортировки, который объединяет повторяющиеся значения. Этот метод также увеличивает сжатие и, в свою очередь, снижает нагрузку на память.
Службы Analysis Services используют различные методы сжатия. В этом руководстве рассматриваются три метода, в частности, а именно: кодирование значений, кодирование длин серий и кодирование по словарю. В последнем разделе этого учебника будет рассказано, как работать с сортировкой в службах Analysis Services.
Оглавление
Метод сжатия LuckyTemplates № 1: кодирование значений
Первый называется кодированием значений.
Кодирование значений ищет математическую связь между каждым значением в столбце, чтобы уменьшить объем памяти. Вот пример в Microsoft Excel:
В этом столбце требуется 16 384 бита для хранения значений.
Чтобы вычислить требуемые биты, сначала используйте функцию MAX() в Excel, чтобы получить наибольшее значение в столбцах. В данном случае это 9144. Затем используйте функцию POWER() для вычисления требуемых битов. Используйте аргумент POWER(2, X), где X — любое положительное значение, которое вернет ответ, превышающий значение MAX. X в этом случае также представляет требуемые биты. Таким образом, для этого примера значение X равно 14, что дает 16 384 . Следовательно, для столбца требуется 14 бит памяти.
Чтобы уменьшить количество требуемых битов с помощью кодирования значений, VertiPaq ищет значение MIN в столбце и вычитает его из каждого значения. В этом случае значение MIN в столбце равно 9003. Если вы вычтете это значение из столбца, оно вернет следующие значения:
Используя те же функции и аргументы, вы можете увидеть, что для нового столбца MAX значение равно 141. А использование 8 в качестве значения X дает 256 . Поэтому для нового столбца требуется всего 8 бит.
Вы можете видеть, насколько сжат второй столбец по сравнению с первым столбцом.
Когда данные сжаты и вы пытаетесь запросить новый столбец, Storage Engine или Vertipaq сканирует этот столбец. Они не просто вернут новые значения столбца. Вместо этого они добавляют вычитаемое значение перед возвратом результата пользователю.
Однако кодирование значений работает только со столбцами, содержащими целые числа или значения с фиксированными десятичными числами.
Техника сжатия LuckyTemplates № 2: кодирование длин серий
Второй метод кодирования называется кодированием длин серий.
Кодирование длин серий создает структуру данных, которая содержит уникальное значение, столбец Start и столбец Count.
Давайте рассмотрим пример:
В этом случае он указывает, что в первой строке доступно одно значение Red . Затем он обнаруживает, что значение Black начинается со второй строки и доступно для следующих четырех ячеек. Он переходит к третьему значению Blue , которое начинается с шестой строки и доступно для следующих трех строк. И так продолжается до тех пор, пока не будет достигнуто последнее значение в столбце.
Таким образом, вместо хранения всего столбца он создает структуру данных, содержащую только информацию о том, где начинается и где заканчивается конкретное значение, а также о том, сколько у него дубликатов.
Для столбцов с одинаковой структурой данные можно дополнительно сжать, расположив значения в порядке возрастания или убывания.
С этим правильно отсортированным столбцом вы можете видеть, что метод Run Length Encoding теперь возвращает структуру данных с одной строкой меньше.
Поэтому, если вы имеете дело со многими различными значениями, рекомендуется отсортировать столбец наиболее оптимальным способом. Это даст вам структуру данных с меньшим количеством строк, которая, в свою очередь, займет меньше оперативной памяти.
Кодирование длин серий нельзя применять к первичным ключам, поскольку столбцы первичных ключей содержат только уникальные значения. Таким образом, вместо того, чтобы хранить одну строку для каждого значения, он будет хранить столбец как есть.
Техника сжатия LuckyTemplates № 3: кодирование словаря
Третий метод кодирования называется кодированием по словарю.
Dictionary Encoding создает структуру, подобную словарю, которая содержит уникальное значение столбца. Этому уникальному значению также присваивается индекс.
Используя предыдущий пример, давайте посмотрим, как работает Dictionary Encoding. В этом случае значениям Red, Black и Blue присваиваются индексы 0, 1 и 2 соответственно.
Затем он создает структуру данных, аналогичную структуре кодирования длин серий. Однако вместо сохранения фактических значений Dictionary Encoding сохраняет назначенный индекс каждого значения.
Это дополнительно снижает потребление оперативной памяти, поскольку числа занимают меньше места, чем строковые значения.
Dictionary Encoding также делает табличный тип данных независимым. То есть, независимо от того, есть ли у вас столбец, который может храниться в различных типах данных, это не имеет значения, поскольку структура данных будет хранить только значение индекса.
Однако, даже если он независим, тип данных все равно будет влиять на размер словаря. В зависимости от типа данных, который вы выбрали для сохранения столбца, размер словаря (или структуры данных) будет колебаться. Но размер самого столбца останется прежним.
Таким образом, в зависимости от того, какой тип данных вы выберете, после применения словарного кодирования к столбцу впоследствии может быть применено кодирование длин серий.
В этом случае службы Analysis Services создадут две структуры данных. Сначала он создаст словарь, а затем применит к нему кодирование длины выполнения, чтобы еще больше увеличить сжатие столбца.
Порядок сортировки в службах Analysis Services
В последней части этого руководства давайте обсудим, как службы Analysis Services выбирают наиболее оптимальный способ сортировки данных.
В качестве примера рассмотрим столбец, содержащий значения красного, синего, черного, зеленого и розового цветов. Им также присвоены номера от 1 до 5. Это действует как словарь нашей колонки.
Теперь заполните этими значениями весь столбец в Excel. Используйте этот аргумент, чтобы сгенерировать столбец, содержащий эти значения случайным образом.
Перетащите формулу в последнюю строку. Нажмите «ОК» , если появится всплывающее окно «Большая операция» . Вот как это будет выглядеть сейчас:
Затем скопируйте весь столбец и вставьте его как значение .
Теперь, если вы перейдете к опции «Файл» в документе Excel и нажмете «Информация» , вы увидите, что столбец занимает 14,1 МБ .
Чтобы уменьшить объем потребляемой оперативной памяти, вы можете отсортировать столбец от А до Я. Если вы еще раз проверите размер, вы увидите, что он был уменьшен до 12,5 МБ .
Уменьшение на 1,9 МБ может показаться незначительным. Это связано с тем, что в примере для демонстрации использовался один столбец в Excel. Excel ограничен только 1 миллионом строк. Однако в LuckyTemplates ваши данные могут содержать миллиарды строк и столбцов. Сокращение используемого пространства растет в геометрической прогрессии.
Заключение
После того как ваши данные отсортированы наиболее оптимальным образом, Analysis Services применяет любой из трех методов сжатия в зависимости от типа данных.
Это увеличивает сжатие ваших данных, что значительно снижает объем памяти, потребляемой вашим устройством. Это делает ваш отчет более оптимальным, упрощая его запуск и загрузку.
Что такое self в Python: примеры из реального мира
Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.
В этом руководстве по языку программирования DAX вы узнаете, как использовать функцию GENERATE и как динамически изменять название меры.
В этом учебном пособии рассказывается, как использовать технику многопоточных динамических визуализаций для создания аналитических сведений из динамических визуализаций данных в ваших отчетах.
В этой статье я пройдусь по контексту фильтра. Контекст фильтра — одна из основных тем, с которой должен ознакомиться любой пользователь LuckyTemplates.
Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.
Узнайте, как рассчитать изменения вашей прибыли, используя такие методы, как разветвление показателей и объединение формул DAX в LuckyTemplates.
В этом руководстве будут обсуждаться идеи материализации кэшей данных и то, как они влияют на производительность DAX при предоставлении результатов.
Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.
Что такое шлюз LuckyTemplates? Все, что тебе нужно знать