Недавно я опубликовал проект, который позволяет PHP получать и взаимодействовать с реальной оболочкой Bash. Получите его здесь: https://github.com/merlinthemagic/MTS У оболочки есть pty (псевдотерминальное устройство, такое же, как и в ssh-сессии), и вы можете получить оболочку при необходимости, root. Не уверен, что вам нужен root для выполнения вашего скрипта, но при условии, что вы упомянули sudo, это вероятно.
После загрузки вы просто используете следующий код:
$shell = \MTS\Factories::getDevices()->getLocalHost()->getShell('bash', true);
$return1 = $shell->exeCmd('/path/to/osascript myscript.scpt');
Одна вещь, которую я хотел бы добавить, чтобы избежать жесткого кодирования названия страны, состояла в том, чтобы сохранить список в отдельном файле CSV или Excel и присоединить его к источнику данных. Таким образом, вы можете добавлять или удалять страны без публикации представлений.
Почему бы просто не фильтровать АС? Лично мне не нравятся такие жесткие значения, потому что в будущем вам понадобится NZ-версия, а это просто замедляет работу Tableau.
НО, если вам все еще нужно, попробуйте это:
{ИСПРАВЛЕНО [Страна]: макс. (ЕСЛИ attr ([Страна]) = 'AU' ТОГДА [Открытый тариф] КОНЕЦ)}
Нет проблем. Но я надеюсь, я отвечу на ваш вопрос, а затем предоставлю вам другое забавное решение.
Я бы использовал формулу ...
IF [Country] = 'AU' THEN [Open Rate] END
И расчет открытой ставки:
[Open] / [Sent]
Решение выглядит следующим образом ...
Альтернативным (более веселым) решением будет создание параметра на основе измерения вашей страны.
Или просто введите точные страны, чтобы они выглядели, прежде чем нажать кнопку ОК.
Затем вы можете создать более динамичный курс открытия по выбранной стране, чтобы пользователи могли выбирать.