case_sensitive (para análises)

Esta página se refere ao case_sensitive parâmetro que faz parte de uma análise exploratória.

case_sensitive também pode ser usado como parte de um modelo, descrito na página de documentação do parâmetro case_sensitive (para modelos).

case_sensitive também pode ser usado como parte de uma dimensão, descrita na página de documentação do parâmetro case_sensitive (para campos).

Uso

explore: explore_name {
  case_sensitive: yes
}
Hierarquia
case_sensitive
Valor padrão
yes, se o dialeto do banco de dados for compatível com o parâmetro

Aceita
Um booleano (yes ou no)

Definição

case_sensitive determina se os filtros serão tratados como diferenciação de maiúsculas e minúsculas em uma determinada análise exploratória. Todos os filtros relacionados à análise exploratória são afetados, incluindo aqueles adicionados na interface da análise exploratória, na interface do painel e no filters parâmetro.

Por padrão, case_sensitivity está ativado e os filtros diferenciam maiúsculas de minúsculas. No entanto, alguns dialetos não oferecem suporte a esse parâmetro, conforme descrito na seção case_sensitive não é compatível com alguns dialetos SQL nesta página.

case_sensitive funciona ajustando a cláusula WHERE do SQL gerado pelo Looker. Quando case_sensitive está ativado, os filtros são expressos com = ou LIKE, como:

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

Quando case_sensitive está desativado, os filtros são expressos com ILIKE (ou equivalente), como:

WHERE name ILIKE 'bob'

Exemplos

Deixar todos os filtros com diferenciação de maiúsculas e minúsculas para a análise exploratória Produto:

explore: product {
  case_sensitive: yes
}

Deixar todos os filtros sem diferenciação de maiúsculas e minúsculas para a análise exploratória Cliente:

explore: customer {
  case_sensitive: no
}

Desafios comuns

case_sensitive não é compatível com alguns dialetos SQL

Por padrão, case_sensitivity está ativado e os filtros diferenciam maiúsculas de minúsculas. Se o dialeto SQL não oferecer suporte ao parâmetro case_sensitive, a diferenciação de maiúsculas e minúsculas vai variar de acordo com a configuração do banco de dados, que geralmente não diferencia maiúsculas de minúsculas.

Para que o Looker ofereça suporte a case_sensitive no seu projeto, o dialeto do banco de dados também precisa oferecer suporte a ele. A tabela a seguir mostra quais dialetos oferecem suporte a case_sensitive na versão mais recente do Looker:

Dialeto Compatível?
Actian Avalanche
Amazon Athena
Amazon Aurora MySQL
Amazon Redshift
Amazon Redshift 2.1+
Amazon Redshift Serverless 2.1+
Apache Druid
Apache Druid 0.13.x - 0.17.x
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 AlloyDB for PostgreSQL
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
MongoSQL
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

Informações importantes

É possível criar uma pesquisa com diferenciação de maiúsculas e minúsculas no MySQL

É possível criar uma pesquisa com diferenciação de maiúsculas e minúsculas no MySQL, mesmo que ele não ofereça suporte ao parâmetro case_sensitive. No MySQL, determinados tipos de dados, chamados de strings binárias, armazenam texto como uma série de números. A capitalização do texto faz diferença nos números usados. Portanto, se você converter o texto em uma string binária, poderá fazer pesquisas que diferenciam maiúsculas de minúsculas. Exemplo:

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

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