StreamSets предоставляет мощный язык выражений, с помощью которого можно получить исходное поле и исходный атрибут, чтобы лучше организовать данные и передать их целевому компоненту для обработки. Следовательно, умелое освоение языка выражений может улучшить возможности разработки ваших StreamSet.
Обучающая серия
- Стыковка данных — обучающий путь ETL StreamSet 1
- Стыковка данных — обучающий путь ETL StreamSet 2
- Путь обучения StreamSet от Data Docking-ETL III
- Путь обучения StreamSet IV от Data Docking-ETL
- Стыковка данных — обучающий путь ETL StreamSet 5
- Стыковка данных — учебный процесс ETL StreamSet VI
- Путь обучения StreamSet от Data Docking-ETL Семь микросервисов
- Путь обучения StreamSet для стыковки данных с ETL будет начинаться через восемь регулярных интервалов
- Стыковка данных — обучающий путь ETL StreamSet десять лицом к лицу с RabbitMq
- Путь обучения StreamSet от Data Docking-ETL Девять конвейеров Мониторинг состояния WebHook Dingding
- Data Docking-ETL StreamSet Learning Journey Одиннадцать Синхронизация Mysql со Snowflake
1. Введение в язык выражений
Язык выражений StreamSets основан на синтаксисе выражений JSP 2.0, поэтому, если вы знакомы с JSP, вы можете быстро просмотреть эту статью.
Выражения могут использоваться в компонентах обработки, таких как компоненты "Expression Evaluator" или "Stream Selector", и, конечно же, другие целевые компоненты также поддерживают выражения. При использовании выражений StreamSets поддерживает автозаполнение выражений, поэтому вы можете открыть окно выбора, чтобы выбрать выражение, которое вам нужно использовать, что похоже на огромную справочную библиотеку для новичков.
В выражениях можно использовать:
- постоянный
- имя столбца записи
- функция
- предопределенные символы
- вычисление знаков
- параметры времени выполнения
- свойства среды выполнения
- ресурсы времени выполнения
1.1 Константы
- константа типа данных
-
NULL
постоянный
вы можете использовать в выраженияхNULL
,Ты можешь проверитьNULL
значение или заданное значениеNULL
Например: мы добавляем следующие настройки в компонент оценки выражения:Установите следующее выражение в компоненте выбора потока
Общий процесс выглядит следующим образом:
Когда мы нажимаем кнопку с изображением глаза для предварительного просмотра данных, мы видим, что поле данных записи данных имеет нулевое значение.Когда мы нажимаем на компонент выбора потока, данные передаются в ветвь 1.
1.2 Предопределенные символы
Язык выражений включает следующие литералы:
- Булевы литералы — «истина» и «ложь».
- целое число
- число с плавающей запятой
- Строка с одинарными или двойными кавычками
- Экранирующие символы для строк:
\
,Например:\\
Выход как символ \ - NULL — определяет нулевое значение
Например:
# 返回true
${"true" == (record:value("/data")==NULL)}
1.3 Символы оператора
- Арифметические операции: + , -, * , /, %
- Логические операции: && , || , !
- Сравните: ==, ! =, , =
- Пусто: пусто Определяет, является ли значение нулевым или пустой строкой.
- если еще то: ? :
Например:
# 判断是否为空
${ empty record:value("/data")}
приоритет оператора[]
> ()
> 一元操作符(-、!、empty)
>* / %
> + -
> <、>、<=、>=
> == 、!=
> &&
> ||
> ?:
1.4 Функции
- действие записи : с
record:
начните с , например:record:value(<field path>)
- Кодировка Base64: с
base64:
в начале, например:base64:decodeBytes(<string>)
- Функция колонки: с
f:
начните, например:f:index()
- функция файла: с
file:
в начале, например:file:fileExtension(<filepath>)
- Математические функции: с
math:
в начале, например:math:abs(<number>)
- Функция конвейера: начните с
pipeline:
в начале, например:pipeline:name()
- Строковые функции: начните с
str:
в начале, например:str:length(<string>)
- функция времени: с
time:
в начале, например:time:now()
- Функция учетных данных: с
credential
Начнем с того, что конфиденциальную информацию можно получить из безопасного хранилища учетных данных. - Функция генерации данных: может генерировать адрес, финансовую информацию, адрес электронной почты, URL-адрес, информацию о человеке, функцию, связанную с xeger (случайные данные могут генерироваться в соответствии с регулярностью)
- Другие функции:
alert:info() emptyList() emptyMap() every(, <mm() | ss()>) field:field() isEmptyList() isEmptyMap() jvm:maxMemoryMB() length() list:join(, ) list:joinSkipNulls(, ) offset:column() runtime:availableProcessors() runtime:conf() runtime:loadResource(, <restricted: true | false>) runtime:loadResourceRaw(, <restricted: true | false>) sdc:hostname() sdc:id() size() uuid:uuid() vault:read(, ) - Deprecated vault:readWithDelay(, , ) - Deprecated
2. Автодополнение выражений
Чтобы облегчить использование StreamSet, при написании выражений предусмотрена функция автозавершения выражений.При вводе ${} нажмитеГорячая клавиша Ctrl+ПробелПоявятся соответствующие выражения для поддержки функций или параметров и т. д. Однако, поскольку эта горячая клавиша обычно занята методом ввода, ее можно не использовать, но это не имеет значения, если вы помните первую букву функции для для вызова, введите первую букву, чтобы открыть раскрывающийся список выбора.В списке выражений используются цвета и инициалы, чтобы различать разные категории:
- Синий знак F Тип поля записи
- Красный C обозначает тип константы
- Зеленый M обозначает тип функции
- Фиолетовый P обозначает определенные параметры времени выполнения.
При использовании стрелки вниз для выбора соответствующего выражения справа появится всплывающее сообщение функции.
3. Диапазон модификации оценщика выражений
- Поля можно добавлять или изменять
- Атрибуты заголовка записи могут быть добавлены или изменены
- Свойства поля могут быть добавлены или изменены
Использование имени поля/
начиная с имени свойства, не обязательно/
начало. Выражение начинается с${ }
Инклюзивная квалификация, все выражения записываются в{}
Внутри.
4. Пример выражения
4.1 Условные выражения
серийный номер | выражение | значение |
---|---|---|
1 | ${record:value('/payment_type') == 'CRD'} |
При использовании в компоненте Stream Selector это условие направляет записи с типом оплаты кредитной картой в ветвь потока. |
2 | ${record:value('[3]/State') == "MD"} |
При использовании в компоненте «Выбор потока» это условие будет направлять записи, состояние коллекции списков которых равно MD, в ветвь потока. |
3 | ${record:errorCode()=="FIELD_MERGER_02"} |
При использовании в компоненте "Селектор потока" это условие направит записи с кодом ошибки FIELD_MERGER_02 в ветвь потока. |
4 | ${record:value("[20]/value") == ""} |
При использовании в оповещении вызывает оповещение, когда указанное поле не содержит данных. |
5 | ${record:type('/ID')=STRING} |
При использовании в компоненте «Селектор потока» записи, идентификаторы которых являются строками, направляются в ветвь, содержащую преобразователи типов полей для преобразования полей в числовые типы данных. |
4.2 if-then-else с использованием тернарного ? :
${record:value('/gender')=='1'?'M':(record:value('/gender')=='2'?'F':'U')}
4.3 Работа со строками
Замените пустые значения неизвестными строками
${record:valueOrDefault('/Payment', 'unknown')}
4.4 Цифровые операции
Это выражение вычисляет доход от поездки путем вычитания чаевых, налогов и дорожных сборов из общей стоимости проезда.
${record:value(’/total_amount’) - (record:value(’/tip_amount’) + record:value(’/tolls’) + record:value(’/mta_tax’))}
5. Резюме
Используя выражения, вы можете выполнять расширенные функции модификации и организации данных. Поэтому освоение написания выражений — один из необходимых навыков для продвинутых StreamSet.