Перейти к основному содержимому

SubField — скрипт и функция диаграммы

Subfield() используется для извлечения компонентов подстроки из поля родительской строки, где поля исходной записи состоят из двух или более частей, разделенных знаком разделителя.

Функцию Subfield() можно использовать, например для извлечения имени или фамилии из списка записей, состоящего из полных имен, отдельных частей имени пути или для извлечения данных из таблиц с данными, разделенными запятыми.

Если используется функция Subfield() в операторе LOAD и дополнительный параметр field_no не указан, для каждой подстроки будет создана одна полная запись. Если с помощью функции Subfield() загружено несколько полей, будет создано декартово произведение всех возможных комбинаций.

Синтаксис:  

SubField(text, delimiter[, field_no ])

Возвращаемые типы данных: строка

Аргументы:  

аргументы SubField
Аргумент Описание
text Оригинальная строка. Это может быть неизменяемый текст, переменная, расширение со знаком доллара или другое расширение.
delimiter Символ во входной строке text, разделяющий строку на части.
field_no

Дополнительный третий аргумент, являющийся целым числом, который указывает, какие подстроки родительской строки text необходимо вернуть.

  • Если значение field_no положительное, подстроки извлекаются слева направо.
  • Если значение field_no отрицательное, подстроки извлекаются справа налево.
Примечание к подсказке Функцию SubField() можно использовать вместо сложных комбинаций таких функций, как Len(), Right(), Left(), Mid() и другие строковые функции.

Примеры и результаты:  

Примеры 1-3
Пример Результат
SubField('abc;cde;efg', ';', 2) Возвращает 'cde'
SubField('', ';', 1) Возвращает NULL
SubField(';', ';', 1) Возвращает пустую строку.

Добавьте образец скрипта в свой документ и запустите. Затем добавьте на лист документа как минимум поля, указанные в столбце с результатами, чтобы увидеть результаты.

FullName:

LOAD * inline [

Name

'Dave Owen'

'Joe Tem'

];

 

SepNames:

Load Name,

SubField(Name, ' ',1) as FirstName,

SubField(Name, ' ',-1) as Surname

Resident FullName;

Drop Table FullName;

Пример 4
Name FirstName Surname
Dave Owen Dave Owen
Joe Tem Joe Tem

Предположим, имеется переменная, в которой хранится имя пути vMyPath,

Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;.

В диаграмме текста и изображения можно добавить меру следующего вида:
SubField(vMyPath, '\',-3): она вернет «Qlik», так как это третья подстрока с правой стороны от переменной vMyPath.

В данном примере показано создание нескольких строк из одного экземпляра Subfield().

Добавьте образец скрипта в свой документ и запустите. Затем добавьте на лист документа как минимум поля, указанные в столбце с результатами, чтобы увидеть результаты.

LOAD DISTINCT

Player,

SubField(Project,',') as Project;

 

Load * inline [

Player|Project

Neil|Music,OST

Jo|Music

Mike|Music,OST,Video

] (delimiter is '|');

Пример 5
Player Project
Neil Music
Neil OST
Jo Music
Mike Music
Mike OST
Mike Video

Этот пример показывает, как использование нескольких экземпляров функции Subfield(), каждый с опущенным параметром field_no, внутри одного оператора LOAD создает декартовы произведения всех комбинаций. Параметр DISTINCT используется для того, чтобы избежать создания дубликатов записей.

Добавьте образец скрипта в свой документ и запустите. Затем добавьте на лист документа как минимум поля, указанные в столбце с результатами, чтобы увидеть результаты.

LOAD DISTINCT

Instrument,

SubField(Player,',') as Player,

SubField(Project,',') as Project;

 

Load * inline [

Instrument|Player|Project

Guitar|Neil,Mike|Music,Video

Guitar|Neil|Music,OST

Synth|Neil,Jen|Music,Video,OST

Synth|Jo|Music

Guitar|Neil,Mike|Music,OST

] (delimiter is '|');

Пример 6
Instrument Player Project
Guitar Mike Music
Guitar Mike Video
Guitar Mike OST
Guitar Neil Music
Guitar Neil Video
Guitar Neil OST
Synth Jen Music
Synth Jen Video
Synth Jen OST
Synth Jo Music
Synth Neil Music
Synth Neil Video
Synth Neil OST

Помогла ли вам эта страница?

Если вы обнаружили какую-либо проблему на этой странице и с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом, чтобы мы смогли ее исправить!

Присоединяйтесь к программе модернизации аналитики

Remove banner from view

Модернизируйте ваши важные приложения QlikView без ущерба с помощью программы модернизации аналитики. Щелкните здесь для получения дополнительной информации или свяжитесь с нами: ampquestions@qlik.com