case_sensitive (para Explorar)

En esta página, se hace referencia al parámetro case_sensitive que forma parte de una Exploración.

case_sensitive también se puede usar como parte de un modelo, como se describe en la página de documentación del parámetro case_sensitive (para modelos).

case_sensitive también se puede usar como parte de una dimensión, como se describe en la página de documentación del parámetro case_sensitive (para campos).

Uso

explore: explore_name {
  case_sensitive: yes
}
Jerarquía
case_sensitive
Valor predeterminado
yes, si el dialecto de la base de datos admite el parámetro

Acepta
Un valor booleano (yes o no)

Definición

case_sensitive determina si los filtros se tratarán como sensibles a mayúsculas y minúsculas en una exploración determinada. Todos los filtros relacionados con la función Explorar se ven afectados, incluidos los que se agregaron en la IU de Explorar, la IU del panel y el parámetro filters.

De forma predeterminada, case_sensitivity está activado y los filtros distinguen mayúsculas de minúsculas. Sin embargo, algunos dialectos no admiten este parámetro, como se describe en la sección case_sensitive no es compatible con algunos dialectos de SQL de esta página.

case_sensitive funciona ajustando la cláusula WHERE del código SQL que genera Looker. Cuando case_sensitive está activado, los filtros se expresan con = o LIKE, como en los siguientes ejemplos:

WHERE name = 'bob'
WHERE name LIKE '%bob%'

Cuando case_sensitive está desactivado, los filtros se expresan con ILIKE (o su equivalente), como se muestra a continuación:

WHERE name ILIKE 'bob'

Ejemplos

Haz que todos los filtros distingan mayúsculas de minúsculas para el Explorador de Producto:

explore: product {
  case_sensitive: yes
}

Haz que todos los filtros no distingan mayúsculas de minúsculas para la exploración Cliente:

explore: customer {
  case_sensitive: no
}

Desafíos habituales

case_sensitive no es compatible con algunos dialectos de SQL

De forma predeterminada, case_sensitivity está activado y los filtros distinguen mayúsculas de minúsculas. Si tu dialecto de SQL no admite el parámetro case_sensitive, la distinción entre mayúsculas y minúsculas variará según la configuración de tu base de datos, que generalmente no distinguirá entre mayúsculas y minúsculas.

Para que Looker admita case_sensitive en tu proyecto de Looker, tu dialecto de base de datos también debe admitirlo. En la siguiente tabla, se muestran los dialectos que admiten case_sensitive en la versión más reciente de Looker:

Dialecto ¿Es compatible?
Actian Avalanche
Amazon Athena
Amazon Aurora MySQL
Amazon Redshift
Amazon Redshift 2.1+
Amazon Redshift Serverless 2.1+
Apache Druid
Apache Druid 0.13+
Apache Druid 0.18+
Apache Hive 2.3+
Apache Hive 3.1.2+
Apache Spark 3+
ClickHouse
Cloudera Impala 3.1+
Cloudera Impala 3.1+ with Native Driver
Cloudera Impala with Native Driver
DataVirtuality
Databricks
Denodo 7
Denodo 8 & 9
Dremio
Dremio 11+
Exasol
Google BigQuery Legacy SQL
Google BigQuery Standard SQL
Google Cloud PostgreSQL
Google Cloud SQL
Google Spanner
Greenplum
HyperSQL
IBM Netezza
MariaDB
Microsoft Azure PostgreSQL
Microsoft Azure SQL Database
Microsoft Azure Synapse Analytics
Microsoft SQL Server 2008+
Microsoft SQL Server 2012+
Microsoft SQL Server 2016
Microsoft SQL Server 2017+
MongoBI
MySQL
MySQL 8.0.12+
Oracle
Oracle ADWC
PostgreSQL 9.5+
PostgreSQL pre-9.5
PrestoDB
PrestoSQL
SAP HANA
SAP HANA 2+
SingleStore
SingleStore 7+
Snowflake
Teradata
Trino
Vector
Vertica

Información importante

Puedes crear una búsqueda que distinga mayúsculas de minúsculas en MySQL

Es posible crear una búsqueda que distinga mayúsculas de minúsculas en MySQL, aunque MySQL no admite el parámetro case_sensitive. En MySQL, ciertos tipos de datos, llamados cadenas binarias, almacenan texto como una serie de números. El uso de mayúsculas y minúsculas en el texto influye en los números que se utilizan. Por lo tanto, si conviertes tu texto en una cadena binaria, puedes realizar búsquedas que distinguen entre mayúsculas y minúsculas. Por ejemplo:

dimension: will_NOT_be_case_sensitive {
  sql: ${TABLE}.something ;;
}

dimension: will_be_case_sensitive {
  sql: CAST(${TABLE}.something AS BINARY) ;;
}