O que é LookML?

LookML é uma linguagem para descrever dimensões, agregações, cálculos e relações de dados em um banco de dados SQL. O Looker usa um modelo escrito no LookML para construir consultas SQL em um banco de dados específico.

Projetos do LookML

Um projeto LookML é uma coleção de modelos, visualizações e arquivos de painel que normalmente são controlados por uma versão em um repositório Git. Os arquivos de modelo contêm informações sobre quais tabelas usar e como elas precisam ser unidas. Os arquivos de visualização contêm informações sobre como calcular informações sobre cada tabela (ou em várias tabelas, se as mesclagens permitirem).

O LookML separa a estrutura do conteúdo. Portanto, a estrutura da consulta (como as tabelas são mescladas) é independente do conteúdo da consulta (as colunas a serem acessadas, campos derivados, funções de agregação para computação e expressões de filtragem a serem aplicadas).

Consultas SQL geradas pelo Looker

Para analistas de dados, o LookML promove o estilo DRY ("don't repetida por conta própria"), o que significa que você escreve expressões SQL uma só vez em um só lugar, e o Looker usa o código repetidamente para gerar consultas SQL ad hoc. Para os usuários comerciais, o resultado final é a capacidade de criar consultas complexas no Looker, com foco apenas no conteúdo de que precisam, não nas complexidades da estrutura SQL.

A figura a seguir mostra uma consulta, criada no Looker, que une valores de várias tabelas: itens de pedidos, produtos e usuários:

Na figura acima, o usuário final não precisa entender expressões SQL para mesclas ou filtragem.

Uma linguagem de dependência para descrever estruturas de dados

LookML é uma linguagem de dependência, como make, em vez de uma linguagem imperativa, como C ou Ruby. O LookML oferece sintaxe e tipos de dados predefinidos para modelagem de dados. A sintaxe do LookML tem uma estrutura clara e fácil de aprender. Não é preciso ter experiência com linguagens de programação. Tudo o que você precisa saber está documentado aqui. O LookML é independente de dialetos SQL específicos e encapsula expressões SQL para dar suporte a qualquer implementação SQL.

Exemplo de código

O exemplo abaixo mostra um projeto LookML mínimo para uma loja de e-commerce que tem um arquivo de modelo e dois arquivos de visualização:

######################################
# FILE: ecommercestore.model.lkml    #
# Define the explores and join logic #
######################################
connection: order_database
include: "*.view.lkml"
explore: orders {
  join: customers {
    sql_on: ${orders.customer_id} = ${customers.id} ;;
  }
}

##########################################################
# FILE: orders.view.lkml                                 #
# Define the dimensions and measures for the ORDERS view #
##########################################################
view: orders {
  dimension: id {
    primary_key: yes
    type: number
    sql: ${TABLE}.id ;;
  }
  dimension: customer_id {      # field: orders.customer_id
    sql: ${TABLE}.customer_id ;;
  }
  dimension: amount {           # field: orders.amount
    type: number
    value_format: "0.00"
    sql: ${TABLE}.amount ;;
  }
  dimension_group: created {                # generates fields:
    type: time                              # orders.created_time, orders.created_date
    timeframes: [time, date, week, month]   # orders.created_week, orders.created_month
    sql: ${TABLE}.created_at ;;
  }
  measure: count {             # field: orders.count
    type: count                # creates a sql COUNT(*)
    drill_fields: [drill_set*] # list of fields to show when someone clicks 'ORDERS Count'
  }
  measure: total_amount {
    type: sum
    sql: ${amount} ;;
  }
  set: drill_set {
    fields: [id, created_time, customers.name, amount]
  }
}

#############################################################
# FILE: customers.view.lkml                                 #
# Define the dimensions and measures for the CUSTOMERS view #
#############################################################
view: customers {
  dimension: id {
    primary_key: yes
    type: number
    sql: ${TABLE}.id ;;
  }
  dimension: city {                    # field: customers.city
    sql: ${TABLE}.city ;;
  }
  dimension: state {                   # field: customers.state
    sql: ${TABLE}.state ;;
  }
  dimension: name {
    sql: CONCAT(${TABLE}.firstname, " ", ${TABLE}.lastname) ;;
  }
  measure: count {             # field: customers.count
    type: count                # creates a sql COUNT(*)
    drill_fields: [drill_set*] # fields to show when someone clicks 'CUSTOMERS Count'
  }
  set: drill_set {                     # set: customers.drill_set
    fields: [id, state, orders.count]  # list of fields to show when someone clicks 'CUSTOMERS Count'
  }
}

LookML diferencia maiúsculas de minúsculas

LookML diferencia maiúsculas de minúsculas. Portanto, verifique se ele corresponde ao caso ao se referir a elementos LookML. O Looker alertará você se você tiver mencionado um elemento que não existe. No exemplo abaixo, o desenvolvedor capitalizou incorretamente "quot;FlightS"." O ambiente de desenvolvimento integrado do Looker mostra um aviso de que e_FLIGHTS_pdt não existe. Além disso, o ambiente de desenvolvimento integrado sugere o nome de uma exploração atual, que é e_flights_pdt:

No entanto, se o projeto contivesse e_FLIGHTS_pdt e e_flights_pdt, o ambiente de desenvolvimento integrado do Looker não poderia corrigi-lo, então você teria que confirmar a versão pretendida. Geralmente, é uma boa ideia usar letras minúsculas ao nomear objetos LookML.

Os nomes das pastas do ambiente de desenvolvimento integrado também diferenciam maiúsculas de minúsculas. É necessário corresponder o uso de maiúsculas e minúsculas nos nomes de pastas sempre que você especificar caminhos de arquivo. Por exemplo, se você tiver uma pasta chamada Views, use letras maiúsculas no parâmetro include. Novamente, o ambiente de desenvolvimento integrado do Looker indicará um erro se as letras maiúsculas e minúsculas não corresponderem a uma pasta existente no seu projeto:

Visão geral dos elementos LookML fundamentais

O diagrama a seguir mostra os elementos LookML fundamentais e suas relações. Para mais detalhes, consulte os termos e conceitos do LookML.