DAX(데이터 분석 식) UDF(사용자 정의 함수)를 사용하면 재사용 가능하고 매개 변수가 있는 DAX 논리를 모델에 패키지하여 DAX 코드를 더 쉽게 작성, 유지 관리 및 공유할 수 있습니다. UDF는 측정값, 계산 열 및 시각적 개체에서 수식을 반복하는 대신 의미 체계 모델에 프로그래밍 스타일의 유연성을 제공하므로 함수를 한 번 정의하고 DAX가 지원되는 모든 곳에서 사용할 수 있습니다.
DAX UDF는 2026년 6월 릴리스부터 Power BI Desktop 및 Power BI Service에서 일반적으로 사용할 수 있습니다. 자세한 내용은 DAX 사용자 정의 함수를 참조하세요.
사용자 정의 함수를 사용하는 이유는 무엇인가요?
- 재사용성 및 일관성: 계산을 한 번 정의하고 어디서나 다시 사용하세요.
- 유지 관리 기능: 규칙을 수정하거나 발전하기 위해 논리를 한 곳에서 업데이트합니다.
- 더 안전한 작성: 선택적 형식 힌트 및 형식 검사 도우미는 예측 가능한 오류 방지 코드를 지원합니다.
- 일류 모델 개체: UDF는 모델에 상주하며 모델 탐색기에서 볼 수 있습니다.
함수 정의
DQV(DAX 쿼리 뷰) 또는 TMDL 뷰를 사용하여 Power BI Desktop에서 사용자 정의 함수를 정의할 수 있습니다.
일반 구문
UDF의 일반적인 구문은 다음과 같습니다.
/// Optional description above the function
/// @param {ParameterType} ParameterName - ParameterDescription
/// ...
/// @returns Return description
FUNCTION <FunctionName> = ( [<ParameterName> [: [<ParameterType>] [<ParameterSubtype>] [<ParameterPassingMode>]] [= <DefaultExpression>], ...] ) => <FunctionBody>
예: 단순 세금 함수
다음은 지정된 금액에 세금을 추가하는 DQV 의 간단한 예제입니다. DQV에서 UDF를 평가할 수도 있습니다.
DEFINE
/// AddTax takes in amount and returns amount including tax
FUNCTION AddTax = (
amount : NUMERIC
) =>
amount * 1.1
EVALUATE
{ AddTax ( 10 ) }
// Returns 11
UDF가 정의되면 모델을 업데이트하거나 코드 렌즈를 사용하여 모델에 함수를 추가할 수 있습니다.
TMDL 보기에서 동일한 예제를 만들 수 있습니다.
createOrReplace
/// AddTax takes in amount and returns amount including tax
function AddTax = (amount : NUMERIC) => amount * 1.1
UDF가 정의되면 변경 내용을 적용하여 모델에 함수를 추가할 수 있습니다.
사용자 정의 함수 관리
정의되고 모델에 추가되면 함수 노드 아래의 모델 탐색기 에서 모든 사용자 정의 함수를 보고 관리할 수 있습니다 .
DQV(DAX 쿼리 뷰)에서 모델 탐색기를 통해 빠른 쿼리를 사용하여 함수를 쉽게 정의하고 평가할 수 있습니다.
TMDL 보기에서 함수를 캔버스로 끌어서 놓거나 TMDL 스크립트를 사용하여 모델 탐색기를 통해 실행할 수 있습니다.
Power BI Project를 사용하는 경우 함수도 definition 폴더 내의 functions.tmdl에 저장됩니다.
사용자 정의 함수 사용
모델에 UDF를 추가한 후 DAX가 지원되는 모든 위치에서 사용할 수 있습니다. 여기서는 예제로 사용합니다 AddTax .
측정값과 함께 전체 필터 컨텍스트에서 UDF를 사용합니다.
Total Sales with Tax = AddTax ( [Total Sales] )
계산 열이 있는 테이블의 모든 행에 UDF를 적용합니다.
Sales Amount with Tax = CONVERT ( AddTax ( 'Sales'[Sales Amount] ), CURRENCY )
시각적 개체 계산을 사용하여 시각화에서 직접 UDF를 사용하세요.
Sales Amount with Tax = AddTax ( [Sales Amount] )
고급 시나리오에 UDF를 중첩합니다.
DEFINE
/// AddTax takes in amount and returns amount including tax
FUNCTION AddTax = (
amount : NUMERIC
) =>
amount * 1.1
FUNCTION AddTaxAndDiscount = (
amount : NUMERIC,
discount : NUMERIC
) =>
AddTax ( amount - discount )
EVALUATE
{ AddTaxAndDiscount ( 10, 2 ) }
// Returns 8.8
Parameters
DAX UDF는 0개 이상의 매개 변수를 지원합니다. 함수를 더 안전하고 예측 가능하게 하려면 선택적으로 매개 변수 형식 힌트를 지정할 수 있습니다.
-
형식: 매개 변수가 허용하는 값 형식(
AnyVal, ,Scalar,TableAnyRef,CalendarRef,ColumnRefMeasureRef또는TableRef)입니다. -
하위 형식(스칼라 형식에만 해당): 특정 스칼라 데이터 형식(
Variant,,Int64,Decimal,Double,String,DateTimeBoolean또는Numeric)입니다. -
ParameterMode: 인수가 평가되는 시점(
val의 경우 즉시,expr의 경우 지연).
형식 힌트는 다음과 같은 형식을 따릅니다. [type] [subtype] [parameterMode]
예: 형 변환
DEFINE
/// returns x cast to an Int64
FUNCTION CastToInt = (
x : SCALAR INT64 VAL
) =>
x
EVALUATE
{ CastToInt ( 3.4 ), CastToInt ( 3.5 ), CastToInt ( "5" ) }
// returns 3, 4, 5
이 예제에서는 Scalar 형식, Int64 하위 형식 및 val parameterMode를 사용합니다. 아래 예제와 같이 하위 형식을 포함하여 Int64 동일한 효과를 얻을 수도 있습니다. 숫자가 아닌 문자열은 오류가 발생합니다.
DEFINE
/// returns x as an Int64
FUNCTION CastToInt = (
x : INT64
) =>
x
EVALUATE
{ CastToInt ( 3.4 ), CastToInt ( 3.5 ), CastToInt ( "5" ) }
// returns 3, 4, 5
형식 검사
다음과 같은 기본 제공 DAX 형식 검사 함수를 사용하여 함수 내의 매개 변수 형식의 유효성을 검사합니다.
사용 가능한 형식 검사 함수의 전체 목록은 DAX 사용자 정의 함수를 참조하세요.
관련 콘텐츠
사용자 정의 함수 사용에 대한 자세한 내용은 다음 리소스를 참조하세요.