case_sensitive (para modelos)

Esta página se refere ao parâmetro case_sensitive, que faz parte de um modelo.

case_sensitive também pode ser usado como parte de uma Análise, conforme descrito na página de documentação case_sensitive (para Análises).

case_sensitive também pode ser usado como parte de uma dimensão ou campo de filtro, conforme descrito na página de documentação case_sensitive (para campos).

Uso

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 vão ser tratados como sensíveis a maiúsculas e minúsculas para um determinado modelo. Todos os filtros relacionados ao modelo são afetados, incluindo aqueles adicionados na interface de análise detalhada, na interface do painel, em um campo de filtro ou no parâmetro filters de uma métrica.

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

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

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

WHERE name ILIKE 'bob'

A maioria dos dialetos SQL é compatível com case_sensitive. No entanto, se o dialeto SQL não for compatível com o parâmetro case_sensitive, a sensibilidade a maiúsculas e minúsculas vai variar de acordo com a configuração do banco de dados, que geralmente não é sensível a maiúsculas e minúsculas. O suporte a dialetos está listado em case_sensitive não é compatível com alguns dialetos SQL.

Exemplos

Para tornar todos os filtros sensíveis a maiúsculas e minúsculas em um modelo:

connection: "connection_name"
include: "filename_or_pattern"
case_sensitive: yes
explore: explore_name {...}

Para tornar todos os filtros de um modelo sem diferenciação de maiúsculas e minúsculas:

connection: "connection_name"
include: "filename_or_pattern"
case_sensitive: no

Desafios comuns

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

Para que o Looker ofereça suporte a case_sensitive no seu projeto, o dialeto do banco de dados também precisa oferecer. A tabela a seguir mostra quais dialetos são compatíveis com o 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+
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

A DataVirtuality oferece uma camada de dados semânticos que se conecta a vários dialetos de banco de dados. Se o Looker for compatível com case_sensitive para os dialetos subjacentes, ele também será compatível com case_sensitive para o DataVirtuality ao se conectar a esses dialetos.

Informações importantes

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

É possível criar uma pesquisa sensível a maiúsculas e minúsculas no MySQL sem usar o parâmetro case_sensitive. No MySQL, alguns tipos de dados, chamados de strings binárias, armazenam texto como uma série de números. O uso de maiúsculas e minúsculas no texto faz diferença nos números usados. Portanto, se você converter o texto em uma string binária, poderá fazer pesquisas sensíveis a maiúsculas e minúsculas. Exemplo:

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