wildmatch — функция скриптa и диаграммы
Функция wildmatch сравнивает первый параметр со всеми последующими и возвращает число совпадающих выражений. Допускается использование знаков подстановки ( * и ?) в строках сравнения. * соответствует любой последовательности символов. ? соответствует любому символу. При сравнении регистр не учитывается.
Syntax:
wildmatch( str, expr1 [ , expr2,...exprN ])
Первое выражение в таблице ниже возвращает 0 для значения «Stockholm», так как «Stockholm» не входит в список выражений в функции wildmatch. Выражение также возвращает 0 для значения «Boston», так как для ? совпадением является одиночный символ.
Cities | wildmatch( Cities,'Tor*','?ton','Beijing','*urich') | wildmatch( Cities,'Tor*','???ton','Beijing','Stockholm','*urich') |
---|---|---|
Beijing |
3 |
3 |
Boston | 0 | 2 |
Stockholm | 0 | 4 |
Toronto | 1 | 1 |
zurich | 4 | 5 |
Функцию wildmatch можно применять для пользовательской сортировки выражений.
По умолчанию сортировка столбцов выполняется в числовом или алфавитном порядке в зависимости от характера данных.
Cities |
---|
Beijing |
Boston |
Stockholm |
Toronto |
zurich |
Чтобы изменить порядок сортировки, выполните следующие действия:
- Откройте раздел Сортировка диаграммы на панели Свойства.
- Выключите автоматическую сортировку столбца, для которого необходимо применить пользовательскую сортировку.
- Отмените выбор параметров Сортировка по численным значениям и Сортировка по алфавиту.
-
Выберите Сортировка по выражению и введите выражение следующего вида:
=wildmatch( Cities, 'Tor*','???ton','Beijing','Stockholm','*urich')
Порядок сортировки столбца Cities будет изменен.
Cities |
---|
Toronto |
Boston |
Beijing |
Stockholm |
zurich |
Также можно просмотреть возвращенное числовое значение.
Cities | Cities & ' - ' & wildmatch ( Cities, 'Tor*','???ton','Beijing','Stockholm','*urich') |
---|---|
Toronto | Toronto - 1 |
Boston | Boston - 2 |
Beijing | Beijing - 3 |
Stockholm | Stockholm - 4 |
zurich | zurich - 5 |
Скрипт загрузки
Функцию wildmatch можно использовать для загрузки подмножества данных. К примеру, можно вернуть числовое значение выражения в функции. Затем можно ограничить загруженные данные с использованием числового значения. При отсутствии совпадений функция Wildmatch возвращает 0. Таким образом, в данном примере все выражения, для которых не были найдены совпадения, вернут 0 и будут исключены из загрузки данных при помощи оператора WHERE.
В Редакторе загрузки данных создайте новый раздел с именем Load и добавьте следующее:
Transactions:
Load * Inline [
transaction_id, transaction_date, transaction_amount, transaction_quantity, customer_id, size, color_code
3750, 20180830, 23.56, 2, 2038593, L, Red
3751, 20180907, 556.31, 6, 203521, m, orange
3752, 20180916, 5.75, 1, 5646471, S, blue
3753, 20180922, 125.00, 7, 3036491, l, Black
3754, 20180922, 484.21, 13, 049681, xs, Red
3756, 20180922, 59.18, 2, 2038593, M, Blue
3757, 20180923, 177.42, 21, 203521, XL, Black
];
/*
Create new table called Transaction_Buckets
Create new fields called Customer, and Color code - Black, Blue, blue, red
Load Transactions table.
Wildmatch returns 1 for 'Black', 2 for 'Blue', 3 for 'blue', 4 for 'Red'.
Only values that returned numeric value greater than 0
are loaded by WHERE statement into Transactions_Buckets table.
*/
Transaction_Buckets:
Load
customer_id,
customer_id as [Customer],
color_code as [Color Code Black, Blue, blue, Red]
Resident Transactions
Where wildmatch(color_code,'Bl*','R??') > 0;
Результаты
Color Code Black, Blue, blue, Red | Customer |
---|---|
Black | 203521 |
Black | 3036491 |
Blue | 2038593 |
blue | 5646471 |
Red | 049681 |
Red | 2038593 |