Was ist LookML?

LookML ist eine Sprache zur Beschreibung von Dimensionen, Summen, Berechnungen und Datenbeziehungen in einer SQL-Datenbank. Looker verwendet ein in LookML erstelltes Modell, um SQL-Abfragen für eine bestimmte Datenbank zu strukturieren.

LookML-Projekte

Ein LookML-Projekt ist eine Sammlung von Modell-, Ansichts- und Dashboard-Dateien, die in der Regel gemeinsam über ein Git-Repository versioniert werden. Die Modelldateien enthalten Informationen darüber, welche Tabellen zu verwenden sind und wie sie verknüpft werden sollen. Die Ansichtsdateien enthalten Angaben dazu, wie Informationen zu den einzelnen Tabellen (oder für mehrere Tabellen, wenn die Joins dies zulassen) berechnet werden.

LookML trennt Struktur von Inhalt. Das heißt, die Abfragestruktur (wie Tabellen verbunden sind) ist vom Abfrageinhalt unabhängig (aufzurufende Spalten, abgeleitete Felder, zu berechnende Summenfunktionen und anzuwendende Filterausdrücke).

Von Looker generierte SQL-Abfragen

Für Datenanalysten unterstützt LookML den DRY-Stil (&t; nicht wiederholt). Dies bedeutet, dass Sie SQL-Ausdrücke einmal an einem Ort schreiben und Looker den Code wiederholt verwendet, um Ad-hoc-SQL-Abfragen zu generieren. Für geschäftliche Benutzer ist das Endergebnis die Fähigkeit, komplexe Abfragen in Looker zu erstellen und sich dabei nur auf den tatsächlich benötigten Inhalt zu konzentrieren, nicht auf die Komplexität der SQL-Struktur.

Die folgende Abbildung zeigt eine in Looker erstellte Abfrage, die Werte aus mehreren Tabellen verbindet – Orders Items, Products und Users:

In der Abbildung oben muss der Endnutzer die SQL-Ausdrücke für Joins oder Filter nicht verstehen.

Eine Abhängigkeitssprache zur Beschreibung von Datenstrukturen

LookML ist eine Abhängigkeitssprache wie make, im Gegensatz zu einer imperativen Sprache wie C oder Ruby. LookML stellt vordefinierte Datentypen und Syntax für die Datenmodellierung bereit. Die LookML-Syntax weist eine klare und leicht zu erlernende Struktur auf. Sie benötigen keine Vorkenntnisse in Programmiersprachen. Alles, was Sie dazu wissen müssen, ist hier dokumentiert. LookML ist von bestimmten SQL-Dialekten unabhängig und enthält alle wesentlichen SQL-Ausdrücke für jede SQL-Implementierung.

Codebeispiel

Das unten stehende Beispiel zeigt ein minimales LookML-Projekt für einen E-Commerce-Store mit einer Modelldatei und zwei Ansichtsdateien:

######################################
# 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'
  }
}

Bei LookML wird die Groß-/Kleinschreibung beachtet

Beachten Sie beim Verweisen auf LookML-Elemente, dass bei LookML die Groß-/Kleinschreibung berücksichtigt wird. Sie erhalten eine Warnung von Looker, wenn Sie auf ein Element verwiesen haben, das nicht vorhanden ist. Im folgenden Beispiel hat der Entwickler FALSCH & FERTIG geschrieben. In der Looker-IDE wird eine Warnung angezeigt, dass e_FLIGHTS_pdt nicht vorhanden ist. Außerdem schlägt die IDE den Namen einer vorhandenen explorativen Datenanalyse vor, die e_flights_pdt lautet:

Wenn Ihr Projekt jedoch sowohl e_FLIGHTS_pdt als auch e_flights_pdt enthält, kann die Looker-IDE Sie nicht korrigieren, sodass Sie sich sicher sein sollten, welche Version Sie beabsichtigt haben. Generell empfiehlt es sich, beim Benennen von LookML-Objekten kleingeschrieben zu bleiben.

Bei IDE-Ordnernamen wird ebenfalls zwischen Groß- und Kleinschreibung unterschieden. Bei der Angabe von Dateipfaden müssen Sie stets die richtige Groß-/Kleinschreibung von Ordnernamen verwenden. Wenn Sie beispielsweise einen Ordner mit dem Namen Views haben, müssen Sie dieselbe Groß- und Kleinschreibung im Parameter include verwenden. Die Looker-IDE gibt einen Fehler zurück, wenn die Groß- und Kleinschreibung nicht mit einem vorhandenen Ordner in Ihrem Projekt übereinstimmt:

Überblick über grundlegende LookML-Elemente

Im folgenden Diagramm sind grundlegende LookML-Elemente und ihre Beziehungen dargestellt. Weitere Informationen finden Sie unter LookML-Begriffe und -Konzepte.