기술 자료

여러 키워드를 사용한 와일드카드 검색으로 데이터를 필터링하는 방법


게시 날짜: 09 Apr 2021
마지막 수정 날짜: 19 Jun 2023

질문

연속적이지 않은 여러 키워드로 검색할 수 있는 단일 와일드카드 검색 필터를 만들려면 어떻게 하나요?

예를 들어 "quartz sphinx"를 검색하면 "Sphinx of black quartz, judge my vow."가 반환되어야 합니다.

환경

  • Tableau Desktop

답변

Tableau의 기본 와일드카드 검색 동작은 정확한 구문 일치이며, 구문의 시작, 끝 또는 둘 다에서 일치하지 않는 텍스트가 허용될 수 있습니다. 스크롤하기에는 너무 많은 값들이 차원에 포함되었을 경우, 와일드카드 검색을 사용하면 뷰를 특정 값으로 더 빠르게 필터링할 수 있습니다. 매개 변수 및 계산을 사용하면 잠재적 중복 검색 등과 같은 다른 사용 사례에 더 유용하게 활용할 수 있는 다양한 검색 동작을 가진 뷰를 만들 수 있습니다.

이 문서의 오른쪽 패널에 다운로드할 수 있도록 첨부된 예시 통합 문서는 Superstore 샘플 데이터 집합을 사용하여 다음 지침을 설명합니다.
  1. 왼쪽 데이터 패널에서 Product Name(제품 이름)을 마우스 오른쪽 버튼으로 클릭하고 Create Parameter...(매개 변수 만들기...)를 선택합니다.
  2. 매개 변수 만들기 대화 상자에서 다음을 수행하고 대화 상자를 닫습니다.
    1. 매개 변수의 이름을 지정합니다. 이 예시에서 매개 변수의 이름은 "Search Product Name(제품 이름 검색)"입니다.
    2. 허용 가능한 값으로 All(전체)을 선택합니다.
  3. 데이터 패널에서 Search Product Name(제품 이름 검색)을 마우스 오른쪽 단추로 클릭하고 Show Parameter(매개 변수 표시) 확인란을 선택합니다.
  4. Analysis(분석) > Create Calculated Field(계산된 필드 만들기)를 선택합니다.
  5. 계산된 필드 대화 상자에서 다음을 수행한 후 OK(확인)를 클릭합니다.
    1. 계산된 필드 이름을 지정합니다. 이 예에서 계산된 필드의 이름은 "Product Name Search Filter(제품 이름 검색 필터)"입니다.
    2. 수식 필드에서 원하는 검색 동작을 생성하는 계산을 만듭니다. 아래의 두 예시를 참고하세요.

      AND - 필터 결과에는 모든 검색어가 포함되어야 하며 각 검색어는 공백으로 구분되어야 합니다.
      [Search Product Name]=""
      //매개 변수가 비어있는 경우 모든 것을 표시합니다(즉, 모든 것이 TRUE)
      OR (
          CONTAINS(LOWER([Product Name]),LOWER(SPLIT([Search Product Name]," ",1)))
          //[Product Name]에 먼저 입력한 검색어가 포함된 경우
          AND ( 
              SPLIT([Search Product Name]," ",2) = ""
              //두 번째 검색어가 없는 경우, TRUE를 반환합니다
              OR CONTAINS(LOWER([Product Name]),LOWER(SPLIT([Search Product Name]," ",2)))
              //[Product Name]에 두 번째 검색어도 있는지 확인합니다
          )
          AND (SPLIT([Search Product Name]," ",3)="" OR CONTAINS(LOWER([Product Name]),LOWER(SPLIT([Search Product Name]," ",3))))
          AND (SPLIT([Search Product Name]," ",4)="" OR CONTAINS(LOWER([Product Name]),LOWER(SPLIT([Search Product Name]," ",4))))
          AND (SPLIT([Search Product Name]," ",5)="" OR CONTAINS(LOWER([Product Name]),LOWER(SPLIT([Search Product Name]," ",5))))
      )

      OR - 필터 결과에는 적어도 하나의 검색어가 포함되어야 하며 각 검색어는 공백으로 구분되어야 합니다.
      [Search Product Name]=""
      OR CONTAINS(LOWER([Product Name]),LOWER(SPLIT([Search Product Name]," ",1)))
      OR (
          NOT SPLIT([Search Product Name]," ",2)=""
          AND CONTAINS(LOWER([Product Name]),LOWER(SPLIT([Search Product Name]," ",2)))
      ) //두 번째 검색어가 공백이 아니며 [Product Name]에 포함되어 있을 경우 TRUE를 반환합니다
      
      OR (NOT SPLIT([Search Product Name]," ",3)="" AND CONTAINS(LOWER([Product Name]),LOWER(SPLIT([Search Product Name]," ",3))))
      OR (NOT SPLIT([Search Product Name]," ",4)="" AND CONTAINS(LOWER([Product Name]),LOWER(SPLIT([Search Product Name]," ",4))))
      OR (NOT SPLIT([Search Product Name]," ",5)="" AND CONTAINS(LOWER([Product Name]),LOWER(SPLIT([Search Product Name]," ",5))))
      
  6. Product Name Search Filter(제품 이름 검색 필터)필터 선반으로 끌어옵니다.
  7. 필터 대화 상자에서 True(참)를 선택하고 OK(확인)를 클릭합니다.
  8. Search Product Name(제품 이름 검색) 매개 변수에 검색어를 입력하고 Enter를 눌러 뷰를 필터링합니다.

추가 정보

  • 계산에는 사용자가 입력할 수 있는 검색어 개수에 대한 조건이 포함되어야 합니다. 위의 예에서 사용자가 5개 이상의 검색어를 입력하면 그 이상의 검색어는 무시됩니다.
  • 정규식 표현이 지원되는 일부 데이터 원본의 경우 정규식 계산을 통해 검색어 개수를 자동으로 감지할 수 있습니다. 하지만 정규식은 비교적 복잡하며 Tableau 기술 지원 팀에서 지원하지 않습니다. 활용 가능한 정규식 계산 중 일부는 다음과 같습니다.
    • [Regex String (OR)]   "(" + REGEXP_REPLACE([Search Product Name], ',', '|') + ")"
    • [Regex String (AND)]   "(?=.*" + REPLACE([Search Product Name], ',', ")(?=.*") + ").*"
    • [Regex Filter]   REGEXP_MATCH([Product Name], [Regex String...])
이 문서로 문제가 해결되었습니까?