BASE DE CONOCIMIENTO

Cómo filtrar datos por búsqueda con caracteres comodín mediante varias palabras clave


Publicado: 09 Apr 2021
Fecha de la última modificación: 19 Jun 2023

Pregunta

¿Cómo crear un único filtro de búsqueda con comodines que permita buscar mediante varias palabras clave no consecutivas?

Por ejemplo, una búsqueda de "esfinge de cuarzo" debería mostrar "Esfinge de cuarzo blanco, juzguen mi voto".

Entorno

  • Tableau Desktop

Respuesta

El comportamiento predeterminado de la búsqueda con comodines en Tableau es una coincidencia de frase exacta, lo cual puede permitir que haya texto no coincidente al principio de la frase, al final o en ambas partes. La búsqueda con comodines les permite a los usuarios filtrar vistas con mayor rapidez en función de valores específicos cuando la dimensión contiene demasiados valores para explorar. Mediante parámetros y cálculos, es posible crear una vista con un comportamiento de búsqueda diferente que podría ser útil en otros casos de uso, como en la búsqueda de posibles duplicados.

En el libro de trabajo de ejemplo adjunto (que se puede descargar desde el panel derecho de este artículo), se utiliza el conjunto de datos de muestra Superstore para demostrar lo siguiente:
  1. En el panel de datos Nombre del producto a la izquierda, haga clic con el botón derecho y seleccione Crear parámetro…
  2. En el cuadro de diálogo Crear parámetro, siga estos pasos y cierre el cuadro:
    1. Asigne un nombre al parámetro. En este ejemplo, el parámetro tiene el nombre "Buscar nombre del producto".
    2. En Valores permitidos, seleccione Todos.
  3. Haga clic con el botón derecho en Buscar nombre del producto en el panel de datos y marque Mostrar parámetro.
  4. Seleccione Análisis > Crear campo calculado.
  5. En el cuadro de diálogo Campo calculado que se abre, siga estos pasos y después haga clic en Aceptar:
    1. Asigne un nombre al campo calculado. En este ejemplo, el campo calculado tiene el nombre "Filtro de búsqueda de nombre del producto".
    2. En el campo de fórmula, cree un cálculo que tenga como resultado el comportamiento de búsqueda deseado. A continuación, se encuentran dos ejemplos.

      AND: los resultados del filtro deben incluir todos los términos de búsqueda separados por un espacio.
      [Search Product Name]=""
      //show everything if the parameter is blank, aka everything is TRUE
      OR (
          CONTAINS(LOWER([Product Name]),LOWER(SPLIT([Search Product Name]," ",1)))
          //if [Product Name] contains the first typed search term
          AND ( 
              SPLIT([Search Product Name]," ",2) = ""
              //if there isn't a second search term, just return TRUE
              OR CONTAINS(LOWER([Product Name]),LOWER(SPLIT([Search Product Name]," ",2)))
              //check that the second search term is also in [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: los resultados del filtro deben incluir al menos uno de los términos de búsqueda separados por un espacio
      [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)))
      ) //If the 2nd search term is NOT blank and is contained in [Product Name] then return 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. Arrastre Filtro de búsqueda de nombre del producto al estante Filtros.
  7. En el cuadro de diálogo Filtro, seleccione Verdadero y haga clic en Aceptar.
  8. Escriba los términos de búsqueda en el parámetro Buscar nombre del producto y presione Intro para filtrar la vista.

Información adicional

  • El cálculo debe incluir una condición para la cantidad de términos de búsqueda que un usuario puede ingresar. En el ejemplo anterior, si el usuario ingresa más de 5 términos de búsqueda, los términos adicionales se ignorarán.
  • En el caso de algunas fuentes de datos en las que se admiten las expresiones regulares (regex), un cálculo de regex puede detectar de forma automática la cantidad de términos de búsqueda. Sin embargo, las expresiones regex son más complejas y no son compatibles con el Soporte técnico de Tableau. Estos son algunos cálculos de regex que podrían funcionar:
    • [Regex String (OR)]   "(" + REGEXP_REPLACE([Search Product Name], ',', '|') + ")"
    • [Regex String (AND)]   "(?=.*" + REPLACE([Search Product Name], ',', ")(?=.*") + ").*"
    • [Regex Filter]   REGEXP_MATCH([Product Name], [Regex String...])
¿Fue de ayuda este artículo para resolver el problema?