Таблица кросс - вычисление разницы между двумя вложенными столбцами - PullRequest
1 голос
/ 09 марта 2020

У меня есть кросс-таблица следующим образом -

СтолбецА СтолбецВ Столбец C

+================+===========+===========+===========+===========+===========+===========+
| Store Location | Category1 | Category2 | Category1 | Category2 | Category1 | Category2 |
+================+===========+===========+===========+===========+===========+===========+
| Boston         |       200 |       100 |       250 |       230 |       230 |       210 |
+----------------+-----------+-----------+-----------+-----------+-----------+-----------+
| New York       |       180 |       150 |       310 |       270 |       240 |       220 |
+----------------+-----------+-----------+-----------+-----------+-----------+-----------+
| Stockholm      |       190 |       140 |       180 |       160 |       220 |       210 |
+----------------+-----------+-----------+-----------+-----------+-----------+-----------+
| London         |       170 |       140 |       340 |       310 |       420 |       380 |
+----------------+-----------+-----------+-----------+-----------+-----------+-----------+

Я хочу рассчитать разницу между двумя категориями для каждого столбца следующим образом -

ColumnA ColumnA Diff ColumnB ColumnB Diff Column C Column C Diff

+================+===========+===========+=====+===========+===========+====+===========+===========+====+
| Store Location | Category1 | Category2 |     | Category1 | Category2 |    | Category1 | Category2 |    |
+================+===========+===========+=====+===========+===========+====+===========+===========+====+
| Boston         |       200 |       100 | 100 |       250 |       230 | 20 |       230 |       210 | 20 |
+----------------+-----------+-----------+-----+-----------+-----------+----+-----------+-----------+----+
| New York       |       180 |       150 |  30 |       310 |       270 | 40 |       240 |       220 | 20 |
+----------------+-----------+-----------+-----+-----------+-----------+----+-----------+-----------+----+
| Stockholm      |       190 |       140 |  50 |       180 |       160 | 20 |       220 |       210 | 10 |
+----------------+-----------+-----------+-----+-----------+-----------+----+-----------+-----------+----+
| London         |       170 |       140 |  30 |       340 |       310 | 30 |       420 |       380 | 40 |
+----------------+-----------+-----------+-----+-----------+-----------+----+-----------+-----------+----+

Мое выражение для горизонтальных осей выглядит следующим образом -

[Axis.Default.Names] NEST [ CategoryName]

Какое пользовательское выражение нужно использовать, чтобы получить его? Ценю любые предложения.

Большое спасибо.

1 Ответ

0 голосов
/ 11 марта 2020

Я не нашел отличный способ сделать это в кросс-таблице. Есть один способ, но он немного запутан, в зависимости от того, сколько разных значений в столбце категории, и вам нужно знать их заранее. По сути, на оси значений ячеек вы должны написать собственное выражение для каждого столбца, который вы хотите видеть визуализированным на горизонтальной оси. Примерно так для каждой оси:

Вертикальная ось: [Store Names]

Горизонтальная ось: (Column Names) <- написано именно так или выбрано из выпадающего списка на оси </p>

Ось значений:

sum(if([category]="A", [sales])) as [Sum of A],
sum(if([category]="B", [sales])) as [Sum of B],
sum(if([category]="A", [sales])) - sum(if([category]="B", [sales]) as [delta A-B]

Пока у вас есть "(имена столбцов)" на одной из осей, вы можете написать независимые выражения, разделенные запятыми на оси значений, чтобы вернуться в смесь вычислений, которые не применяются равномерно к тому, что находится на оси. Это немного утомительно и может вызвать проблемы, когда в ваших данных неожиданно появляются новые значения, но это работает. К сожалению, это не очень хорошо с маркировкой. Удачи.

...