MDX (Multidimensional Expressions) в контексте JavaScript используется для построения и обработки многомерных аналитических запросов, особенно в средах OLAP (Online Analytical Processing). Работа с датами и числами является одной из ключевых задач при анализе данных, поскольку корректное представление этих значений напрямую влияет на точность интерпретации результатов.
MDX предоставляет возможность настраивать отображение числовых данных через форматные строки и специальные функции.
1. Форматные строки
Форматная строка позволяет задать шаблон отображения числа:
WITH MEMBER [Measures].[Formatted Sales] AS
[Measures].[Sales],
FORMAT_STRING = "#,##0.00"
SEL ECT
[Measures].[Formatted Sales] ON COLUMNS,
[Date].[Calendar].[Month].MEMBERS ON ROWS
FR OM [Sales]
#,##0.00 — стандартный шаблон: запятая отделяет тысячи,
.00 фиксирует два знака после запятой.$#,##0.00) или
процент (0.00%).2. Локализованное форматирование
MDX позволяет учитывать региональные настройки для корректного разделителя тысяч и десятичных:
WITH MEMBER [Measures].[Localized Sales] AS
[Measures].[Sales],
FORMAT_STRING = "Currency"
SEL ECT
[Measures].[Localized Sales] ON COLUMNS
FR OM [Sales]
"Currency" автоматически применяет валютный символ и
формат в соответствии с локалью сервера OLAP.3. Специальные форматы
MDX поддерживает научную нотацию, отрицательные числа в скобках и другие расширенные шаблоны:
0.00E+00 — научная нотация.(#,##0.00);(#,##0.00) — отрицательные числа в
скобках.Работа с датами в MDX осуществляется через функции, позволяющие преобразовать дату в строку, выделить компоненты или использовать специализированные форматы.
1. Функции извлечения компонентов даты
[Date].[Calendar].CurrentMember.MEMBER_VALUE
Year(), Month(), Day() в
MDX-средах, поддерживающих их, либо соответствующие свойства
иерархий.2. Преобразование даты в строку
MDX позволяет использовать форматирование для вывода дат в удобном виде:
WITH MEMBER [Measures].[Formatted Date] AS
VBA!Format([Date].[Calendar].CurrentMember.MemberValue, "dd MMM yyyy")
SEL ECT
[Measures].[Formatted Date] ON COLUMNS,
[Date].[Calendar].[Month].MEMBERS ON ROWS
FR OM [Sales]
VBA!Format — встроенная функция для работы с
датами."dd MMM yyyy" выводит день, сокращённое название месяца
и год, например: 23 Mar 2026.3. Форматы ISO и пользовательские
Можно задавать строгие ISO-форматы:
"yyyy-MM-dd" — стандарт ISO 8601."MMMM yyyy" — полный месяц и год
(March 2026).4. Учет локализации дат
При работе с многорегиональными отчетами важно учитывать локаль, чтобы названия месяцев и формат даты соответствовали языку пользователя:
VBA!Format([Date].[Calendar].CurrentMember.MemberValue, "dddd, dd MMMM yyyy")
"dddd" — день недели полностью."MMMM" — полный месяц."yyyy" — год.MDX позволяет одновременно форматировать числовые значения и даты в едином запросе, что особенно полезно для финансовых отчетов или KPI-панелей.
WITH
MEMBER [Measures].[Sales Info] AS
[Measures].[Sales] & " USD as of " &
VBA!Format([Date].[Calendar].CurrentMember.MemberValue, "dd MMM yyyy"),
FORMAT_STRING = ""
SEL ECT
[Measures].[Sales Info] ON COLUMNS,
[Date].[Calendar].[Month].MEMBERS ON ROWS
FR OM [Sales]
FORMAT_STRING оставлен пустым, так как форматирование
чисел осуществляется вручную через конкатенацию.VBA!Format или
аналогичных функций в конкретной реализации MDX. Некоторые серверы OLAP
могут иметь собственные расширения.Форматирование дат и чисел в MDX — это мощный инструмент для подготовки готовых к употреблению аналитических данных, позволяющий создавать отчеты, которые легко читаются и интерпретируются без дополнительной обработки на стороне клиента.