Blank, Coalesce, IsBlank 및 IsEmpty 함수

적용 대상: 캔버스 앱 데스크톱 흐름 Dataverse 수식 열 모델 기반 앱 Power Platform CLI

값이 비어 있거나 테이블레코드가 없는지 여부를 테스트하고 공백 값을 만드는 방법을 제공합니다.

개요

공백은 "값 없음" 또는 "알 수 없는 값"에 대한 자리 표시자입니다. 예를 들어 Combo box 컨트롤의 Selected 속성은 사용자가 선택하지 않은 경우 공백이 됩니다. 많은 데이터 원본에서 NULL 값을 저장하고 반환할 수 있으며, 이 값은 Power Apps에서 공백으로 표현됩니다.

Power Apps에서 속성 또는 계산 값은 공백일 수 있습니다. 예를 들어 부울 값은 일반적으로 true 또는 false 값 중 하나입니다. 그러나 이 두 가지 외에도 상태를 알 수 없음을 나타내는 공백일 수 있습니다. 이는 워크시트 셀이 콘텐츠가 없는 공백으로 시작하지만 TRUE 또는 FALSE 값을 포함할 수 있는 Microsoft Excel과 비슷합니다. 셀의 내용은 언제든지 다시 제거할 수 있으며, 이 경우 공백 상태로 돌아갑니다.

빈 문자열은 문자가 없는 문자열을 나타냅니다. Len 함수는 이러한 문자열에 대해 0을 반환하며 수식에 빈 공간의 두 개의 큰 따옴표 ""로 쓸 수 있습니다. 일부 컨트롤과 데이터 원본은 빈 문자열을 사용하여 "값 없음" 조건을 나타냅니다. 앱 생성을 단순화하기 위해 IsBlankCoalesce 함수는 두 공백 값 또는 빈 문자열을 테스트합니다.

IsEmpty 함수의 컨텍스트에서 공백은 레코드가 없는 테이블에만 적용됩니다. 테이블 구조는 이름을 포함한 채 그대로 완벽하게 유지될 수 있지만 테이블에는 데이터가 없습니다. 테이블은 비어있는 것으로 시작하여 레코드를 가져와서 더 이상 비어 있지 않으며, 그런 다음, 레코드를 제거하여 다시 비워둘 수 있습니다.

노트

우리는 전환기에 있습니다. 지금까지, 공백 또한 오류를 보고하는 데 사용되어 유효한 "값 없음"을 오류와 구별할 수 없습니다. 이러한 이유로 공백 값 저장은 현재 로컬 컬렉션에만 지원됩니다. 설정>예정된 기능>실험용에서 공식 수준 오류 관리 실험 기능을 킨 경우 다른 데이터 원본에서 공백 값을 저장할 수 있습니다. 이 기능을 완료하고 공백 값을 오류로부터 적절한 분리하기 위해 적극적으로 노력하고 있습니다.

빈 템플릿

적용 대상: 캔버스 앱 모델 기반 앱 Dataverse 수식 열

Blank 함수는 공백 값을 반환합니다. 이 값을 지원하는 데이터 원본에 NULL 값을 저장하여 필드에서 값을 효과적으로 제거합니다.

IsBlank

적용 대상: 캔버스 앱 모델 기반 앱

