> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/workflows/ko/blocks/blocks/advanced-blocks/first-non-empty-or-default.md).

# 첫 번째 비어 있지 않음 또는 기본값

여러 데이터 입력에서 가장 먼저 나오는 비어 있지 않은 값을 선택해 대체 실행 분기를 병합하거나, 모든 입력이 비어 있으면 기본값을 반환합니다. 이를 통해 조건부 실행 병합, 빈 값 처리, 그리고 서로 다른 분기의 데이터를 결합하거나 누락된 데이터에 대해 대체값을 제공해야 하는 구조화된 출력 구성 워크플로를 지원합니다.

## 이 블록의 작동 방식

이 블록은 여러 소스(일반적으로 서로 다른 조건부 실행 분기)에서 데이터를 병합해 먼저 उपलब्ध한 비어 있지 않은 값을 선택함으로써, 후속 처리에 항상 출력이 존재하도록 보장합니다. 이 블록은:

1. 데이터 참조 목록과 선택적 기본값을 받습니다:
   * 선택자 목록 형태로 여러 데이터 입력을 받습니다(최소 1개 필요)
   * 각 선택자는 서로 다른 워크플로 단계나 분기의 출력을 참조할 수 있습니다
   * 모든 입력이 비어 있을 때 사용할 기본값을 받습니다
2. 입력을 순서대로 처리합니다:
   * 제공된 순서대로 데이터 입력을 순회합니다
   * 각 입력값이 비어 있지 않은지(None이 아닌지) 확인합니다
   * 처음 발견된 비어 있지 않은 값에서 멈춥니다
3. 첫 번째 비어 있지 않은 값을 선택합니다:
   * 목록에서 처음 발견된 비어 있지 않은 값을 반환합니다
   * 이를 통해 다른 데이터 소스보다 특정 데이터 소스를 우선할 수 있습니다
   * 순서가 중요합니다: 앞쪽 입력이 뒤쪽 입력보다 우선합니다
4. 모두 비어 있으면 기본값으로 대체합니다:
   * 목록의 모든 입력이 비어 있음(None)일 경우 설정된 기본값을 반환합니다
   * 출력이 절대 None이 아니도록 보장하여, 빈 값을 허용하지 않는 후속 블록에서도 안전하게 사용할 수 있게 합니다
   * 기본값은 어떤 유형이든 될 수 있습니다(문자열, 숫자, 객체, null 등)
5. 빈 값을 처리합니다:
   * 이 블록은 조건부 실행에서 오는 비어 있는 값(None)을 허용합니다
   * 입력이 None일 때 처리를 건너뛰는 대부분의 블록과 달리, 이 블록은 이를 처리합니다
   * 비어 있을 수 있는 입력을 반드시 비어 있지 않은 출력으로 변환합니다
6. 병합된 출력을 반환합니다:
   * 선택된 값(첫 번째 비어 있지 않은 값 또는 기본값)을 출력합니다
   * 출력은 항상 None이 아니므로, 빈 값을 허용하지 않는 블록과의 호환성을 보장합니다
   * 일부 실행 분기가 데이터를 생성하지 않더라도 구조화된 출력을 구성할 수 있게 합니다

이 블록은 조건부 로직이 있는 워크플로에서 대체 실행 분기를 병합하는 데 필수적입니다. 워크플로의 서로 다른 분기가 데이터를 생성할 수 있을 때(예: 하나의 분기는 조건 A가 참이면 데이터를 처리하고, 다른 분기는 조건 B가 참이면 데이터를 처리하는 경우), 이 블록을 사용하면 가장 먼저 उपलब्ध한 결과를 선택해 해당 분기들을 결합할 수 있으므로, 워크플로가 항상 유효한 출력을 생성하도록 보장합니다.

## 일반적인 사용 사례

* **조건부 분기 병합**: 대체 조건부 실행 분기에서 나온 출력을 단일 값으로 병합합니다(예: if-else 분기 결과 병합, 대체 처리 경로 결합, 조건부 분기 출력 통합). 이를 통해 조건부 실행 병합 워크플로를 지원합니다
* **빈 값 처리**: 필터링이나 조건부 실행에서 비어 있을 수 있는 값을 대체 기본값으로 처리합니다(예: 필터링된 데이터를 기본값으로 처리, 조건부 분기에 대한 대체값 제공, 선택적 단계에서 비어 있지 않은 출력 보장). 이를 통해 강력한 빈 값 처리 워크플로를 지원합니다
* **구조화된 출력 구성**: 일부 실행 경로에서 데이터가 생성되지 않더라도 워크플로 출력에 항상 값이 존재하도록 보장합니다(예: 일관된 출력 구조 구성, 출력 필드 존재 보장, 기본값이 포함된 구조화된 응답 생성). 이를 통해 구조화된 출력 구성 워크플로를 지원합니다
* **우선순위 기반 선택**: 우선순위 순서에 따라 여러 소스에서 데이터를 선택합니다(예: 기본 소스를 대체 소스보다 우선, 가장 적합한 데이터 소스 선택, 특정 처리 결과 우선). 이를 통해 우선순위 기반 데이터 선택 워크플로를 지원합니다
* **대체값**: 기본 데이터 소스를 사용할 수 없을 때 대체값을 제공합니다(예: 데이터가 없을 때 기본값 사용, 비어 있는 결과에 대한 대체값 제공, 후속 호환성 보장). 이를 통해 대체값 워크플로를 지원합니다
* **출력 정규화**: 출력이 항상 존재하고 비어 있지 않도록 정규화합니다(예: 선택적 출력 정규화, 일관된 출력 형식 보장, 출력 가용성 보장). 이를 통해 출력 정규화 워크플로를 지원합니다

## 다른 블록에 연결하기

