TL; DR Отказ от ответственности: Вы можете сделать это, хотя, если вы часто меняете кросс-стол, это может стать гигантской проблемой.Удостоверьтесь, что вы перепроверили логику после любой модификации. Действуйте с осторожностью.
Основа пользовательского выражения, которое вам нужно, выглядит следующим образом:
Max(DenseRank(Count() OVER (Intersect([Group],[SNP])),"desc",[Group]))
Это дает общее количествостроки вместо среднего;Я был не уверен, должен ли «граф» быть столбцом или нет.Если вы действительно хотите превратить его в среднее значение, обязательно откорректируйте его соответствующим образом.
Если все, что у вас есть, это группа и SNP, вложенные слева, то все готово и готово к работе.
Первый выпуск , когда вы хотите отфильтровать его, он дает вам плотный ранг только тех, кто в отфильтрованном наборе.В некоторых случаях это хорошо, и то, что вы ищете;в других это не так.Если вы хотите, чтобы он сохранял свое значение быстро, независимо от фильтрации, вы можете использовать ту же логику, но бросить ее в столбец «Рассчитано», а не в пользовательское выражение.Затем в вашей агрегации CrossTable получите максимальное значение для вычисляемого столбца.
Расчетный столбец:
DenseRank(Count() OVER (Intersect([Group],[SNP])),"desc",[Group])
Второй выпуск: Вы хотите повернуть что-то другоечем группа и SNP.Может быть, например, по дате?Если вы добавите дату вверху, она будет показывать одни и те же цифры для каждого месяца - общие цифры.Это не особенно полезно.
В определенной степени пользовательские выражения Spotfire могут обрабатывать эту модификацию.Если вы переключаетесь между использованием одного столбца, вы можете использовать следующее:
Max(DenseRank(Count() OVER (Intersect([${Axis.Columns.ShortDisplayName}],[Group],[SNP])),"desc",[Group],[${Axis.Columns.ShortDisplayName}]))
Это автоматически подтянет столбец сверху и покажет вам рейтинг для каждой отдельной даты процесса.
Однако, если вы начнете вкладывать, использовать иерархии, переименовывать столбцы или иметь несколько агрегаций и выбрасывать (имена столбцов) сверху, вам придется много платить своему пользовательскому выражению.Вам нужно будет выполнить некоторую форму замены строк вокруг Axis.Column или использовать выражение вместо коротких имен, избавиться от гнезд и т. Д.
Любой уровень сложности потребует такого рода анализа,поэтому, если у ваших конечных пользователей есть доступ к изменению сводной таблицы ... честно, я бы, вероятно, не дал им этот столбец.
Третий выпуск: Я не знаю, если этоэто точно проблема, но вы сказали "Среднее число" - Среднее за день?В месяц?
При усреднении вам нужно будет решить, например, является ли месяц общим числом дней в месяце или количеством дней, в течение которых у конкретного плательщика были данные.Однако вы решите объединить это, убедитесь, что вы делаете это на правильном уровне.
Для протокола, мне понравилась предпосылка этого вопроса;я подумал, что это было бы полезно раньше, но никогда не пытался реализовать это, поскольку сортировка столбца или ограничение таблицы только для отображения первых 10 значений намного проще