Язык выражений StreamSets | Удар семи дней

искусственный интеллект сбор данных

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

Обучающая серия

  1. Стыковка данных — обучающий путь ETL StreamSet 1
  2. Стыковка данных — обучающий путь ETL StreamSet 2
  3. Путь обучения StreamSet от Data Docking-ETL III
  4. Путь обучения StreamSet IV от Data Docking-ETL
  5. Стыковка данных — обучающий путь ETL StreamSet 5
  6. Стыковка данных — учебный процесс ETL StreamSet VI
  7. Путь обучения StreamSet от Data Docking-ETL Семь микросервисов
  8. Путь обучения StreamSet для стыковки данных с ETL будет начинаться через восемь регулярных интервалов
  9. Стыковка данных — обучающий путь ETL StreamSet десять лицом к лицу с RabbitMq
  10. Путь обучения StreamSet от Data Docking-ETL Девять конвейеров Мониторинг состояния WebHook Dingding
  11. 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.在这里插入图片描述