The importance of Only()
Only()는 그룹에 사용 가능한 값이 하나만 있는 경우 값을 반환합니다. 이 값이 집계의 결과가 됩니다. 집계 함수가 지정되지 않은 경우 Qlik Sense에서는 Only()를 기본값으로 지정합니다.
차트 차원과 매개 변수 간에 일대일 관계가 있으면 Only() 함수는 가능한 값만 반환합니다. 여러 값이 있으면 NULL을 반환합니다. 예를 들어 단가=12인 제품만 검색하는 경우 단가가 12인 제품이 둘 이상 있으면 NULL을 반환합니다.
다음 이미지는 일대일 관계와 일대다 관계의 차이점을 보여줍니다.
이 Only() 함수는 집계 함수입니다. 많은 레코드를 입력으로 사용하고 Sum() 또는 Count()와 유사하게 하나의 값만 반환합니다. Qlik Sense는 거의 모든 계산에서 집계를 사용합니다. 차트, 정렬 표현식, 텍스트 상자, 고급 검색 및 계산된 레이블의 표현식은 모두 집계이므로 집계 함수 없이는 계산할 수 없습니다.
그러나 사용자가 명시적인 집계 함수가 없는 표현식을 입력하면 어떻게 됩니까? 예를 들어 정렬 표현식이 Date로 설정되어 있는 경우는 어떻게 됩니까? 또는 표현식 =[Product Type]='Beer and Wine'을 사용하여 맥주와 와인 제품을 구매한 고객을 고급 검색한 경우는 어떻게 됩니까?
여기서 Only() 함수가 계산에 영향을 미칩니다. 표현식에 명시적 집계 함수가 없는 경우 Qlik Sense는 Only() 함수를 암시적으로 사용합니다. 위의 경우 Only(날짜)가 정렬 표현식으로 사용되고 Only([제품 유형])='Beer and Wine'을 검색 기준으로 사용합니다.
경우에 따라 새 표현식은 사용자가 예상하지 않은 결과를 반환합니다. 위의 두 예는 Date 또는 Product Type 중 가능한 값이 하나만 있는 경우에 정상적으로 작동하지만, 둘 이상의 값이 있는 경우에는 모두 작동하지 않습니다.
Only()를 사용한 서로 다른 표현식
비슷한 표현식으로 4개의 KPI를 만들겠습니다. 이런 방식으로, 네이키드 필드 참조가 있거나 표현식의 다른 위치에 Only()가 있는 경우 선택 결과에 어떻게 큰 영향을 미치는지 비교할 수 있습니다.
앱 내의 Importance of Only()시트에서 Invoice Date 차원이 있는 필터 창을 찾습니다.
다음과 같이 하십시오.
- KPI를 만듭니다.
- 측정값 추가를 클릭합니다. 기호를 클릭합니다.
식 편집기를 엽니다. - 다음을 입력합니다. Month([Invoice Date])
- 측정값 Month(Only([Invoice Date])), Month(Max([Invoice Date])), Only(Month([Invoice Date]))를 사용하여 KPIs를 세 개 더 만듭니다.
- 적용을 클릭합니다.
네이키드 필드 참조가 있으면 Only() 함수가 최하위 수준에 삽입됩니다. 즉, 처음 두 개의 KPI(Month([Invoice Date]) 및 Month(Only([Invoice Date])))가 동일하게 해석되며 항상 동일한 결과를 제공합니다.
표시된 바와 같이 네 개의 KPI 중 세 개가 NULL을 반환합니다. 반면에 세 번째 KPI(Month(Max([Invoice Date])))는 선택하지 않더라도 값을 반환합니다.
표현식을 작성할 때는 항상 어떤 집계를 사용할 것인지, 또는 여러 값이 있는 경우 어떤 값을 사용할 것인지를 확인해야 합니다. NULL을 사용하여 여러 값을 나타내려면 표현식을 그대로 두십시오. 숫자의 경우 대신 Sum(), Avg(), Min() 또는 Max()를 사용할 수 있습니다. 문자열의 경우 Only() 또는 MinString()을 사용할 수 있습니다.
다음과 같이 하십시오.
- 시트 편집을 중지합니다.
- 필터 창에서 1월의 날짜를 선택합니다.
- 을 클릭하여 선택 내용을 확인합니다.
한 날짜를 선택하면 모든 KPI는 올바른 답을 반환합니다. Month([Invoice Date])의 표현식과 같이 표현식에 네이키드 필드 참조가 포함된 경우에도 고유하게 선택하면 적절한 값이 반환될 수 있습니다.
다음과 같이 하십시오.
- 필터 창에서 1월의 날짜를 추가로 선택합니다.
- 을 클릭하여 선택 내용을 확인합니다.
처음 두 KPI는 NULL을 반환하고 다른 두 KPI는 1월의 적절한 값을 반환합니다. 특히 네 번째 KPI는 선택한 두 날짜가 1월의 날짜이기 때문에 올바른 답을 반환합니다.
다음과 같이 하십시오.
- 필터 창에서 1월이 아닌 날짜를 추가로 선택합니다.
- 을 클릭하여 선택 내용을 확인합니다.
다른 월에서 여러 날짜를 선택하면 세 번째 KPI만 값을 반환합니다. 표현식 Month(Max([Invoice Date]))에 따라 선택한 항목에서 가장 큰 월 값을 반환합니다. 네이키드 필드 참조를 포함하는 표현식에는 Only()가 자동으로 삽입되므로 최하위 수준이 표현식에 적합하다고 항상 판단할 수는 없습니다. Only()를 배치하는 것이 중요합니다.
자세한 내용은 Only - 차트 함수를 참조하십시오.