A camada de modelagem semântica LookML do Looker permite que um analista de dados defina dimensões, agregações, cálculos e relações de dados em um banco de dados SQL. Os modelos da LookML oferecem reutilização de código e integração com o Git. Um modelo LookML bem estruturado permite que os usuários façam a própria exploração e geração de relatórios de dados de autoatendimento.
O modelo LookML é a base de todos os dados solicitados ao Looker, seja pela interface de análise detalhada do Looker na interface do usuário do Looker, uma visualização incorporada no portal da empresa ou outro aplicativo de terceiros, ou um aplicativo personalizado desenvolvido com a API do Looker. A interface Open SQL oferece acesso aos modelos da LookML para qualquer aplicativo de terceiros que seja compatível com a Java Database Connectivity (JDBC). Os aplicativos podem se conectar a um modelo do LookML como se fosse um banco de dados. Assim, os usuários aproveitam todo o trabalho feito pelos analistas de dados no modelo do LookML, usando as ferramentas com que têm mais familiaridade.
Como a interface Open SQL mostra elementos do projeto LookML
Para entender como a interface Open SQL mostra os elementos de um projeto do LookML, é importante saber como os projetos do LookML são estruturados.
Um projeto do LookML é uma coleção de arquivos que descrevem os objetos, as conexões de banco de dados e os elementos da interface do usuário usados para realizar consultas SQL no Looker. Consulte Termos e conceitos do LookML para mais informações. Os seguintes conceitos do projeto LookML estão relacionados à interface Open SQL:
- Um modelo do LookML especifica uma conexão de banco de dados e uma ou mais Análises. A interface Open SQL mostra modelos como esquemas de banco de dados.
- Uma Análise é um agrupamento lógico de uma ou mais visualizações e as relações de junção entre elas. A interface Open SQL mostra as análises detalhadas como tabelas de banco de dados.
- Uma visualização define uma coleção de campos (dimensões e métricas). Uma visualização geralmente é baseada em uma tabela no seu banco de dados ou em uma tabela derivada. As visualizações podem conter as colunas da tabela de banco de dados subjacente, bem como dimensões ou métricas personalizadas que os usuários finais podem precisar. A interface Open SQL mostra a combinação de um nome de visualização e um nome de campo como um nome de coluna de banco de dados. Por exemplo, a dimensão
idna visualizaçãoorder_itemsé apresentada pela interface Open SQL como uma coluna de banco de dados chamadaorder_items.id.
Uma análise detalhada do Looker pode definir relações de junção entre várias visualizações. Como é possível que uma visualização tenha um campo com o mesmo nome de um campo em outra visualização, a interface SQL aberta inclui o nome da visualização e o nome do campo ao fazer referência a uma coluna. Portanto, use este formato para referenciar um nome de coluna ao enviar consultas para a interface SQL aberta:
`<view_name>.<field_name>`
Por exemplo, se houver uma análise detalhada chamada order_items que une uma visualização chamada customer com outra chamada product, e ambas tiverem uma dimensão id, você se referirá aos dois campos id como `customer.id` e `product.id`, respectivamente. Para usar o nome completo com o nome da análise detalhada também, você se referirá aos dois campos como `order_items`.`customer.id` e `order_items`.`product.id`. Consulte Usar crases em torno de identificadores de banco de dados para saber onde colocar as crases ao se referir a identificadores de banco de dados.
Como configurar a interface Open SQL
Para usar a interface Open SQL, siga estas etapas:
- Verifique se os requisitos foram atendidos.
- Faça o download do arquivo de driver JDBC da interface Open SQL.
As seções a seguir descrevem essas etapas.
Requisitos
Os seguintes componentes são necessários para usar a interface Open SQL:
- O aplicativo de terceiros que você quer usar (como Tableau, ThoughtSpot ou um aplicativo personalizado) precisa se conectar à sua instância do Looker. A interface Open SQL pode ser usada com instâncias do Looker hospedadas pelo cliente, desde que a instância do Looker esteja em rede de forma que permita que o aplicativo de terceiros acesse a instância do Looker.
- Um projeto do LookML que usa dados de uma conexão do Google BigQuery. O projeto do LookML precisa ter um arquivo model que especifique uma conexão do Google BigQuery no parâmetro
connection. - Uma função de usuário do Looker que inclui a permissão
exploreno modelo do LookML que você quer acessar com a interface SQL aberta.
Baixar o driver JDBC da interface Open SQL
O driver JDBC da interface SQL aberta do Looker é chamado de avatica-<release_number>-looker.jar. Faça o download da versão mais recente no GitHub em https://github.com/looker-open-source/calcite-avatica/releases.
O driver JDBC espera o seguinte formato de URL:
jdbc:looker:url=https://Looker instance URL
Exemplo:
jdbc:looker:url=https://myInstance.cloud.looker.com
A classe do driver JDBC é:
org.apache.calcite.avatica.remote.looker.LookerDriver
Como autenticar na interface Open SQL
A interface Open SQL é compatível com três métodos de autenticação:
OAuth
Os clientes JDBC que oferecem suporte ao OAuth podem ser configurados para usar o servidor OAuth de uma instância do Looker. Siga as etapas para configurar a autenticação OAuth:
- Use a extensão do API Explorer para registrar o cliente OAuth do JDBC na sua instância do Looker para que ela possa reconhecer solicitações OAuth. Consulte Registrar um aplicativo cliente OAuth para instruções.
- Faça login no Looker com o OAuth para solicitar um token de acesso. Consulte Como fazer login do usuário usando o OAuth para ver um exemplo.
- Use um objeto Properties para transmitir as credenciais do OAuth ao abrir a conexão JDBC com a interface Open SQL.
Confira um exemplo usando DriverManager#getConnection(<String>, <Properties>`):
String access_token = getAccessToken() //uses the Looker OAuth flow to get a token
String URL = "jdbc:looker:url=https://myInstance.cloud.looker.com"
Properties info = new Properties( );
info.put("token", access_token);
Connection conn = DriverManager.getConnection(URL, info);
Gerar um token de acesso usando chaves de API
Em vez de usar o fluxo OAuth padrão para gerar um token de acesso, siga estas etapas para usar a API Looker e gerar um token de acesso que pode ser transmitido ao driver JDBC da interface Open SQL:
- Gere chaves de API para seu usuário do Looker, conforme descrito na página Configurações de admin - Usuários.
Use o endpoint de API
loginpara sua instância do Looker. A resposta inclui um token de acesso no formatoAuthorization: token <access_token>. Confira abaixo um exemplo do comando curl que pode ser usado para fazer essa solicitação:curl -k -d "client_id=<client_id>&client_secret=<client_secret>" https://<looker_host>/login\Transmita o valor
<access_token>da resposta como o token no objeto de propriedades para transmitir as credenciais do OAuth ao abrir a conexão JDBC com a interface Open SQL.
Chaves de API
Você também pode usar chaves de API para autenticar em vez de um nome de usuário e senha. As chaves de API são consideradas menos seguras do que o OAuth e podem estar disponíveis apenas durante a prévia da interface Open SQL. Consulte Chaves de API para saber como criar chaves de API para sua instância do Looker.
Use a parte ID do cliente da chave de API Looker como nome de usuário. Use a parte Chave secreta do cliente para a senha.
Executar consultas com a interface Open SQL
Observe as seguintes diretrizes ao executar consultas com a interface Open SQL:
- A interface Open SQL aceita consultas SQL que seguem a sintaxe do GoogleSQL.
- A interface Open SQL exige crases (`) em torno dos identificadores de modelo, análise detalhada e campo. Consulte Usar crases em identificadores de banco de dados para mais informações e exemplos.
- A interface Open SQL é compatível com a maioria dos operadores do BigQuery.
- Com a interface Open SQL, é necessário designar todas as medidas do LookML incluídas em uma consulta envolvendo a medida (incluindo crases) na função especial
AGGREGATE(). Consulte a seção Especificar medidas do LookML comAGGREGATE().
Limitações do SQL
Observe as seguintes limitações do SQL ao enviar consultas para a interface Open SQL:
- A interface Open SQL é compatível apenas com consultas
SELECT. A interface Open SQL não oferece suporte a instruçõesUPDATEeDELETEnem a outras instruções de linguagem de definição de dados (DDL), linguagem de manipulação de dados (DML) ou linguagem de controle de dados (DCL). - A interface Open SQL não é compatível com o operador
JOIN.- Não é possível enviar uma consulta com o operador
JOINpara a interface Open SQL para criar junções na mesma análise detalhada ou em duas análises detalhadas diferentes. - Se você quiser criar uma junção entre duas tabelas no banco de dados, faça isso no modelo do LookML criando junções em uma ou mais visualizações em uma definição de Análise dentro de um arquivo modelo no projeto do LookML.
- Não é possível enviar uma consulta com o operador
- A interface Open SQL não é compatível com chamadas de função de janela.
- A interface Open SQL não é compatível com subconsultas.
- A interface Open SQL não é compatível com a conversão de fuso horário. Os carimbos de data/hora no modelo LookML terão o tipo
DATETIMEno fuso horário definido nas suas configurações (fuso horário do usuário, fuso horário do aplicativo ou fuso horário do banco de dados). - A interface Open SQL não é compatível com os tipos de dados do BigQuery geography, JSON e time.
Use crase em identificadores de banco de dados
Ao enviar consultas para a interface Open SQL, use crases em torno dos identificadores de esquema, tabela e coluna. Veja como especificar elementos de banco de dados usando crases com termos do Looker:
- schema:
`<model_name>`. - tabela:
`<explore_name>` coluna:
`<view_name>.<field_name>`
Confira um exemplo de formato de instrução SELECT usando esses elementos:
SELECT `view.field`
FROM `model`.`explore`
LIMIT 10;