표현식
정의된 입력 변수와 구성된 규칙을 바탕으로 특정 출력을 만듭니다.
입력 변수의 조건을 평가하는 switch-case 문을 사용해 워크플로에서 조건부 로직과 비즈니스 규칙을 생성하고, 선택적으로 연산으로 데이터를 변환하며, 어떤 조건이 일치하는지에 따라 서로 다른 출력을 반환하여 조건부 실행, 비즈니스 로직 구현, 규칙 기반 의사 결정, 동적 출력 생성 워크플로를 가능하게 합니다.
이 블록의 작동 방식
이 블록은 프로그래밍의 switch-case 또는 if-else-if 문과 유사한 조건부 로직을 구현합니다. 이 블록은:
워크플로 단계에서 명명된 변수들의 딕셔너리로 입력 데이터를 받습니다
선택적으로 다음 연산을 사용해 데이터 변환을 적용합니다:
조건 평가 전에 데이터 변수에 연산을 수행합니다
Property Definition 블록과 동일한 연산 시스템을 사용합니다
조건을 위한 변수를 준비하기 위해 데이터(예: 속성 추출, 필터링, 선택)를 변환합니다
변환된 값을 조건에서 사용할 변수로 저장합니다
switch-case 문을 순차적으로 평가합니다:
일치하는 case가 나올 때까지 각 case 조건을 순서대로 테스트합니다
첫 번째로 일치하는 case에서 멈추고 그 결과를 반환합니다
일치하는 case가 없으면 기본 결과를 반환합니다
유연한 표현식 시스템을 사용해 조건을 평가합니다:
이항 문: 연산자(==, !=, >, <, >=, <=, contains, startsWith, endsWith, in, any in, all in)를 사용해 두 값을 비교합니다
단항 문: 단일 값을 테스트합니다(Exists, DoesNotExist, is True, is False, is empty, is not empty)
문 그룹: AND/OR 연산자로 여러 문을 결합해 복잡한 조건을 만듭니다
조건은 이름으로 변수(DynamicOperand)를 참조하거나 리터럴 값(StaticOperand)을 사용할 수 있습니다
일치하는 case를 기준으로 결과를 반환합니다:
정적 결과:
case에 정의된 고정 값을 반환합니다(예: "PASS", "FAIL", 숫자값, 문자열)
동적 결과:
변수에서 값을 반환합니다(모든 입력 변수를 참조할 수 있음)
선택적으로 연산을 적용해 반환 전에 변수를 변환합니다
계산되거나 추출된 값을 출력으로 반환할 수 있습니다
기본 case를 처리합니다:
일치하는 case 조건이 없으면 기본 결과를 반환합니다
기본값도 case 결과처럼 정적 또는 동적일 수 있습니다
이 블록은 데이터 변환 연산과 유연한 조건 평가를 결합하여 복잡한 조건부 로직을 가능하게 합니다. 조건은 변수를 비교하고, 존재 여부를 테스트하고, 멤버십을 확인하고, 문자열 연산을 수행하고, 논리 연산자로 여러 조건을 결합할 수 있습니다. 따라서 비즈니스 규칙 구현, 검증 로직, 여러 기준에 따른 분류, 조건부 데이터 변환에 강력합니다.
일반적인 사용 사례
비즈니스 로직 구현: 조건부 비즈니스 규칙과 검증 로직을 구현합니다(예: 감지 결과가 기준과 일치하는지 검증, 품질 검사 구현, 비즈니스 규칙 적용), 비즈니스 로직 워크플로를 가능하게 함
조건부 분류: 여러 조건과 기준에 따라 데이터를 분류합니다(예: 속성을 기준으로 감지를 분류, 조건별로 결과를 범주화, 다중 기준 분류 구현), 조건부 분류 워크플로를 가능하게 함
검증 및 품질 관리: 기준값 또는 임계값에 대해 데이터나 예측을 검증합니다(예: 예측이 예상 클래스와 일치하는지 검증, 품질 임계값 확인, 규정 준수 확인), 검증 워크플로를 가능하게 함
규칙 기반 의사 결정: 복잡한 규칙 집합에 따라 결정을 내립니다(예: 여러 기준에 따라 승인/거부, 조건에 따라 데이터 라우팅, 규칙 집합을 사용한 의사 결정), 규칙 기반 의사결정 워크플로를 가능하게 함
동적 출력 생성: 입력 조건에 따라 서로 다른 출력을 생성합니다(예: 조건에 따라 다른 값 반환, 조건부 출력 생성, 동적 결과 생성), 동적 출력 워크플로를 가능하게 함
다중 조건 필터링: 여러 조건을 사용한 복잡한 필터링 로직을 구현합니다(예: 여러 기준에 따라 필터링, 복잡한 조건부 필터 적용, 다중 요소 필터링 구현), 조건부 필터링 워크플로를 가능하게 함
다른 블록에 연결하기
이 블록은 워크플로 단계에서 데이터를 받아 조건부 출력을 생성합니다:
모델 또는 분석 블록 뒤에 예측이나 결과에 조건부 로직을 구현하기 위해(예: 예측 검증, 결과 분류, 조건부 규칙 적용), 조건부 로직 워크플로를 가능하게 함
Property Definition 블록 뒤에 추출된 속성을 조건에서 사용하기 위해(예: 추출된 값을 조건에서 사용, 추출된 속성 비교, 추출된 데이터에 로직 구현), 속성-조건 워크플로를 가능하게 함
로직 블록 이전 Continue If와 같이 조건부 입력을 제공하기 위해(예: 필터링을 위한 조건부 값 제공, 의사 결정을 위한 조건부 입력 제공), 표현식-로직 워크플로를 가능하게 함
데이터 저장 블록 앞에서 저장을 위해 데이터를 조건부로 서식 지정하거나 변환하기 위해(예: 저장용으로 조건부 서식 지정, 조건부 변환 적용, 조건부 출력 준비), 조건부 저장 워크플로를 가능하게 함
알림 블록 앞에서 조건부 알림을 보내기 위해(예: 조건부 경고 전송, 조건에 따라 알림, 조건부 알림 트리거), 조건부 알림 워크플로를 가능하게 함
워크플로 출력에서 조건부 최종 출력을 제공하기 위해(예: 조건부 워크플로 출력, 동적 결과 생성, 조건부 출력 서식 지정), 조건부 출력 워크플로를 가능하게 함
요구 사항
이 블록은 워크플로 단계의 데이터를 담은 키와 값이 변수 이름과 데이터인 딕셔너리 형태의 입력 데이터를 필요로 합니다. switch 매개변수는 조건과 결과가 있는 case들을 정의합니다. 조건은 이항 비교(==, !=, >, <, >=, <=, contains, in 등), 단항 테스트(Exists, is empty 등), 논리적 결합(AND/OR)을 지원합니다. 데이터 연산은 선택 사항이며 Property Definition 블록과 동일한 연산 시스템을 사용합니다. 이 블록은 case를 순서대로 평가하고 첫 번째로 일치하는 case의 결과를 반환하며, 일치하는 case가 없으면 기본 결과를 반환합니다. 결과는 정적 값 또는 변수에서 가져온 동적 값일 수 있습니다(선택적으로 연산이 적용됨).
유형 식별자
단계에서 다음 식별자를 사용하세요 "type" 필드: roboflow_core/expression@v1 워크플로우에 이 블록을 단계로 추가하려면.
속성
이름
유형
설명
참조
name
str
이 단계에 대한 고유 식별자를 입력하세요..
❌
data_operations
Dict[str, List[Union[ClassificationPropertyExtract, ConvertDictionaryToJSON, ConvertImageToBase64, ConvertImageToJPEG, DetectionsFilter, DetectionsOffset, DetectionsPropertyExtract, DetectionsRename, DetectionsSelection, DetectionsShift, DetectionsToDictionary, Divide, ExtractDetectionProperty, ExtractFrameMetadata, ExtractImageProperty, LookupTable, Multiply, NumberRound, NumericSequenceAggregate, PickDetectionsByParentClass, RandomNumber, SequenceAggregate, SequenceApply, SequenceElementsCount, SequenceLength, SequenceMap, SortDetections, StringMatches, StringSubSequence, StringToLowerCase, StringToUpperCase, TimestampToISOFormat, ToBoolean, ToNumber, ToString]]]
조건 평가 전에 데이터 변수를 변환하기 위한 선택적 연산 딕셔너리입니다. 키는 데이터의 변수 이름이고, 값은 연산 목록입니다(Property Definition 블록과 동일). 연산은 조건에서 사용되기 전에 변수를 변환하는 데 적용됩니다. 속성 추출, 필터링 또는 평가 전 데이터 변환에 유용합니다. 빈 딕셔너리(기본값)는 변환이 적용되지 않음을 의미합니다..
❌
switch
CasesDefinition
조건과 결과가 있는 case들을 포함하는 switch-case 로직 정의입니다. 각 case는 조건(이항/단항 문이 포함된 StatementGroup)과 결과(정적 값 또는 동적 변수)를 가집니다. case는 순서대로 평가되며, 첫 번째로 일치하는 case의 결과가 반환됩니다. 어떤 case도 일치하지 않으면 기본 결과가 반환됩니다. AND/OR 연산자, 비교 연산자(==, !=, >, <, >=, <=), 문자열 연산(contains, startsWith, endsWith), 멤버십 테스트(in, any in, all in), 존재 테스트(Exists, is empty)를 사용한 복잡한 조건을 지원합니다.
❌
이 참조 열은 워크플로우 런타임에서 사용 가능한 동적 값으로 속성을 매개변수화할 수 있는 가능성을 나타냅니다 워크플로우 런타임입니다. 자세한 내용은 바인딩 을 참조하세요.
입력 및 출력 바인딩
사용 가능한 연결은 바인딩 유형에 따라 달라집니다. 어떤 바인딩 유형인지 확인하세요 식 버전 v1 을 가지고 있는지.
마지막 업데이트
도움이 되었나요?