이 블록은 여러 데이터 입력을 받아 단일 병합 출력으로 생성합니다:

* **조건부 실행 블록 뒤에서** (ContinueIf, DetectionsFilter 등) 대체 분기 출력을 병합합니다(예: if-else 분기 결과 병합, 조건부 경로 결합, 분기 출력 통합). 이를 통해 조건부-병합 워크플로를 지원합니다
* **빈 값을 허용하지 않는 블록 앞에서** 입력이 항상 존재하도록 보장합니다(예: 비어 있지 않은 입력 보장, 빈 데이터에 대한 대체값 제공, 입력 가용성 보장). 이를 통해 병합-처리 워크플로를 지원합니다
* **워크플로 출력에서** 보장된 필드 존재를 가진 구조화된 출력을 구성합니다(예: 일관된 출력 빌드, 출력 완전성 보장, 구조화된 응답 생성). 이를 통해 병합-출력 워크플로를 지원합니다
* **필터링 블록 뒤에서** 필터가 모든 데이터를 제거하는 경우를 처리합니다(예: 필터링된 데이터에 기본값 제공, 빈 필터 결과 처리, 출력 가용성 보장). 이를 통해 필터-병합 워크플로를 지원합니다
* **데이터 저장 블록 앞에서** 저장된 데이터가 항상 존재하도록 보장합니다(예: 기본값과 함께 저장, 데이터 완전성 보장, 대체 저장 값 제공). 이를 통해 병합-저장 워크플로를 지원합니다
* **대체 처리 경로 사이에서** 서로 다른 처리 전략의 결과를 결합합니다(예: 대체 처리 결과 병합, 서로 다른 모델 출력 결합, 처리 전략 통합). 이를 통해 대체-병합 워크플로를 지원합니다

## 요구 사항

이 블록은 최소 하나의 데이터 입력 참조가 필요합니다(여러 개 허용). 이 블록은 비어 있는 값(None)을 허용하므로 조건부 실행 분기의 데이터를 처리할 수 있습니다. 해당 `기본값` 매개변수는 선택 사항이며(기본값은 None) 모든 입력이 비어 있을 때 사용할 대체값을 지정합니다. 데이터 입력은 순서대로 처리되며, 먼저 나오는 비어 있지 않은 값이 선택됩니다. 모든 입력이 비어 있으면 기본값이 반환됩니다. 출력은 항상 None이 아니므로, 빈 값을 허용하지 않는 블록과의 호환성이 보장됩니다. 이 블록은 대체 실행 분기를 병합하고 구조화된 출력이 항상 완전하도록 보장하는 데 필수적입니다.

### 유형 식별자

단계에서 다음 식별자를 사용하세요 `"type"` 필드: `roboflow_core/first_non_empty_or_default@v1` 워크플로우에 이 블록을 단계로 추가하려면.

### 속성

| **이름** | **유형** | **설명**                                                                                                                                                                                                                                                                                                 | 참조 |
| ------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -- |
| `name` | `str`  | 이 단계에 대한 고유 식별자를 입력하세요..                                                                                                                                                                                                                                                                               | ❌  |
| `기본값`  | `Any`  | 모든 데이터 입력이 비어 있음(None)일 때 반환할 기본값입니다. 이를 통해 출력이 항상 None이 아니도록 보장하여, 빈 값을 허용하지 않는 후속 블록에서 안전하게 사용할 수 있습니다. 기본값은 문자열(예: '비어 있음', 'N/A'), 숫자(예: 0, -1), 객체(예: {}, \[]), null 또는 기타 어떤 값이든 될 수 있습니다. 지정하지 않으면 기본값은 None입니다. 조건부 실행 분기나 필터링으로 모든 데이터가 제거될 때 대체값을 제공하거나, 구조화된 출력에 항상 값이 존재하도록 보장하는 데 사용합니다.. | ❌  |

이 **참조** 열은 워크플로우 런타임에서 사용 가능한 동적 값으로 속성을 매개변수화할 수 있는 가능성을 나타냅니다 `워크플로우` 런타임입니다. 자세한 내용은 *바인딩* 을 참조하세요.

### 입력 및 출력 바인딩

사용 가능한 연결은 바인딩 유형에 따라 달라집니다. 어떤 바인딩 유형인지 확인하세요 `첫 번째 비어 있지 않은 값 또는 기본값` 버전 `v1` 을 가지고 있는지.

<details>

<summary>입력 및 출력 바인딩</summary>

* 입력
  * `데이터` ([*`*`*](/workflows/ko/developer-guide/developer-guide/kinds/wildcard.md)): 비어 있지 않은 값을 확인할 데이터 참조(선택자) 목록이며, 우선순위 순서로 정렬됩니다. 각 선택자는 서로 다른 워크플로 단계나 실행 분기의 출력을 참조할 수 있습니다. 이 블록은 이 목록을 순회하며 처음 발견된 비어 있지 않은(None이 아닌) 값을 반환합니다. 목록의 모든 값이 비어 있음/None이면 기본값이 반환됩니다. 최소 1개 항목이 필요합니다. 순서가 중요합니다: 목록의 앞쪽 항목이 더 높은 우선순위를 가집니다. 일반적인 사용 사례: 조건부 실행 분기의 출력 병합, 대체 데이터 소스 제공, 또는 대체 처리 경로의 결과 결합..
* 출력
  * `출력` ([`*`](/workflows/ko/developer-guide/developer-guide/kinds/wildcard.md)): 어떤 요소와도 동일한 값.

</details>

<details>

<summary>예시 JSON 정의</summary>

```json
{
	    "name": "<your_step_name_here>",
	    "type": "roboflow_core/first_non_empty_or_default@v1",
	    "data": [
	        "$steps.my_step.predictions"
	    ],
	    "default": "비어 있음"
	}
```

</details>
