Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Коллеги, тут задачку поставили, и что то сообразить не могу, возможно ли так сделать.
В таблице есть поля "Год" и "Месяц" и в них по мимо стандартных значений года и месяца есть значение "Текущий".
Так же есть 3 выражения "Количество", "СкладFREE" и "СкладРезерв".
собственно задача - поле "количество" должно показываться всегда, а поля СкладFREE И СкладРезерв, только под годом и месяцем со значением "Текущий".
и вот я никак не соображу, как это можно реализовать.
Добрый день.
Предлогаю вот такой способ, может подойдет.
Можно добавить вычисляемое измерение:
=if(Month='Текущий',Test,'Количество')
"Test" создать самому:
Test:
load*Inline
[Test
Количество
СкладFREE
СкладРезерв
];
И в выражениях будет одно выражение
if(Test = 'Количество', sum(bla)
,if(Test = 'СкладFREE',sum(bla bla)
,if(Test = 'СкладРезерв',sum(bla bla bla),sum(bla))))
Добрый день.
Попробуйте прописать выражение в Conditional:
Нужно написать, что-то типа: в Expresion "СкладFREE" нужно написать: Год = 'Текущий' or Месяц = 'Текущий'
Добрый день,
Полагаю, что решить задачу "в лоб" с использованием одной диаграммы вы не сможете.
Причиной тому является то, что большинство параметров объектов визуализации вычисляются вне контекста измерений (измерений, заданных на закладке "Измерения"). Во всяком случае вне контекста измерений вычисляются условия отображения столбцов и их заголовки.
Поэтому обходными путями в вашем случае могут являться: 1) использование нескольких объектов визуализации; 2) создание собственных объектов визуализации (разработка на JavaScript) с требуемыми вам свойствами.
Более детальная информация приведена ниже. Извиняюсь за длинное описание, по полагаю, что оно позволит более детально понять возможности/ограничения стандартных объектов визуализации. Также ниже я описал некоторые вопросы оптимизации, которые может быть полезно знать при работе с большими объемами данных, т.к. очевидно, что интерактивность и удобство объектов визуализации зависит не только от того, что именно объект отображает, но и то, какой объем данных он "переваривает" каждый раз перед тем, как показать конечный результат пользователю, т.е. то, насколько быстро объект будет пересчитываться при отборе пользователем каких-либо данных.
Детали:
При решении подобных задач нужно задуматься о последовательности вычислений, выполняющихся в любом выражении и объекте визуализации в целом. Исходя из этого понимания вы сразу сможете оценить возможность решения вашей задачи.
Дело в том, что у каждого объекта визуализации есть правила вычислений выражений, задаваемых в свойствах этого объекта. И для правильной настройки параметров объекта визуализации нужно понимать не только правила вычисления самих выражений, но и контекст их вычислений.
Контекст вычисления любого выражения (вне зависимости от места использования выражения) может быть задан явно или неявно.
Явно задать контекст выражения можно с использованием функции Aggr() и/или использованием префикса Total. Например:
Неявно контекст вычисления задается типом объекта визуализации.
Например, объект визуализации "Текстовый объект" сам не задает контекст вычислений.
В отличие от текстового объекта, любая диаграмма имеет атрибут "Измерения" (закладка "Измерения"). При указании конкретного измерения(й), для всех выражений указанных на закладке "Выражения" (выражение указываемое в свойстве "Описание") автоматически устанавливается контекст вычисления этого выражения. Т.е. выражения указываемые в свойстве "Описание") всегда рассчитываются в контексте измерений, заданных на закладке "Измерения".
Использование префикса Total в выражениях позволяет при вычислениях полностью или частично отключить контекст, заданный измерениями на закладке "Измерения". Но в целом, можно сказать, что выражения объекта"Диаграмма" указываемые в свойстве "Описание" могут рассматриваться в контексте каждого из значений данных, описываемых измерениями этой диаграммы.
Все остальные свойства объекта, например, условия вычисления самих выражений диаграммы (свойство "Условный" на закладке "Выражения"), условия отображения объекта (свойство "Показать", "Показать по условию" на закладке "Макет") и т.п., вычисляются вне контекста измерений диаграммы (заданных на закладке "Измерения").
Именно поэтому вы не сможете определить выражениями правила отображения/вычисления столбцов таблицы в зависимости от значения измерений, задаваемых на закладке "Измерения". Эти выражения вычисляются целиком для всего объекта визуализации, т.е. вне контекста конкретных значений измерений.
Оптимизация вычислений на больших объемах данных.
С точки зрения оптимизации производительности работы объектов визуализации неплохо понимать, как выполняются вычисления в самих выражениях.
Последовательность обработки любого выражения:
Исходя из того, что выражения могут вычисляться в контексте заданном явно или неявно, наличие контекста может существенно влиять на объемы и скорость вычислений.
Использование функций, пример которых приведен выше в п.3. в выражениях, выполняющихся вне контекста измерений диаграмм (заданных на закладке "Измерения") фактически не влияет на скорость вычисления объекта.
Применение же подобных функций в выражениях выполняющихся в контексте измерений диаграмм будет существенно снижать скорость вычислений, т.к. описанное условие должно будет вычисляться для каждого индивидуального значения измерений и только после вычисления условия будут рассчитываться как наборы данных, так и сама функция агрегации. В итоге производительность скорость расчета диаграммы будет падать пропорционально количеству индивидуальных значений измерений. Именно поэтому стоит избегать использования подобных функций на больших объемах данных.
Добрый день.
Предлогаю вот такой способ, может подойдет.
Можно добавить вычисляемое измерение:
=if(Month='Текущий',Test,'Количество')
"Test" создать самому:
Test:
load*Inline
[Test
Количество
СкладFREE
СкладРезерв
];
И в выражениях будет одно выражение
if(Test = 'Количество', sum(bla)
,if(Test = 'СкладFREE',sum(bla bla)
,if(Test = 'СкладРезерв',sum(bla bla bla),sum(bla))))
Нет, это тут не работает, уже пробовал
Да, помогло, спасибо, то, что надо!!
Спасибо, за столь развернутый ответ, было интересно и полезно прочесть