Двигатель внутреннего сгорания
26.07.2014 / 30.03.2019 • 61895 / 12960Выявить резервы форсирования двигателя можно с привлечением формулы для расчета эффективной мощности, кВт: где — среднее эффективное давление, МПа; — рабочий объем цилиндра, дм³; i — количество цилиндров двигателя; n — частота вращения КВ, 1/мин; — тактность двигателя (для 2-х тактных =2, для 4-х тактных =4) * * * * * |
Рабочий объем цилиндра равен =**S / 4, очевидно, что увеличение диаметра цилиндра D оказывает на повышение мощности большее влияние, чем такое же увеличение хода поршня S. * * * * * |
Мощность двигателя с наддувом в значительной мере пропорциональна давлению наддува. Это позволяет ориентировочно оценить значение мощности, получаемое при наддуве двигателя, по формуле: Pek=Pe*(pka/p0), где, Pek— мощность двигателя с наддувом; Pe — мощность двигателя без наддува; pka — абсолютное давление наддува; p0— атмосферное давление. * * * * * |
Формула геометрической степени сжатия, , где — рабочий объем цилиндра; — объем камеры сгорания. т.е. геометрическая степень сжатия представляет собой отношение полного объема над поршнем (при положении поршня в НМТ) к объему над поршнем при положении его в ВМТ. * * * * * |
Определить значение эффективной степени сжатия приближенно можно по формуле , гдеk — показатель адиабаты (численное значение равно 1,41). Формула дает удовлетворительные результаты при допущении, что температура в конце процесса сжатия у двигателя с наддувом и без наддува одинаковая. Очевидно, что обеспечения бездетонационного сгорания при увеличении наддува геометрическую степень сжатия необходимо уменьшать. Например, если двигатель без наддува имеет степень сжатия 10, то в случае наддува его при давлении pka = 1,3 бар следует геометрическую степень сжатия уменьшить до 8,3 бар, а в случае наддува при давлении pka= 1,8 бар — до относительно низкого значения 6,6. Важным фактором, позволяющим повысить степень сжатия без риска возникновения детонационного сгорания, является охлаждение наддувочного воздуха. * * * * * |
Из теории ДВС известно, что мощность двигателя ( ) определяется следующим выражением: где низшая теплота сгорания топлива, — количества воздуха, теоретически необходимое для полного сгорания данного топлива,, i — тактность двигателя (4 или 2) и число цилиндров, — рабочий объем цилиндра, — коэффицент избытка воздуха,,,- соответственно, коэффицент наполнения, индикаторный и механический к. п.д., — плотность наддувочного воздуха, n — частота вращения коленчатого вала, К — константа. Анализ этого выражения показывает, что мощность двигателя можно увеличить, увеличивая число оборотов i — при сохранении размеров цилиндра, или увеличивая рабочий объем цилиндра , т.е. его размеры, или увеличивая частоту вращения коленчатого вала n, или создавая вместо четырехтактного двигателя двухтактный, т.е. меняя , или применяя эти методы совместно. Однако очевидно, что в этом случае меняется конструкция двигателя, меняются масса и габариты двигателя.* * * * * |
Количество свежего воздуха, всасываемого двигателя с наддувом, равно ,где n — в 1/с. Количество воздуха, идущего на продувку, определяется с использованием характеристик проходных сечений впускных и выпускных органов. Если температура однозначно зависит от давления (через КПД компрессора или благодаря применению охладителю наддувочного воздуха), то при постоянном противодавлении на выпуске двигателя имеется только одна линия расхода. Если у двигателя, не имеющего охладителя наддувочного воздуха, температура , соответствующая определенному давлению наддува, понижается (например, из-за повышения КПД компрессора, т.е. уменьшения показателя политропы n), то объемный V и массовый расход воздуха через двигатель увеличатся. Однако влияние КПД компрессора на объемный расход воздуха невелико: * * * * * |
Количество расхода масла вашего двигателя можно подсчитать следующим способом: Залитое количество масла (см³) — Слитое количество масла (г) : 0,86 г/см³ * * * * * |
Полная сила — F = Fw-D-R, где D-сила аэродинамического сопротивления, R-сила сопротивления качению, Fw-тяговое усилие * * * * * |
Сила аеродинамического сопротивления D=0,5 Cx p(Po)SV², где Cx-коэфф. динамического сопротивления, p(Po)-Плотность воздуха, S-площадь лобового сечения * * * * * |
Сила сопротивления качению R = KrV = 1,03V, где Kr-коэфф.трения качения колеса |
Тяговое усилие Fw = TeGn / (d/2), где Те-крутящий момент двигателя, G-главная пара, Gn-произведение передаточных чисел главной пары и включенной Передачи, d-диаметр колеса * * * * * |
Скорость вращения колеса W = 60V/πd, где V-скорость движения авто, d-диаметр колеса * * * * * |
Скорость вращения вала двигателя E = WGn, где W-скорость вращения колеса, Gn-произведение передаточных чисел главной пары и вкл. передачи * * * * * |
Вычисление Октанового числа смеси:
( ОЧПрисадки× %СодержаниеПрисадки)+(ОЧБазы× %содержаниебазы) 100 Пример: Имеем 7 литров 92-го бензина с АЗС, и 3 литра 113 бензина купленного не на АЗС.
* * * * * |
Объем, образующийся дополнительно в цилиндре при перемещении поршня от ВМТ к НМТ называется рабочим объемом цилиндра. Он обозначается VR и равен площади цилиндра умноженной на ход поршня. * * * * * |
Полным объемом цилиндра является объем над поршнем, когда он расположен в НМТ. Он обозначается Va и равен сумме объемов камеры сжатия и рабочего. Va=Vc+Vr * * * * * |
Степень сжатия Е называют отношение полного объема цилиндра к объему камеры сжатия. (сгорания) Е= __Va____ Степень сжатия показывает во сколько раз изменяется объем цилиндра при перемещении поршня от НМТ к ВМТ. Она оказывает большое значение на экономичность работы и мощность двигателя. * * * * * |
Геометрическая степень сжатия вычисляется по следущей формуле E=(Vh+Vc)/Vc, где Vh это рабочий объем цилиндра, а Vc это объем камеры сгорания, определяемый количеством масла, залитого в свечное отверстие. * * * * * |
Существуют различные системы измерения мощности двигателя, не всегда сравнимые напрямую, хотя есть четкие взаимосвязи между отдельными единицами измерения. Киловатт (кВт) 1 кВт = 1,35962 л.с. = 1,34102 hpЛошадиная сила (л.с.) 1 hp = 1,0139 л.с. Лошадиная сила США (hp) 1 л.с. = 0,9862 hp Давно и прочно вошел в обиход киловатт, но мощность определяют по разным стандартам и испытательным инструкциям по испытаниям. Есть несколько контор, разработавших свои методы измерения. От отдельных методов уже отказались. DIN Германский институт стандартизации В теории мощность двигателя (Р) рассчитывают из крутящего момента двигателя (М д) и частоты вращения двигателя (n): P = М д· n Крутящий момент двигателя (М д) выражается через силу (F), которая действует на плечо рычага (l): P= F·l·n |
Предлагаем услуги:
Где Вы предпочитаете обслуживать двигатель?
На специализированной СТО
На фирменной СТО
По рекомендации
Где дешевле
Несложные работы — сам
Обслуживаю полностью сам
Глава 15.
Работа газа в циклическом процессе. Тепловые двигатели. Цикл КарноВ программу школьного курса физики входит ряд вопросов, связанных с тепловыми двигателями. Школьник должен знать основные принципы работы теплового двигателя, понимать определение коэффициента полезного действия (КПД) циклического процесса, уметь находить эту величину в простейших случаях, знать, что такое цикл Карно и его КПД.
Тепловым двигателем (или тепловой машиной) называется процесс, в результате которого внутренняя энергия какого-то тела превращается в механическую работу. Тело, внутренняя энергия которого превращается двигателем в работу, называется нагревателем двигателя. Механическая работа в тепловых машинах совершается газом, который принято называть рабочим телом (или рабочим веществом) тепловой машины. При расширении рабочее тело и совершает полезную работу.
Для того чтобы сделать процесс работы двигателя циклическим, необходимо еще одно тело, температура которого меньше температуры нагревателя и которое называется холодильником двигателя. Действительно, если при расширении газ совершает положительную (полезную) работу (левый рисунок; работа газа численно равна площади «залитой» фигуры), то при сжатии газа он совершает отрицательную («вредную») работу, которая должна быть по абсолютной величине меньше полезной работы. А для этого сжатие газа необходимо проводить при меньших температурах, чем расширение, и, следовательно, газ перед сжатием необходимо охладить. На среднем рисунком показан процесс сжатия газа 2-1, в котором газ совершает отрицательную работу , абсолютная величина которой показана на среднем рисунке более светлой «заливкой». Чтобы суммарная работа газа за цикл была положительна, площадь под графиком расширения должна быть больше площади под графиком сжатия. А для этого газ перед сжатием следует охладить. Кроме того, из проведенных рассуждений следует, что работа газа за цикл численно равна площади цикла на графике
зависимости давления от объема, причем со знаком «плюс», если цикл проходится по часовой стрелке, и «минус» — если против.
Таким образом, двигатель превращает в механическую работу не всю энергию, взятую у нагревателя, а только ее часть; остальная часть этой энергии используется не для совершения работы, а передается холодильнику, т.е. фактически теряется для совершения работы. Поэтому величиной, характеризующей эффективность работы двигателя, является отношение
(15.1) |
где — работа, совершаемая газом в течение цикла, — количество теплоты, полученное газом от нагревателя за цикл. Отношение (15.1) показывает, какую часть количества теплоты, полученного у нагревателя, двигатель превращает в работу и называется коэффициентом полезного действия (КПД) двигателя.
Если в течение цикла рабочее тело двигателя отдает холодильнику количество теплоты (эта величина по своему смыслу положительна), то для работы газа справедливо соотношение . Поэтому существует ряд других форм записи формулы (15.1) для КПД двигателя
(15. 2) |
Французский физик и инженер С. Карно доказал, что максимальным КПД среди всех процессов, использующих некоторое тело с температурой в качестве нагревателя, и некоторое другое тело с температурой ( ) в качестве холодильника, обладает процесс, состоящий из двух изотерм (при температурах нагревателя и холодильника ) и двух адиабат (см. рисунок).
Изотермам на графике отвечают участки графика 1-2 (при температуре нагревателя ) и 3-4 (при температуре холодильника ), адиабатам — участки графика 2-3 и 4-1. Этот процесс называется циклом Карно. КПД цикла Карно равен
(15.3) |
Теперь рассмотрим задачи. В задаче 15.1.1 необходимо использовать то обстоятельство, что работа газа в циклическом процессе численно равна площади цикла на графике зависимости давления от объема, причем со знаком «плюс», если цикл проходится по часовой стрелке, и «минус» — если против. Поэтому во втором цикле работа газа положительна, в третьем отрицательна. Первый цикл состоит из двух циклов, один из которых проходится по, второй — против часовой стрелки, причем, как следует из графика 1, площади этих циклов равны. Поэтому работа газа за цикл в процессе 1 равна нулю (правильный ответ — 2).
Поскольку в результате совершения циклического процесса газ возвращается в первоначальное состояние (задача 15.1.2), то изменение внутренней энергии газа в этом процессе равно нулю (ответ 2).
Применяя в задаче 15.1.3 первый закон термодинамики ко всему циклическому процессу и учитывая, что изменение внутренней энергии газа равно нулю (см. предыдущую задачу), заключаем, что (ответ 3).
Поскольку работа газа численно равна площади цикла на диаграмме «давление-объем», то работа газа в процессе в задаче 15.1.4 равна (ответ 1). Аналогично в задаче 15.1.5 газ за цикл совершает работу (ответ 1).
Работа газа в любом процессе равна сумме работ на отдельных участках процесса. Поскольку процесс 2-3 в задаче 15.1.6 — изохорический, то работа газа в этом процессе равна нулю. Поэтому (ответ 3).
По определению КПД показывает, какую часть количества теплоты, полученного у нагревателя, двигатель превращает в работу (задача 15.1.7 — ответ 4).
Работа двигателя за цикл равна разности количеств теплоты, полученного от нагревателя и отданного холодильнику : . Поэтому КПД цикла есть
(задача 15.1.8 — ответ 3).
По формуле (15.3) находим КПД цикла Карно в задаче 15.1.9
(ответ 2).
Пусть температура нагревателя первоначального цикла Карно равна , температура холодильника (задача 15.1.10). Тогда по формуле (15.3) для КПД первоначального цикла имеем
Отсюда находим . Поэтому для КПД нового цикла Карно получаем
(ответ 2).
В задаче 15.2.1 формулы (2), (3) и (4) представляют собой разные варианты записи определения КПД теплового двигателя (см. формулы (15.1) и (15.2)). Поэтому не определяет КПД двигателя только формула 1. (ответ 1).
Мощностью двигателя называется работа, совершенная двигателем в единицу времени. Поскольку работа двигателя равна разности полученного от нагревателя и отданного холодильнику количеств теплоты, имеем для мощности двигателя в задаче 15.2.2
(ответ 3).
По формуле (15.2) имеем для КПД двигателя в задаче 15.2.3
где — количество теплоты, полученное от нагревателя, — количество теплоты, отданное холодильнику (правильный ответ — 2).
Для нахождения КПД теплового двигателя в задаче 15.2.4 удобно использовать последнюю из формул (15.2). Имеем
где — работа газа, — количество теплоты, отданное холодильнику. Поэтому правильный ответ в задаче — 3.
Пусть газ совершает за цикл работу (задача 15.2.5). Поскольку количество теплоты, полученное от нагревателя равно ( — количество теплоты, отданное холодильнику), и работа составляет 20 % от этой величины, то для работы справедливо соотношение = 0,2 ( + 100). Отсюда находим = 25 Дж (ответ 1).
Поскольку работа теплового двигателя в задаче 15.2.6 равна 100 Дж при КПД двигателя 25 %, то двигатель получает от нагревателя количество теплоты 400 Дж. Поэтому он отдает холодильнику 300 Дж теплоты в течение цикла (ответ 4).
В задаче 15.2.7 газ получает или отдает теплоту только в процессах 1-2 и 3-1 (процесс 2-3 по условию адиабатический). Поэтому данное в условии задачи количество теплоты является количеством теплоты, полученным от нагревателя в течение цикла, — количеством теплоты, отданном холодильнику. Поэтому работа газа равна (ответ 1). |
Цикл, данный в задаче 15.2.8, состоит из двух изотерм 2-3 и 4-1 и двух изохор 1-2 и 3-4. Работа газа в изохорических процессах равна нулю. Сравним работы газа в изотермических процессах. Для этого удобно построить график зависимости давления от объема в рассматриваемом процессе, поскольку работа газа есть площадь под этим графиком. График зависимости давления от объема для заданного в условии процесса приведен на рисунке. Поскольку изотерме 2-3 соответствует бóльшая температура, чем изотерме 4-1, то она будет расположена выше на графике . Объем газа в процессе 2-3 увеличивается, в процессе 4-1 уменьшается. Таким образом, график процесса на графике проходится по часовой стрелке, и, следовательно, работа газа за цикл положительна (ответ 1). |
Для сравнения работ газа на различных участках процесса в задаче 15.2.9 построим график зависимости давления от объема. Этот график представлен на рисунке. Из рисунка следует, что работы газа в процессах 1-2 и 3-4 одинаковы по модулю (этим работам отвечают площади прямоугольников, «залитых» на рисунке светлой и темной «заливкой»). Работе газа на участке 4-1 отвечает площадь под графиком 4-1, которая меньше площади под графиком 1-2. Работе газа на участке 2-3 отвечает площадь под кривой 2-3 на рисунке, которая заведомо больше площади «залитых» прямоугольников. Поэтому в процессе 2-3 газ и совершает наибольшую по абсолютной величине (среди рассматриваемых процессов) работу (ответ 2.).
Согласно определению коэффициент полезного действия представляет отношение работы газа за цикл к количеству теплоты , полученному от нагревателя . Как следует из данного в условии задачи 15.2.10 графика, и в процессе 1-2-4-1 и в процессе 1-2-3-1 газ получает теплоту только на участке 1-2. Поэтому количество теплоты, полученное газом от нагревателя в процессах 1-2-4-1 и 1-2-3-1 одинаково. А вот работа газа в процессе 1-2-4-1 вдвое меньше (так площадь треугольника 1-2-4 как вдвое меньше площади треугольника 1-2-4-1). Поэтому коэффициент полезного действия процесса 1-2-4-1 вдвое меньше коэффициента полезного действия процесса 1-2-3-1 (ответ 1).
Формулы поршневых двигателей для 4-тактных двигателей
Формулы для поршневых двигателей для 4-тактных двигателей
Общие технические обзоры
Технические приложения и конструкция
В следующих таблицах приведены уравнения для четырехтактных поршневых двигателей.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
миль в час Вычислить
| Об/мин Вычислить Чтобы рассчитать скорость двигателя (об/мин), умножьте скорость в милях в час на передаточное число заднего моста, умноженное на 336. Разделите полученное значение на диаметр шины в дюймах. или об/мин = мили в час * передаточное число * 336 / диаметр шины |
Механизм формул и механизм хранения в DAX
Большое количество пользователей Power BI используют DAX для записи показателей и вычисляемых столбцов. Однако любая формула DAX является частью запроса DAX, который обрабатывается двумя механизмами: механизмом формул и механизмом хранения. Чтобы понять их роль, мы можем проанализировать, как Power BI извлекает данные для отчета.
Например, рассмотрим следующую визуализацию в Power BI. Он отображает показатели Sales Amount и Margin% по месяцам, фильтруя только США.
Визуальный элемент графически отображает результат измерений Сумма продаж и Маржа% , которые определены в модели следующим образом:
Сумма продаж: = SUMX (Продажи, Продажи [Количество] * Продажи [Цена нетто]) Общая стоимость: = SUMX (Продажи, Продажи [Количество] * Продажи [Стоимость за единицу]) Маржа: = [Сумма продаж] - [Общая стоимость] Маржа % := РАЗДЕЛИТЬ ([Маржа], [Объем продаж])
Визуальный элемент извлекает данные для отображения с помощью следующего запроса DAX, который можно получить с помощью анализатора производительности:
ОПРЕДЕЛЯТЬ VAR __DS0FilterTable = TREATAS ( { "США" }, "Клиент" [Страна]) VAR __DS0Core = СУММАРИЗОВАТЬ КОЛОННЫ ( «Дата» [Конец месяца], __DS0Таблица фильтров, "Объем_продаж", "Продажи"[Объем продаж], "Маржа__", "Продажи"[Маржа %] ) VAR __DS0BodyLimited = SAMPLE ( 3502, __DS0Core, 'Дата' [Конец месяца], 1 ) ОЦЕНИВАТЬ __DS0BodyLimited ЗАКАЗАТЬ ПО 'Дате'[Конец месяца]
Power BI отправляет запрос DAX в модуль служб Analysis Services, содержащий семантическую модель. Этот механизм может быть локальным для Power BI Desktop или внешней службой: локальной (службы SQL Server Analysis Services) или в облаке (службы Azure Analysis Services). Подключение к набору данных, опубликованному в Power BI, также выполняет подключение к специальному облачному экземпляру служб Analysis Services.
Когда службы Analysis Services получают запрос, они создают и выполняют план запроса. План запроса выполняется два двигателя : механизм формулы и механизм хранения .
Мы можем наблюдать за этим выполнением, анализируя запрос с помощью DAX Studio. План запроса представляет собой плотный список операций.
В плане запроса каждый узел обрабатывает результат одного или нескольких дочерних узлов. Каждый узел соответствует операции, выполняемой обработчиком формул. Однако есть специальный узел, представляющий запрос к другому сервису: механизм хранения. Механизм формул может обрабатывать данные, но не может извлекать данные из таблиц в модели данных. Механизм хранения отвечает за извлечение данных. На предыдущем рисунке выделенные узлы отвечают за запросы механизма хранения. Поскольку используется модель DirectQuery, все эти узлы являются DirectQueryResult; это SQL-запросы, отправляемые на SQL Server. Для модели DirectQuery запрос DAX извлекает данные с помощью Механизм хранения DirectQuery .
Несмотря на то, что в предыдущем плане запроса показано пять запросов механизма хранения, на панели «Временные параметры сервера» в DAX Studio отображается только один SQL-запрос. SE относится ко времени, проведенному в подсистеме хранения, FE — к подсистеме формул.
Все пять узлов используют результат, полученный в результате одного выполнения следующего SQL-запроса:
ВЫБЕРИТЕ ВЕРХНИЙ (1000001) [с74], СУММ([a0]) КАК [a0], СУММ([a1]) КАК [a1] ОТ ( ВЫБИРАТЬ [t0].[Количество] AS [c4], [t0].[Стоимость единицы] AS [c7], [t0].[Чистая цена] AS [c8], [t2]. [Страна] AS [c52], [t3].[Конец месяца] AS [c74], ([t0].[Количество] * [t0].[Стоимость единицы]) AS [a0], ([t0].[Количество] * [t0].[Цена нетто]) AS [a1] ОТ ( ( (выберите [ProductKey],[CustomerKey],[Дата заказа],[Количество], [Цена за единицу],[Скидка за единицу],[Стоимость за единицу],[Цена нетто] из [Аналитика].[Продажи] как [$Таблица]) AS [t0] ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ (выберите [CustomerKey],[Код клиента],[Должность],[Имя],[Дата рождения], [Семейное положение],[Пол],[Годовой доход],[Всего детей], [Дети дома],[Образование],[Род занятий],[Владение домом], [Автомобили в собственности],[Континент],[Город],[Штат],[Страна], [Адресная строка 1],[Адресная строка 2],[Телефон], [Дата первой покупки],[Тип клиента],[Название компании] из [Аналитика].[Клиент] как [$Таблица]) AS [t2] на ( [t0]. [КлючКлиента] = [t2].[КлючКлиента] ) ) ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ ( ВЫБИРАТЬ [t3].[Дата] AS [Дата], EOMONTH([t3].[Дата], 0) AS [Конец месяца] ОТ ( (выберите [Date] как [Date], [DateKey] как [DateKey], [Номер календарного года] как [Год], [Номер квартала календарного года] как [Номер квартала года], [Квартал календарного года] как [Квартал года], [Номер месяца календарного года] как [Номер месяца года], [Календарный год, месяц] как [Год, месяц], [Номер месяца] как [Номер месяца], [Месяц] как [Месяц], [Номер дня недели] как [Номер дня недели], [День недели] как [День недели], [Рабочий день] как [Рабочий день], [Праздник] как [Праздник], [Название праздника] как [Название праздника] из [Аналитика]. [Дата] как [$Таблица]) ) АС [t3] ) AS [t3] на ( [t0].[Дата заказа] = [t3].[Дата] ) ) ) АС [t0] ГДЕ ( [c52] = N'Соединенные Штаты' ) СГРУППИРОВАТЬ ПО [c74]
Запрос извлекает столбцы, необходимые для разрешения запроса DAX, выполняя агрегирование выражения на уровне строки непосредственно в SQL; действительно, SQL предлагает такую агрегацию как часть своих функций. Когда запросу DAX требуются данные из SQL Server, обработчик формул обрабатывает необработанные данные, полученные с помощью обработчика хранилища DirectQuery.
Мы можем повторить тот же анализ с идентичным отчетом, созданным путем импорта содержимого таблиц в память вместо использования DirectQuery. В этом случае план запроса, описывающий поведение механизма формул, немного отличается, поскольку возможности механизма хранения различны. Запрос DAX, который мы видели в начале, выполняется на модели, состоящей из импортированных таблиц, и дает следующий план запроса.
На этот раз запросы к механизму хранения идентифицируются узлами с именем «Кэш». Кроме того, в данном случае пять обращений к запросу механизма хранения соответствуют одному запросу механизма хранения, который выполняется более чем в 300 раз быстрее, чем с DirectQuery.
Подсистема хранения в памяти , используемая таблицами, импортированными в модель, называется VertiPaq . Всякий раз, когда вы создаете таблицу в Power BI с использованием режима импорта или двойного хранилища, содержимое таблицы считывается только один раз из источника данных при обновлении модели, а данные сохраняются в памяти в сжатом виде. Запросы к механизму хранения VertiPaq описываются в удобочитаемом формате, называемом xmSQL. Это единственный запрос xmSQL, выполненный по предыдущему плану запроса:
С $Expr0 := ( PFCAST ( 'Продажи аналитики'[Количество] AS INT ) * PFCAST («Продажи аналитики» [Стоимость за единицу] AS INT)), $Expr1 := ( PFCAST ( 'Продажи аналитики'[Количество] AS INT ) * PFCAST («Продажи аналитики» [чистая цена] AS INT)) ВЫБИРАТЬ «Дата аналитики» [столбец], СУММ(@$выражение0), СУММ(@$выражение1) ОТ «Аналитика продаж» LEFT OUTER JOIN 'Дата аналитики' ON 'Продажи аналитики'[Дата заказа]='Дата аналитики'[Дата] LEFT OUTER JOIN 'Клиент Analytics' ON 'Продажи аналитики'[CustomerKey]='Клиент аналитики'[CustomerKey] ГДЕ «Клиент Google Analytics» [Страна] = «США»;
В этом случае планы запросов, созданные для DirectQuery и VertiPaq, очень похожи. Различные запросы механизма хранения в SQL и xmSQL возвращают один и тот же результат, таблицу с тремя столбцами:
- столбец даты, представляющий месяц;
- сумма числового столбца Количество * Стоимость единицы за месяц;
- числовая сумма столбца Количество * Цена нетто за месяц.
Два возвращенных числовых столбца соответствуют результату, ожидаемому для Общая стоимость и Сумма продаж меры соответственно. Однако мерами, требуемыми запросом DAX, являются Sales Amount и Margin % . Поскольку результат, предоставленный подсистемой хранения, не соответствует результату запроса DAX, мы можем сделать вывод, что недостающая часть вычислений выполняется подсистемой формул. Действительно, зная результат Sales Amount и Total Cost , механизм формул вычисляет результат Маржа% Мера:
Маржа: = [Сумма продаж] - [Общая стоимость] Маржа % := РАЗДЕЛИТЬ ([Маржа], [Объем продаж])
После этого практического примера мы можем более подробно описать роль формул и механизмов хранения.
Различия между механизмом формул и механизмом хранения
В выполнении запроса DAX участвуют два механизма:
- Механизм формул обрабатывает запрос, создавая и выполняя план запроса.
- Механизм хранения извлекает данные из табличной модели для ответа на запросы, сделанные механизмом формул. Механизм хранения имеет две реализации: .
- VertiPaq содержит копию данных в памяти, которая периодически обновляется из источника данных.
- DirectQuery перенаправляет запросы непосредственно в исходный источник данных для каждого запроса.
Механизм формул — это модуль выполнения более высокого уровня механизма запросов. Он может обрабатывать все операции, запрошенные DAX.
Когда механизм формул должен получить данные из базовых таблиц, он перенаправляет запросы механизму хранения. Запросы, отправляемые механизму хранения, могут варьироваться от простого извлечения необработанных данных таблицы до более сложных запросов, объединяющих данные и объединяющих таблицы. Механизм хранения взаимодействует только с механизмом формул. Механизм хранения возвращает данные в несжатом формате, независимо от исходного формата данных.
Табличная модель обычно хранит данные с помощью механизма хранения VertiPaq или DirectQuery. Однако составные модели могут использовать обе технологии в рамках одной модели данных и для одних и тех же таблиц. Выбор механизма для использования делается в плане запроса для каждого запроса механизма хранения в каждом запросе DAX.
Задачи обработчика формул
Обработчик формул преобразует запрос DAX в план запроса со списком физических шагов для выполнения. Каждый шаг в плане запроса соответствует определенной операции, выполняемой обработчиком формул. Типичные операторы механизма формул включают соединения между таблицами, фильтрацию со сложными условиями, агрегирование и поиск. Некоторым из этих операторов требуются данные из столбцов в модели данных. В этих случаях механизм формул отправляет запрос механизму хранения, который отвечает, возвращая кэш данных. Кэш данных — это область временного хранения, созданная подсистемой хранения и считываемая подсистемой формул, которая содержит результат запроса подсистемы хранения.
Кэш данных не сжат; кэши данных — это простые таблицы в памяти, хранящиеся в несжатом формате, независимо от механизма хранения, из которого они получены. Поскольку обработчик формул является однопоточным, любая операция, выполняемая в обработчике формул, использует только один поток и одно ядро, независимо от того, сколько ядер доступно. Механизм формул отправляет запросы в механизм хранения последовательно, по одному запросу за раз. Определенная степень параллелизма доступна только в каждом запросе к подсистеме хранения, которая имеет другую архитектуру и может использовать преимущества нескольких доступных ядер.
Задачи механизма хранения
Целью механизма хранения является сканирование базы данных и создание кэшей данных, необходимых для механизма формул. Механизм хранения не зависит от DAX. Например, DirectQuery на SQL Server использует SQL в качестве механизма хранения. Внутренний механизм хранения Tabular (известный как VertiPaq) также не зависит от DAX, даже несмотря на то, что механизм хранения VertiPaq допускает некоторую связь с механизмом формул DAX через запросы CallbackDataId.
Механизм хранения выполняет исключительно запросы, разрешенные его собственным набором операторов. В зависимости от используемого механизма хранения набор операторов может варьироваться от очень ограниченного (VertiPaq) до очень богатого (SQL).
Каждая таблица в модели может иметь различную технологию механизма хранения:
- Импорт : Также называется in-memory или VertiPaq. Содержимое таблицы сохраняется механизмом VertiPaq, который копирует и реструктурирует данные из источника данных во время обновления данных.
- DirectQuery : содержимое таблицы считывается из источника данных во время запроса и не сохраняется в памяти во время обновления данных.
- Двойной : Таблица может быть запрошена как в VertiPaq, так и в DirectQuery.