Если вам приходилось иметь дело с кубом, в котором число мер и измерений over9000 и не хватает трех экранов, чтобы это уместить, то, наверняка, приходилось слышать и стоны пользователей, на тему неудобства работы с этим чудовищем. Ведь пользователи чаще всего работают с одними и теми же измерениями, без которых не обходится почти ни одна выборка. Однако из-за особенности экселя, любящего сортировать по алфавиту все элементы, находящиеся в области Поля сводной таблицы, эти наиболее востребованные объекты часто разбросаны по всему списку, вперемешку с остальными (редко используемыми) элементами.
![](https://habrastorage.org/r/w1560/webt/p0/hl/gi/p0hlgidry-_ecygd882gh9g4fws.png)
Приходится десять раз скролить список вверх и вниз, пока пытаешься установить фильтр на трёх (Дата, Товар, Клиент) полях. Работать с этим каждый день никаких нервов не хватит.
Решение банальное и не новое — в начале имен измерений добавлять символ или цифру, влияя тем самым на порядок.
Но пользователи — это одна сторона медали, им такой подход удобен. А как же разработчики?
Ведь оно как должно быть: начинаешь писать в формуле имя измерения, а студия подсказки выдает, верно? Вот только в случае с допсимволами все это выглядит в коде, скажем так… не очень. В VS2017 уже сделали поиск по вхождению, а в предыдущих такого не было и приходилось писать Календарь не с буквы К, а с цифры 5, потому что 5 Календарь. Запросы в других программах приходится писать без подсказок и упомнить какая цифра у какого измерения или поля — тот еще квест.
![](https://habrastorage.org/r/w1560/webt/on/fd/cf/onfdcfp8y7izchggytwm6vuh1uq.png)
Когда нужно изменить порядок, то, по сути, нужно переименовать таблицу или поле, а если это поле используется в формуле, то студия исправит и формулу. Когда формул десятки (а их всегда десятки), то в Git будет подсвечиваться половина модели, потому что студия реально все формулы исправила, в то время как я хотел только поменять поля местами в порядке сортировки. Запросы же в других источниках (за пределами студии) поломаются вообще. Крайне неудобно!
Но выход есть.
В табличной модели, впрочем, как и в многомерной, есть возможность добавлять переводы (translations). Ими и воспользуемся.
Перевод осуществляется путем выгрузки из .bim-модели файла .json с текстом, его редактированием и последующей загрузкой обратно в модель. Но Visual Studio не позволяет выгрузить файл для русского языка, если модель изначально русская (в общем, для базового языка модели перевод выгрузить нельзя). Но можно выгрузить любой другой!
![](https://habrastorage.org/r/w1560/webt/h_/sl/nl/h_slnlowwzgfgoq8xew48pj3ci8.png)
Выгруженный файлик нужно отредактировать, с помощью любого текстового редактора, поддерживающего юникод, заменив в нем en-US на ru-RU.
Далее с помощью специальной программы SSAS Tabular Translator отредактировать названия (но можно и в блокноте, если хотите, — дело хозяйское).
![](https://habrastorage.org/r/w1560/webt/mm/e6/x7/mme6x7tusyygjjy4kv9jlxkoegg.png)
Импортируем наш файл обратно в проект
![](https://habrastorage.org/r/w1560/webt/9y/3t/bt/9y3tbtg_ldrpdylvvgx1zhbcp_y.png)
Вуяля
![](https://habrastorage.org/r/w1560/webt/wj/at/-8/wjat-8lfxyyp699momqjksxh-mg.png)
У перевода есть еще один существенный плюс:
Из файла .json в модель загружаются только измененные (переведенные) строки, а не целиком весь файл, и хранится только перевод. Поэтому даже если появится новое измерение или мера, а вы забудете ее «перевести» — ничего не поломается, она просто будет отображаться в экселе как есть.
Можно, конечно, не делать все эти манипуляции с подменой en-US на ru-RU, но тогда пользователям придется перенастроить подключения к источнику данных, добавив опцию локали английского языка.
Есть особенность
После того, как мы добавим в модель перевод для базового языка, его нельзя будет удалить без предварительной подготовки.
![](https://habrastorage.org/r/w1560/webt/f-/4m/nl/f-4mnlu8fz4cznifqcx-w-ricne.png)
Скорее всего, это вряд ли понадобится, но, как известно, если нельзя, но сильно хочется, то можно.
Открываем Обозреватель решений, щелкаем правой кнопкой по .bim-файлу модели и выбираем пункт Перейти к коду
![](https://habrastorage.org/r/w1560/webt/ia/4r/nz/ia4rnz5fkkcq9gmxoys2gdubxi0.png)
В коде ищем строчку ru-RU, но не ту, что в начале файла, а ту, что ближе к концу, и исправляем на en-US
![](https://habrastorage.org/r/w1560/webt/c1/ah/mu/c1ahmui82m3ndy141brimn41h3g.png)
![](https://habrastorage.org/r/w1560/webt/la/ty/pu/latypuemgbk4_ommjmuw-grve4y.png)
Исправляем, сохраняем, переоткрываем модель в режиме конструктора и проверяем
![](https://habrastorage.org/r/w1560/webt/c_/1o/qv/c_1oqvq3ucsblbfxwyyvylh0psm.png)
Как вы понимаете, это недокументированная функция и решение об использовании принимаете на свой страх и риск.
![](https://habrastorage.org/webt/p0/hl/gi/p0hlgidry-_ecygd882gh9g4fws.png)
Приходится десять раз скролить список вверх и вниз, пока пытаешься установить фильтр на трёх (Дата, Товар, Клиент) полях. Работать с этим каждый день никаких нервов не хватит.
Решение банальное и не новое — в начале имен измерений добавлять символ или цифру, влияя тем самым на порядок.
Но пользователи — это одна сторона медали, им такой подход удобен. А как же разработчики?
Ведь оно как должно быть: начинаешь писать в формуле имя измерения, а студия подсказки выдает, верно? Вот только в случае с допсимволами все это выглядит в коде, скажем так… не очень. В VS2017 уже сделали поиск по вхождению, а в предыдущих такого не было и приходилось писать Календарь не с буквы К, а с цифры 5, потому что 5 Календарь. Запросы в других программах приходится писать без подсказок и упомнить какая цифра у какого измерения или поля — тот еще квест.
![](https://habrastorage.org/webt/on/fd/cf/onfdcfp8y7izchggytwm6vuh1uq.png)
Когда нужно изменить порядок, то, по сути, нужно переименовать таблицу или поле, а если это поле используется в формуле, то студия исправит и формулу. Когда формул десятки (а их всегда десятки), то в Git будет подсвечиваться половина модели, потому что студия реально все формулы исправила, в то время как я хотел только поменять поля местами в порядке сортировки. Запросы же в других источниках (за пределами студии) поломаются вообще. Крайне неудобно!
Но выход есть.
В табличной модели, впрочем, как и в многомерной, есть возможность добавлять переводы (translations). Ими и воспользуемся.
Перевод осуществляется путем выгрузки из .bim-модели файла .json с текстом, его редактированием и последующей загрузкой обратно в модель. Но Visual Studio не позволяет выгрузить файл для русского языка, если модель изначально русская (в общем, для базового языка модели перевод выгрузить нельзя). Но можно выгрузить любой другой!
![](https://habrastorage.org/webt/h_/sl/nl/h_slnlowwzgfgoq8xew48pj3ci8.png)
Выгруженный файлик нужно отредактировать, с помощью любого текстового редактора, поддерживающего юникод, заменив в нем en-US на ru-RU.
Далее с помощью специальной программы SSAS Tabular Translator отредактировать названия (но можно и в блокноте, если хотите, — дело хозяйское).
![](https://habrastorage.org/webt/mm/e6/x7/mme6x7tusyygjjy4kv9jlxkoegg.png)
Импортируем наш файл обратно в проект
![](https://habrastorage.org/webt/9y/3t/bt/9y3tbtg_ldrpdylvvgx1zhbcp_y.png)
Вуяля
![](https://habrastorage.org/webt/wj/at/-8/wjat-8lfxyyp699momqjksxh-mg.png)
У перевода есть еще один существенный плюс:
Из файла .json в модель загружаются только измененные (переведенные) строки, а не целиком весь файл, и хранится только перевод. Поэтому даже если появится новое измерение или мера, а вы забудете ее «перевести» — ничего не поломается, она просто будет отображаться в экселе как есть.
Можно, конечно, не делать все эти манипуляции с подменой en-US на ru-RU, но тогда пользователям придется перенастроить подключения к источнику данных, добавив опцию локали английского языка.
Есть особенность
После того, как мы добавим в модель перевод для базового языка, его нельзя будет удалить без предварительной подготовки.
![](https://habrastorage.org/webt/f-/4m/nl/f-4mnlu8fz4cznifqcx-w-ricne.png)
Скорее всего, это вряд ли понадобится, но, как известно, если нельзя, но сильно хочется, то можно.
Открываем Обозреватель решений, щелкаем правой кнопкой по .bim-файлу модели и выбираем пункт Перейти к коду
![](https://habrastorage.org/webt/ia/4r/nz/ia4rnz5fkkcq9gmxoys2gdubxi0.png)
В коде ищем строчку ru-RU, но не ту, что в начале файла, а ту, что ближе к концу, и исправляем на en-US
![](https://habrastorage.org/webt/c1/ah/mu/c1ahmui82m3ndy141brimn41h3g.png)
![](https://habrastorage.org/webt/la/ty/pu/latypuemgbk4_ommjmuw-grve4y.png)
Исправляем, сохраняем, переоткрываем модель в режиме конструктора и проверяем
![](https://habrastorage.org/webt/c_/1o/qv/c_1oqvq3ucsblbfxwyyvylh0psm.png)
Как вы понимаете, это недокументированная функция и решение об использовании принимаете на свой страх и риск.