IsBlank 함수는 공백 값 또는 빈 문자열을 테스트합니다. 일부 데이터 원본 및 컨트롤은 값이 없을 때 빈 문자열을 사용하므로 테스트에는 빈 문자열이 포함되어 있어 앱을 쉽게 만들 수 있습니다. 특히 공백 값을 테스트하려면 IsBlank 대신 if( Value = Blank(), ...를 사용합니다. IsBlank 함수는 빈 테이블을 공백이 아닌 것으로 간주하며 IsEmpty는 테이블을 테스트하는 데 사용해야 합니다.

기존 앱에 대해 오류 처리를 사용하도록 설정할 경우 기존 앱 동작을 보존하기 위해 IsBlankIsBlankOrError로 교체하는 것을 고려해보세요. 오류 처리를 하기 전 공백 값은 데이터베이스의 null 값과 오류 값을 모두 나타내기 위해 사용되었습니다. 오류 처리는 IsBlank를 계속 사용하는 기존 앱의 동작을 변경할 수 있는 공백에 대한 두 가지 해석을 구분합니다.

IsBlank의 반환 값은 부울 또는 거짓입니다.

Coalesce

적용 대상: 캔버스 앱 모델 기반 앱

Coalesce 함수는 인수를 순서대로 평가하고 공백 또는 빈 문자열이 아닌 첫 번째 값을 반환합니다. 이 함수를 사용하면 공백 값이나 빈 문자열을 다른 값으로 교체하지만 공백이 아닌 값과 비어 있지 않은 문자열 값은 변경하지 않습니다. 모든 인수가 공백 또는 빈 문자열이면 함수는 공백으로 반환하므로 Coalesce는 빈 문자열을 공백 값으로 변환하는 좋은 방법입니다.

Coalesce( value1, value2 )If( Not IsBlank( value1 ), value1, Not IsBlank( value2 ), value2 )보다 더 정확하며 value1value2 를 두 번 평가할 필요가 없습니다. If 함수는 "else" 수식이 이 경우에서 처럼 없는 경우 공백을 반환합니다.

Coalesce에 대한 모든 인수는 같은 형식이어야 합니다. 예를 들어 숫자와 텍스트 문자열을 함께 사용할 수 없습니다. Coalesce에서 반환한 값은 이 일반 유형입니다.

IsEmpty

적용 대상: 캔버스 앱 모델 기반 앱

IsEmpty 함수는 테이블에 레코드가 있는지 여부를 테스트합니다. CountRows 함수를 사용하여 0을 확인하는 것과 같습니다. IsEmptyErrors 함수와 결합하여 데이터 원본 오류를 확인할 수 있습니다.

IsEmpty의 반환 값은 부울 또는 거짓입니다.

구문

Blank()

Coalesce( Value1 [, Value2, ... ] )

  • Value(s) – 필수 항목입니다. 테스트할 값입니다. 각 값은 공백이 아니거나 빈 문자열이 발견되지 않을 때까지 순서대로 평가됩니다. 이 시점 이후의 값은 평가되지 않습니다.

IsBlank( Value )

  • Value - 필수 항목입니다. 공백 값 또는 빈 문자열에 대해 테스트할 값입니다.

IsEmpty( Table )

  • Table – 필수 항목입니다. 레코드를 테스트할 테이블입니다.

빈 템플릿

노트

다음 예제는 현재 로컬 컬렉션에서만 작동합니다. 설정>예정된 기능>실험용에서 공식 수준 오류 관리 실험 기능을 킨 경우 다른 데이터 원본에서 공백 값을 저장할 수 있습니다. 이 기능을 완료하고 공백 값을 오류로부터 분리하기 위해 적극적으로 노력하고 있습니다.

  1. 앱을 처음부터 만들고 Button 컨트롤을 추가합니다.

  2. 단추의 OnSelect 속성을 다음 수식으로 설정합니다.

    ClearCollect( Cities, { Name: "Seattle", Weather: "Rainy" } )
    
  3. 앱을 미리 보고, 추가한 단추를 클릭하거나 탭한 다음, 미리 보기를 닫습니다.

  4. 파일 메뉴에서 컬렉션을 클릭하거나 탭합니다.

    Cities 컬렉션이 나타나서 "Seattle" 및 "비"가 있는 레코드 하나가 표시됩니다.

    '비' 날씨가 있는 Seattle을 보여 주는 컬렉션.

  5. 기본 작업 영역으로 돌아가려면 뒤로 화살표를 클릭하거나 탭합니다.

  6. Label 컨트롤을 추가하고, Text 속성을 다음 수식으로 설정합니다.

    IsBlank( First( Cities ).Weather )
    

    Weather 필드에 값("비")이 있으므로 레이블에 false가 표시됩니다.

  7. 두 번째 단추를 추가하고 OnSelect 속성을 다음 수식으로 설정합니다.

    Patch( Cities, First( Cities ), { Weather: Blank() } )
    
  8. 앱을 미리 보고, 추가한 단추를 클릭하거나 탭한 다음, 미리 보기를 닫습니다.

    Cities의 첫 번째 레코드의 Weather 필드는 공백으로 바뀌어 이전에 있었던 "비"를 제거합니다.

    공백인 Weather 필드가 있는 Seattle을 보여 주는 컬렉션.

    Weather 필드에 더 이상 값이 없으므로 레이블에 true가 표시됩니다.

Coalesce

수식 설명 결과
Coalesce( Blank(), 1 ) Blank 함수의 반환 값을 테스트하며, 항상 공백 값을 반환합니다. 첫 번째 인수가 공백이므로 공백 값 및 비어 있지 않은 문자열을 찾을 때까지 다음 인수로 계속 평가됩니다. 1
Coalesce( "", "2" ) 빈 문자열인 첫 번째 인수를 테스트합니다. 첫 번째 인수가 빈 문자열이므로 공백 값 및 비어 있지 않은 문자열을 찾을 때까지 다음 인수로 계속 평가됩니다. 2
Coalesce( Blank(), "", Blank(), "", "3", "4" ) Coalesce가 인수 목록의 시작 부분에서 시작하고, 공백 값 및 비어 있지 않은 문자열을 찾을 때까지 각 인수를 차례로 평가합니다. 이 경우 처음 네 개의 인수에서 모두 공백 또는 빈 문자열을 반환하므로 다섯 번째 인수로 계속 평가됩니다. 다섯 번째 인수는 공백이 아닌 값과 비어 있지 않은 문자열이므로 평가는 여기서 중지됩니다. 다섯 번째 인수의 값이 반환되고, 여섯 번째 인수는 평가되지 않습니다. 3
Coalesce( "" ) 빈 문자열인 첫 번째 인수를 테스트합니다. 첫 번째 인수는 빈 문자열이고 더 이상 인수가 없으므로 함수는 공백을 반환합니다. blank

IsBlank

  1. 앱을 처음부터 만들고, 텍스트 입력 컨트롤을 추가하고, 이름을 FirstName으로 지정합니다.

  2. 레이블을 추가하고 Text 속성을 다음 수식으로 설정합니다.

    If( IsBlank( FirstName.Text ), "First Name is a required field." )
    

    텍스트 입력 컨트롤의 Text 속성은 기본적으로 "Text input"으로 설정됩니다. 속성에 값이 포함되어 있으므로 공백이 아니며 레이블에 메시지가 표시되지 않습니다.

  3. 텍스트 입력 컨트롤에서 모든 공백을 포함하여 모든 문자를 제거합니다.

    Text 속성에 더 이상 문자가 없으므로 이 속성은 공백이고, IsBlank( FirstName.Text )true가 됩니다. 필수 필드 메시지가 표시됩니다.

다른 도구를 사용하여 유효성 검사를 수행하는 방법에 대한 자세한 내용은 Validate 함수 및 데이터 원본 작업을 참조하십시오.

다른 예제:

수식 설명 결과
IsBlank( Blank() ) Blank 함수의 반환 값을 테스트하며, 항상 공백 값을 반환합니다. true
IsBlank( "" ) 문자가 없는 문자열입니다. true
IsBlank( "Hello" ) 하나 이상의 문자가 포함된 문자열입니다. false
IsBlank( AnyCollection ) 컬렉션이 있으므로 레코드가 없더라도 공백이 아닙니다. 빈 컬렉션을 확인하려면 IsEmpty를 대신 사용합니다. false
IsBlank( Mid( "Hello", 17, 2 ) ) Mid에 대한 시작 문자가 문자열의 끝을 벗어납니다. 결과는 빈 문자열입니다. true
IsBlank( If( false, false ) ) ElseResult가 없는 If 함수입니다. 조건이 항상 false이므로 이 If는 항상 공백을 반환합니다. true

IsEmpty

  1. 앱을 처음부터 만들고 Button 컨트롤을 추가합니다.

  2. 단추의 OnSelect 속성을 다음 수식으로 설정합니다.

    Collect( IceCream, { Flavor: "Strawberry", Quantity: 300 }, { Flavor: "Chocolate", Quantity: 100 } )

  3. 앱을 미리 보고, 추가한 단추를 클릭하거나 탭한 다음, 미리 보기를 닫습니다.

    IceCream이라는 컬렉션이 만들어지고 다음 데이터가 포함되어 있습니다.

    수량 300과 100의 딸기와 초콜릿 맛이 있는 테이블.

    이 컬렉션에는 두 개의 레코드가 있으며 비어 있지 않습니다. IsEmpty( IceCream )false를 반환하고, CountRows( IceCream )2를 반환합니다.

  4. 두 번째 단추를 추가하고 OnSelect 속성을 다음 수식으로 설정합니다.

    Clear( IceCream )

  5. 앱을 미리 보고, 두 번째 단추를 클릭하거나 탭한 다음, 미리 보기를 닫습니다.

    이제 컬렉션은 다음과 같이 비어 있습니다.

    맛과 수량이 빈 컬렉션으로 포함된 컬렉션.

    Clear 함수는 컬렉션에서 모든 레코드를 제거하여 빈 컬렉션을 만듭니다. IsEmpty( IceCream )true를 반환하고, CountRows( IceCream )0을 반환합니다.

또한 다음 예제와 같이 IsEmpty를 사용하여 계산된 테이블이 비어 있는지 여부를 테스트할 수 있습니다.

수식 설명 결과
IsEmpty( [ 1, 2, 3 ] ) 단일 열 테이블에는 세 개의 레코드가 있으므로 비어 있지 않습니다. false
IsEmpty( [ ] ) 단일 열 테이블에는 레코드가 없으며 비어 있습니다. true
IsEmpty( Filter( [ 1, 2, 3 ], Value > 5 ) ) 단일 열 테이블에는 5보다 큰 값이 없습니다. 필터의 결과에 레코드가 없으며 비어 있습니다. true