Looker āđāļĨāļ° LookML āļ›āļĩ 2026: āļ„āļđāđˆāļĄāļ·āļ­ Business Intelligence āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

āļ„āļđāđˆāļĄāļ·āļ­ LookML āļ‰āļšāļąāļšāļŠāļĄāļšāļđāļĢāļ“āđŒāļŠāļģāļŦāļĢāļąāļš data analyst āđƒāļ™āļ›āļĩ 2026 āđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰ semantic layer āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ‚āļĄāđ€āļ”āļĨāļ‚āđ‰āļ­āļĄāļđāļĨ derived tables āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ Looker āļ—āļĩāđˆāļžāļšāļšāđˆāļ­āļĒ

Looker āđāļĨāļ° LookML Business Intelligence Interview 2026

āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ Looker āļĄāļąāļāļĄāļļāđˆāļ‡āđ€āļ™āđ‰āļ™āđ„āļ›āļ—āļĩāđˆāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ‚āļĄāđ€āļ”āļĨ LookML āļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāļŠāļģāļĢāļ§āļˆāļ‚āđ‰āļ­āļĄāļđāļĨ āđāļĨāļ°āļ§āļīāļ˜āļĩāļ—āļĩāđˆ semantic layer āđāļ›āļĨāļ‡āļ•āļĢāļĢāļāļ°āļ—āļēāļ‡āļ˜āļļāļĢāļāļīāļˆāđƒāļŦāđ‰āđ€āļ›āđ‡āļ™āļ™āļīāļĒāļēāļĄāļ—āļĩāđˆāļŠāļēāļĄāļēāļĢāļ–āļ™āļģāļāļĨāļąāļšāļĄāļēāđƒāļŠāđ‰āđƒāļŦāļĄāđˆāđ„āļ”āđ‰ āļ„āļđāđˆāļĄāļ·āļ­āļ™āļĩāđ‰āļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāđāļ™āļ§āļ„āļīāļ”āļŦāļĨāļąāļāļ‚āļ­āļ‡ LookML āļĢāļđāļ›āđāļšāļšāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļˆāļĢāļīāļ‡ āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļ—āļĩāđˆ data analyst āļ•āđ‰āļ­āļ‡āđ€āļœāļŠāļīāļāđ€āļĄāļ·āđˆāļ­āļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļŠāļģāļŦāļĢāļąāļšāļ•āļģāđāļŦāļ™āđˆāļ‡āļ—āļĩāđˆāđ€āļ™āđ‰āļ™ Looker āđƒāļ™āļ›āļĩ 2026

āđāļ™āļ§āļ„āļīāļ”āļŠāļģāļ„āļąāļāļ‚āļ­āļ‡ LookML

LookML āđāļĒāļāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ‚āļĄāđ€āļ”āļĨāļ‚āđ‰āļ­āļĄāļđāļĨāļ­āļ­āļāļˆāļēāļāļāļēāļĢāļŠāļģāļĢāļ§āļˆāļ‚āđ‰āļ­āļĄāļđāļĨ āļ™āļąāļāļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒāļāļģāļŦāļ™āļ” dimensions measures āđāļĨāļ° relationships āļ„āļĢāļąāđ‰āļ‡āđ€āļ”āļĩāļĒāļ§āđƒāļ™ model layer āļˆāļēāļāļ™āļąāđ‰āļ™āļœāļđāđ‰āđƒāļŠāđ‰āļ—āļēāļ‡āļ˜āļļāļĢāļāļīāļˆāļŠāļēāļĄāļēāļĢāļ– query āļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļ”āđ‰āđ‚āļ”āļĒāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āđ€āļ‚āļĩāļĒāļ™ SQL—āļĢāļđāļ›āđāļšāļšāļ™āļĩāđ‰āļ›āļĢāļēāļāļāđƒāļ™āļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ—āļēāļ‡āđ€āļ—āļ„āļ™āļīāļ„ Looker āđ€āļāļ·āļ­āļšāļ—āļļāļāļ„āļĢāļąāđ‰āļ‡

āļ—āļģāļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāđƒāļˆ Semantic Layer āļ‚āļ­āļ‡ LookML

LookML āļ—āļģāļŦāļ™āđ‰āļēāļ—āļĩāđˆāđ€āļ›āđ‡āļ™āļŠāļąāđ‰āļ™āļāļēāļĢāđāļ›āļĨāļĢāļ°āļŦāļ§āđˆāļēāļ‡āļ•āļēāļĢāļēāļ‡āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ”āļīāļšāđāļĨāļ° metrics āļ—āļĩāđˆāđ€āļ›āđ‡āļ™āļĄāļīāļ•āļĢāļāļąāļšāļ˜āļļāļĢāļāļīāļˆ āđāļ—āļ™āļ—āļĩāđˆāļˆāļ°āđ€āļ‚āļĩāļĒāļ™ SQL joins āļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™āļ‹āđ‰āļģāđāļĨāđ‰āļ§āļ‹āđ‰āļģāđ€āļĨāđˆāļē āļ™āļąāļāļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒāļāļģāļŦāļ™āļ” relationships āđƒāļ™āđ„āļŸāļĨāđŒāđ‚āļĄāđ€āļ”āļĨāļ—āļĩāđˆ Looker āļ„āļ­āļĄāđ„āļžāļĨāđŒāđ€āļ›āđ‡āļ™ queries āļ—āļĩāđˆāļ–āļđāļāļ›āļĢāļąāļšāđƒāļŦāđ‰āđ€āļŦāļĄāļēāļ°āļŠāļĄ

Semantic layer āđāļāđ‰āļ›āļąāļāļŦāļēāļŠāļēāļĄāļ›āļĢāļ°āļāļēāļĢāļ—āļĩāđˆāļœāļđāđ‰āļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļĄāļąāļāļ–āļēāļĄāđ€āļāļĩāđˆāļĒāļ§āļāļąāļš:

  • āļ„āļ§āļēāļĄāļŠāļ­āļ”āļ„āļĨāđ‰āļ­āļ‡: āļœāļđāđ‰āđƒāļŠāđ‰āļ—āļļāļāļ„āļ™āđ€āļŦāđ‡āļ™āļ™āļīāļĒāļēāļĄ metric āđ€āļ”āļĩāļĒāļ§āļāļąāļ™
  • āļāļēāļĢāļ™āļģāļāļĨāļąāļšāļĄāļēāđƒāļŠāđ‰āđƒāļŦāļĄāđˆ: Dimensions āđāļĨāļ° measures āļĄāļĩāļ­āļĒāļđāđˆāļ„āļĢāļąāđ‰āļ‡āđ€āļ”āļĩāļĒāļ§ āļ­āđ‰āļēāļ‡āļ­āļīāļ‡āđ„āļ”āđ‰āļ—āļļāļāļ—āļĩāđˆ
  • āļāļēāļĢāļāļģāļāļąāļšāļ”āļđāđāļĨ: āļāļēāļĢāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āđāļžāļĢāđˆāļāļĢāļ°āļˆāļēāļĒāđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļīāđ„āļ›āļĒāļąāļ‡ dashboards āļ—āļąāđ‰āļ‡āļŦāļĄāļ”

āđ€āļ­āļāļŠāļēāļĢ Looker āļ‚āļ­āļ‡ Google Cloud āļ­āļ˜āļīāļšāļēāļĒ LookML āļ§āđˆāļēāđ€āļ›āđ‡āļ™āļ āļēāļĐāļēāļ—āļĩāđˆ "dependency-aware"—āđ€āļĄāļ·āđˆāļ­āļ™āļīāļĒāļēāļĄāļŦāļ™āļķāđˆāļ‡āđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡ āļāļēāļĢāļ­āđ‰āļēāļ‡āļ­āļīāļ‡ downstream āļˆāļ°āļ­āļąāļ›āđ€āļ”āļ•āđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī āļ„āļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļ–āđƒāļ™āļāļēāļĢāļĢāļąāļšāļĢāļđāđ‰ dependency āļ™āļĩāđ‰āļāļĨāļēāļĒāđ€āļ›āđ‡āļ™āļŠāļīāđˆāļ‡āļŠāļģāļ„āļąāļāđ€āļĄāļ·āđˆāļ­āļ”āļđāđāļĨāđ‚āļĄāđ€āļ”āļĨāļĢāļ°āļ”āļąāļšāļ­āļ‡āļ„āđŒāļāļĢ

Views āđāļĨāļ° Explores āļ‚āļ­āļ‡ LookML: āļ­āļ‡āļ„āđŒāļ›āļĢāļ°āļāļ­āļšāļžāļ·āđ‰āļ™āļāļēāļ™

Views āļāļģāļŦāļ™āļ”āļ„āļ­āļĨāļąāļĄāļ™āđŒāļ—āļĩāđˆāļĄāļĩāļˆāļēāļāļ•āļēāļĢāļēāļ‡āđ€āļ”āļĩāļĒāļ§āļŦāļĢāļ·āļ­ derived table Explores āļĢāļ§āļĄ views āļœāđˆāļēāļ™ joins āđāļĨāļ°āđāļŠāļ”āļ‡āđƒāļŦāđ‰āļœāļđāđ‰āđƒāļŠāđ‰āļ—āļēāļ‡āļ˜āļļāļĢāļāļīāļˆāđ€āļŦāđ‡āļ™

lookml
# views/orders.view.lkml
view: orders {
  sql_table_name: `analytics.orders` ;;

  dimension: order_id {
    primary_key: yes
    type: number
    sql: ${TABLE}.order_id ;;
  }

  dimension_group: created {
    type: time
    timeframes: [raw, date, week, month, quarter, year]
    sql: ${TABLE}.created_at ;;
  }

  dimension: status {
    type: string
    sql: ${TABLE}.status ;;
  }

  measure: total_orders {
    type: count
    drill_fields: [order_id, created_date, status]
  }

  measure: total_revenue {
    type: sum
    sql: ${TABLE}.amount ;;
    value_format_name: usd
  }
}

āļāļēāļĢāļ›āļĢāļ°āļāļēāļĻ dimension_group āļŠāļĢāđ‰āļēāļ‡ dimensions āļŦāļĨāļēāļĒāļ•āļąāļ§āļ•āļēāļĄāđ€āļ§āļĨāļēāļˆāļēāļāļ„āļ­āļĨāļąāļĄāļ™āđŒ timestamp āđ€āļ”āļĩāļĒāļ§ āļœāļđāđ‰āļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļĄāļąāļāļ‚āļ­āđƒāļŦāđ‰āļœāļđāđ‰āļŠāļĄāļąāļ„āļĢāļ­āļ˜āļīāļšāļēāļĒāļ§āđˆāļēāļ—āļģāđ„āļĄāļĢāļđāļ›āđāļšāļšāļ™āļĩāđ‰āļĨāļ”āļāļēāļĢāļ—āļģāļ‹āđ‰āļģāđ‚āļ„āđ‰āļ”āđāļĨāļ°āļĢāļąāļšāļ›āļĢāļ°āļāļąāļ™āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ§āļąāļ™āļ—āļĩāđˆāļ—āļĩāđˆāļŠāļ­āļ”āļ„āļĨāđ‰āļ­āļ‡āļāļąāļ™āļ—āļąāđˆāļ§āļ—āļąāđ‰āļ‡āđ‚āļĄāđ€āļ”āļĨ

āļžāļēāļĢāļēāļĄāļīāđ€āļ•āļ­āļĢāđŒ drill_fields āļāļģāļŦāļ™āļ”āļŠāļīāđˆāļ‡āļ—āļĩāđˆāļœāļđāđ‰āđƒāļŠāđ‰āđ€āļŦāđ‡āļ™āđ€āļĄāļ·āđˆāļ­āļ„āļĨāļīāļāļ—āļĩāđˆāļ„āđˆāļē measure—āļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ” UX āļ—āļĩāđˆāđāļŠāļ”āļ‡āļ–āļķāļ‡āļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāđƒāļˆāļ§āđˆāļēāļ™āļąāļāļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒāđ‚āļ•āđ‰āļ•āļ­āļšāļāļąāļš Looker āļ­āļĒāđˆāļēāļ‡āđ„āļĢāļˆāļĢāļīāļ‡āđ†

Joins āđāļĨāļ° Relationships āđƒāļ™ LookML

Explores āļāļģāļŦāļ™āļ”āļ§āļīāļ˜āļĩāļ—āļĩāđˆ views āđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­āļœāđˆāļēāļ™ SQL joins āļ›āļĢāļ°āđ€āļ āļ— join āđāļĨāļ°āļāļēāļĢāļ›āļĢāļ°āļāļēāļĻ relationship āļŠāđˆāļ‡āļœāļĨāđ‚āļ”āļĒāļ•āļĢāļ‡āļ•āđˆāļ­āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž query āđāļĨāļ°āļ„āļ§āļēāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡āļ‚āļ­āļ‡ aggregation

lookml
# models/ecommerce.model.lkml
explore: orders {
  label: "Order Analysis"
  description: "All orders with customer and product details"

  join: customers {
    type: left_outer
    sql_on: ${orders.customer_id} = ${customers.customer_id} ;;
    relationship: many_to_one
  }

  join: order_items {
    type: left_outer
    sql_on: ${orders.order_id} = ${order_items.order_id} ;;
    relationship: one_to_many
  }

  join: products {
    type: left_outer
    sql_on: ${order_items.product_id} = ${products.product_id} ;;
    relationship: many_to_one
  }
}

āļžāļēāļĢāļēāļĄāļīāđ€āļ•āļ­āļĢāđŒ relationship āļšāļ­āļ Looker āļ§āļīāļ˜āļĩāļˆāļąāļ”āļāļēāļĢ aggregations Relationship one_to_many āļŦāļĄāļēāļĒāļ„āļ§āļēāļĄāļ§āđˆāļē measure āļ„āļ§āļĢ aggregate āļ—āļĩāđˆāļāļąāđˆāļ‡ "one" āđ€āļžāļ·āđˆāļ­āļŦāļĨāļĩāļāđ€āļĨāļĩāđˆāļĒāļ‡āļāļēāļĢāļ™āļąāļšāļ‹āđ‰āļģ āļāļēāļĢāļ—āļģāļœāļīāļ”āļžāļĨāļēāļ”āđƒāļ™āđ€āļĢāļ·āđˆāļ­āļ‡āļ™āļĩāđ‰āļ—āļģāđƒāļŦāđ‰āļĒāļ­āļ”āļĢāļ§āļĄāđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡â€”āļŠāļ–āļēāļ™āļāļēāļĢāļ“āđŒ debugging āļ—āļĩāđˆāļžāļšāļšāđˆāļ­āļĒāđƒāļ™āļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

Symmetric aggregates āđāļāđ‰āļ›āļąāļāļŦāļē fanout āđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī āđ€āļĄāļ·āđˆāļ­ join āļ•āļēāļĢāļēāļ‡āļ—āļĩāđˆāļĄāļĩ granularity āļ•āđˆāļēāļ‡āļāļąāļ™ Looker āļŠāļĢāđ‰āļēāļ‡ SQL āļ—āļĩāđˆāļ„āļģāļ™āļ§āļ“ measures āļ—āļĩāđˆāļĢāļ°āļ”āļąāļšāļ—āļĩāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡āļāđˆāļ­āļ™āļ—āļģ join

Derived Tables āļŠāļģāļŦāļĢāļąāļš Transformations āļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™

Derived tables āļŠāļĢāđ‰āļēāļ‡āļ•āļēāļĢāļēāļ‡āđ€āļŠāļĄāļ·āļ­āļ™āļˆāļēāļ SQL queries āļŦāļĢāļ·āļ­ aggregations āļ—āļĩāđˆāļāļģāļŦāļ™āļ”āđƒāļ™ LookML Native derived tables āđƒāļŠāđ‰āđ„āļ§āļĒāļēāļāļĢāļ“āđŒ LookML; SQL-derived tables āļāļąāļ‡ SQL āļ”āļīāļš

lookml
# views/customer_order_facts.view.lkml
view: customer_order_facts {
  derived_table: {
    explore_source: orders {
      column: customer_id { field: customers.customer_id }
      column: first_order_date { field: orders.created_date }
      column: lifetime_orders { field: orders.total_orders }
      column: lifetime_revenue { field: orders.total_revenue }
      derived_column: customer_tenure_days {
        sql: DATE_DIFF(CURRENT_DATE(), first_order_date, DAY) ;;
      }
    }
    datagroup_trigger: daily_etl
    indexes: ["customer_id"]
  }

  dimension: customer_id {
    primary_key: yes
    hidden: yes
    type: number
  }

  dimension: first_order_date {
    type: date
    sql: ${TABLE}.first_order_date ;;
  }

  dimension: lifetime_orders {
    type: number
    sql: ${TABLE}.lifetime_orders ;;
  }

  dimension: customer_tier {
    type: string
    sql: CASE
      WHEN ${lifetime_orders} >= 10 THEN 'Gold'
      WHEN ${lifetime_orders} >= 5 THEN 'Silver'
      ELSE 'Bronze'
    END ;;
  }
}

datagroup_trigger āļ„āļ§āļšāļ„āļļāļĄāđ€āļ§āļĨāļēāļ—āļĩāđˆ Looker āļŠāļĢāđ‰āļēāļ‡ derived table āđƒāļŦāļĄāđˆâ€”āđ‚āļ”āļĒāļ—āļąāđˆāļ§āđ„āļ›āļŦāļĨāļąāļ‡āļˆāļēāļ ETL upstream āđ€āļŠāļĢāđ‡āļˆāļŠāļīāđ‰āļ™ Persistent derived tables (PDTs) āļ–āļđāļ materialize āđƒāļ™āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ āđāļĨāļāļžāļ·āđ‰āļ™āļ—āļĩāđˆāļˆāļąāļ”āđ€āļāđ‡āļšāļāļąāļšāļ„āļ§āļēāļĄāđ€āļĢāđ‡āļ§ query

āļœāļđāđ‰āļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ–āļēāļĄāđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļāļĨāļĒāļļāļ—āļ˜āđŒ rebuild PDT āļžāļēāļĢāļēāļĄāļīāđ€āļ•āļ­āļĢāđŒ sql_trigger_value āļĢāļąāļ™ SQL query; āđ€āļĄāļ·āđˆāļ­āļœāļĨāļĨāļąāļžāļ˜āđŒāđ€āļ›āļĨāļĩāđˆāļĒāļ™ Looker āļˆāļ°āļŠāļĢāđ‰āļēāļ‡ PDT āđƒāļŦāļĄāđˆ āļĢāļđāļ›āđāļšāļšāļ—āļĩāđˆāļžāļšāļšāđˆāļ­āļĒāđƒāļŠāđ‰ SELECT MAX(updated_at) FROM source_table

āļžāļĢāđ‰āļ­āļĄāļ—āļĩāđˆāļˆāļ°āļžāļīāļŠāļīāļ•āļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ Data Analytics āđāļĨāđ‰āļ§āļŦāļĢāļ·āļ­āļĒāļąāļ‡āļ„āļĢāļąāļš?

āļāļķāļāļāļ™āļ”āđ‰āļ§āļĒāļ•āļąāļ§āļˆāļģāļĨāļ­āļ‡āđāļšāļšāđ‚āļ•āđ‰āļ•āļ­āļš, flashcards āđāļĨāļ°āđāļšāļšāļ—āļ”āļŠāļ­āļšāđ€āļ—āļ„āļ™āļīāļ„āļ„āļĢāļąāļš

āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ Looker: āļāļēāļĢāļ­āļ­āļāđāļšāļšāđ‚āļĄāđ€āļ”āļĨ

āļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ—āļēāļ‡āđ€āļ—āļ„āļ™āļīāļ„āļŠāļģāļŦāļĢāļąāļšāļ•āļģāđāļŦāļ™āđˆāļ‡ Looker āđ€āļ™āđ‰āļ™āļŦāļ™āļąāļāļ—āļĩāđˆāļāļēāļĢāļ•āļąāļ”āļŠāļīāļ™āđƒāļˆāđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ‚āļĄāđ€āļ”āļĨ LookML āļ„āļģāļ–āļēāļĄāđ€āļŦāļĨāđˆāļēāļ™āļĩāđ‰āļ›āļĢāļ°āđ€āļĄāļīāļ™āļ§āđˆāļēāļœāļđāđ‰āļŠāļĄāļąāļ„āļĢāđ€āļ‚āđ‰āļēāđƒāļˆ tradeoffs āļĢāļ°āļŦāļ§āđˆāļēāļ‡āļ„āļ§āļēāļĄāļĒāļ·āļ”āļŦāļĒāļļāđˆāļ™āđāļĨāļ°āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļŦāļĢāļ·āļ­āđ„āļĄāđˆ

āļ„āļģāļ–āļēāļĄ: āļˆāļ°āļŠāļĢāđ‰āļēāļ‡āđ‚āļĄāđ€āļ”āļĨ fact table āļ—āļĩāđˆāļĄāļĩāļŦāļĨāļēāļĒ date dimensions āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āđ„āļĢ?

āļ„āļģāļ•āļ­āļšāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡āļāļąāļšāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ dimension groups āđāļĒāļāļāļąāļ™āđāļĨāļ°āļ•āļąāđ‰āļ‡āļŠāļ·āđˆāļ­ joins āļ­āļĒāđˆāļēāļ‡āļŠāļąāļ”āđ€āļˆāļ™:

lookml
# views/orders.view.lkml
view: orders {
  dimension_group: order_created {
    type: time
    timeframes: [date, week, month, year]
    sql: ${TABLE}.created_at ;;
  }

  dimension_group: order_shipped {
    type: time
    timeframes: [date, week, month, year]
    sql: ${TABLE}.shipped_at ;;
  }

  dimension: days_to_ship {
    type: number
    sql: DATE_DIFF(${order_shipped_date}, ${order_created_date}, DAY) ;;
  }
}

āļ„āļģāļ–āļēāļĄ: āđ€āļĄāļ·āđˆāļ­āđƒāļ”āļ„āļ§āļĢāđƒāļŠāđ‰ PDT āđ€āļ—āļĩāļĒāļšāļāļąāļš dbt model?

PDTs āđ€āļŦāļĄāļēāļ°āļŠāļģāļŦāļĢāļąāļš aggregations āđ€āļ‰āļžāļēāļ° Looker āļ—āļĩāđˆāđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡āļ•āļēāļĄāđ‚āļĄāđ€āļ”āļĨ Transformations dbt āđ€āļŦāļĄāļēāļ°āļŠāļģāļŦāļĢāļąāļš datasets āļ—āļĩāđˆāđāļŠāļĢāđŒāđāļĨāļ°āđƒāļŠāđ‰āđ‚āļ”āļĒāļŦāļĨāļēāļĒ tools āļĢāļđāļ›āđāļšāļš āļāļēāļĢāļĢāļ§āļĄ dbt + Looker āđƒāļŠāđ‰ dbt āļŠāļģāļŦāļĢāļąāļš transformations āļŦāļ™āļąāļāđāļĨāļ° PDTs āļŠāļģāļŦāļĢāļąāļš metrics āļ‚āļąāđ‰āļ™āļŠāļļāļ”āļ—āđ‰āļēāļĒ

āļ„āļģāļ–āļēāļĄ: āļˆāļ°āļˆāļąāļ”āļāļēāļĢ slowly changing dimensions āđƒāļ™ LookML āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āđ„āļĢ?

āļ•āļēāļĢāļēāļ‡ SCD Type 2 āļ•āđ‰āļ­āļ‡āļāļēāļĢāļāļēāļĢāļāļĢāļ­āļ‡āđ„āļ›āļĒāļąāļ‡ record āļ›āļąāļˆāļˆāļļāļšāļąāļ™ āđ€āļžāļīāđˆāļĄ dimension āļ—āļĩāđˆāļāļĢāļ­āļ‡āđāļ–āļ§āđāļĨāļ°āđƒāļŠāđ‰ always_filter āđƒāļ™ explore:

lookml
# views/customer_history.view.lkml
view: customer_history {
  dimension: is_current {
    type: yesno
    sql: ${TABLE}.end_date IS NULL ;;
  }
}

# In the explore
explore: orders {
  join: customer_history {
    sql_on: ${orders.customer_id} = ${customer_history.customer_id} ;;
    relationship: many_to_one
  }
  always_filter: {
    filters: [customer_history.is_current: "Yes"]
  }
}

Liquid Templating āļŠāļģāļŦāļĢāļąāļšāđ‚āļĄāđ€āļ”āļĨāđāļšāļšāđ„āļ”āļ™āļēāļĄāļīāļ

Liquid templating āđ€āļ›āļīāļ”āđƒāļŠāđ‰āļ‡āļēāļ™āļ•āļĢāļĢāļāļ°āđ€āļ‡āļ·āđˆāļ­āļ™āđ„āļ‚āđƒāļ™āļ™āļīāļĒāļēāļĄ LookML User attributes āļ„āđˆāļē filter āđāļĨāļ° permissions āļŠāļēāļĄāļēāļĢāļ–āđāļāđ‰āđ„āļ‚ SQL āļ—āļĩāđˆāļŠāļĢāđ‰āļēāļ‡āļ‚āļķāđ‰āļ™

lookml
# views/regional_orders.view.lkml
view: regional_orders {
  sql_table_name: 
    {% if _user_attributes['region'] == 'EMEA' %}
      analytics.orders_emea
    {% elsif _user_attributes['region'] == 'APAC' %}
      analytics.orders_apac
    {% else %}
      analytics.orders_us
    {% endif %}
  ;;

  dimension: amount {
    type: number
    sql: ${TABLE}.amount ;;
    html: 
      {% if value > 1000 %}
        <span style="color: green;">{{ rendered_value }}</span>
      {% else %}
        {{ rendered_value }}
      {% endif %}
    ;;
  }
}

User attributes āļ‚āļąāļšāđ€āļ„āļĨāļ·āđˆāļ­āļ™ row-level security āđāļĨāļ°āļāļēāļĢāđ€āļĨāļ·āļ­āļāļ•āļēāļĢāļēāļ‡āđāļšāļšāđ„āļ”āļ™āļēāļĄāļīāļ Object _user_attributes āđƒāļŦāđ‰āļāļēāļĢāđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļ„āđˆāļēāļ—āļĩāđˆāļāļģāļŦāļ™āļ”āđƒāļ™āđāļœāļ‡āļœāļđāđ‰āļ”āļđāđāļĨāļĢāļ°āļšāļš Looker

āļžāļēāļĢāļēāļĄāļīāđ€āļ•āļ­āļĢāđŒ html āļ›āļĢāļąāļšāđāļ•āđˆāļ‡āļ§āļīāļ˜āļĩāļāļēāļĢāđāļŠāļ”āļ‡āļ„āđˆāļēāđƒāļ™āļ•āļēāļĢāļēāļ‡āđāļĨāļ° visualizations—conditional formatting āļ—āļĩāđˆāļ›āļĢāļēāļāļāļšāđˆāļ­āļĒāđƒāļ™āđ‚āļ›āļĢāđ€āļˆāļāļ•āđŒ take-home āļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

āļĢāļđāļ›āđāļšāļšāļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāđƒāļŦāđ‰āđ€āļŦāļĄāļēāļ°āļŠāļĄ

Looker āļŠāļĢāđ‰āļēāļ‡ SQL āļˆāļēāļāļ™āļīāļĒāļēāļĄ LookML āļāļēāļĢāļ›āļĢāļąāļšāđƒāļŦāđ‰āđ€āļŦāļĄāļēāļ°āļŠāļĄāļ•āđ‰āļ­āļ‡āđ€āļ‚āđ‰āļēāđƒāļˆāļ—āļąāđ‰āļ‡ model layer āđāļĨāļ°āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļžāļ·āđ‰āļ™āļāļēāļ™

Aggregate awareness pre-compute aggregations āļ—āļąāđˆāļ§āđ„āļ›āļ—āļĩāđˆāļĢāļ°āļ”āļąāļš grain āļ•āđˆāļēāļ‡āđ†:

lookml
# views/orders.view.lkml
view: orders {
  aggregate_table: daily_orders {
    query: {
      dimensions: [created_date]
      measures: [total_orders, total_revenue]
    }
    materialization: {
      datagroup_trigger: daily_etl
    }
  }

  aggregate_table: monthly_orders {
    query: {
      dimensions: [created_month]
      measures: [total_orders, total_revenue]
    }
    materialization: {
      datagroup_trigger: daily_etl
    }
  }
}

Looker āļāļģāļŦāļ™āļ”āđ€āļŠāđ‰āļ™āļ—āļēāļ‡ queries āđ„āļ›āļĒāļąāļ‡ aggregate table āļ—āļĩāđˆāđ€āļĨāđ‡āļāļ—āļĩāđˆāļŠāļļāļ”āļ—āļĩāđˆāļ•āļ­āļšāļŠāļ™āļ­āļ‡āļ„āļģāļ‚āļ­āđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī Query dashboard āļĢāļēāļĒāđ€āļ”āļ·āļ­āļ™āļ­āđˆāļēāļ™āļˆāļēāļ monthly_orders āđāļ—āļ™āļ—āļĩāđˆāļˆāļ°āļŠāđāļāļ™ fact table āļ—āļąāđ‰āļ‡āļŦāļĄāļ”

āļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļēāļĢāļ°āļ”āļąāļš connection āļŠāđˆāļ‡āļœāļĨāļ•āđˆāļ­āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāļ­āļĒāđˆāļēāļ‡āļĄāļĩāļ™āļąāļĒāļŠāļģāļ„āļąāļ āļāļēāļĢāđ€āļŠāļ·āđˆāļ­āļĄāļ•āđˆāļ­ BigQuery āļ„āļ§āļĢāđ€āļ›āļīāļ”āđƒāļŠāđ‰āļ‡āļēāļ™ query caching āđāļĨāļ°āļ•āļąāđ‰āļ‡āļ„āđˆāļē timeouts āļ—āļĩāđˆāđ€āļŦāļĄāļēāļ°āļŠāļĄ āļžāļēāļĢāļēāļĄāļīāđ€āļ•āļ­āļĢāđŒ max_connections āļ„āļ§āļšāļ„āļļāļĄ concurrent query slots

āļŠāļģāļŦāļĢāļąāļš data analyst āļ—āļĩāđˆāđ€āļ•āļĢāļĩāļĒāļĄāļ•āļąāļ§āļŠāļąāļĄāļ āļēāļĐāļ“āđŒ āļ„āļđāđˆāļĄāļ·āļ­ SQL window functions āļ„āļĢāļ­āļšāļ„āļĨāļļāļĄ query patterns āļ—āļĩāđˆāđ€āļŠāļĢāļīāļĄāļ—āļąāļāļĐāļ°āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ‚āļĄāđ€āļ”āļĨ LookML

Access Controls āđāļĨāļ° Content Management

Row-level security, model permissions āđāļĨāļ°āļāļēāļĢāļˆāļąāļ”āļĢāļ°āđ€āļšāļĩāļĒāļšāđ€āļ™āļ·āđ‰āļ­āļŦāļēāļ›āļĢāļēāļāļāđƒāļ™āļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ Looker āļĢāļ°āļ”āļąāļšāļ­āļēāļ§āļļāđ‚āļŠ āļāļĨāđ„āļ access_grant āļ„āļ§āļšāļ„āļļāļĄāļ„āļ§āļēāļĄāļžāļĢāđ‰āļ­āļĄāđƒāļŠāđ‰āļ‡āļēāļ™āļ‚āļ­āļ‡āļŸāļĩāđ€āļˆāļ­āļĢāđŒ:

lookml
# models/ecommerce.model.lkml
access_grant: can_view_pii {
  user_attribute: department
  allowed_values: ["data_team", "compliance"]
}

explore: customers {
  access_filter: {
    field: customers.region
    user_attribute: allowed_regions
  }
}

view: customers {
  dimension: email {
    type: string
    sql: ${TABLE}.email ;;
    required_access_grants: [can_view_pii]
  }
}

access_filter āđ€āļžāļīāđˆāļĄ WHERE clauses āđāļšāļšāđ„āļ”āļ™āļēāļĄāļīāļāļ•āļēāļĄ user attributes āļœāļđāđ‰āļˆāļąāļ”āļāļēāļĢāļāđˆāļēāļĒāļ‚āļēāļĒāđ€āļŦāđ‡āļ™āđ€āļ‰āļžāļēāļ°āļ‚āđ‰āļ­āļĄāļđāļĨāļ‚āļ­āļ‡āļ āļđāļĄāļīāļ āļēāļ„āļ•āļ™ āļžāļēāļĢāļēāļĄāļīāđ€āļ•āļ­āļĢāđŒ required_access_grants āļ‹āđˆāļ­āļ™ dimensions āļˆāļēāļāļœāļđāđ‰āđƒāļŠāđ‰āļ—āļĩāđˆāđ„āļĄāđˆāļĄāļĩ grant āļ—āļĩāđˆāļĢāļ°āļšāļļ

āļāļēāļĢāļˆāļąāļ”āļĢāļ°āđ€āļšāļĩāļĒāļšāđ€āļ™āļ·āđ‰āļ­āļŦāļēāļ•āļēāļĄ hierarchy āđ‚āļŸāļĨāđ€āļ”āļ­āļĢāđŒ Dashboards production āļ­āļĒāļđāđˆāđƒāļ™ shared spaces; āļ‡āļēāļ™ development āļ­āļĒāļđāđˆāđƒāļ™ personal folders āļˆāļ™āļāļ§āđˆāļēāļˆāļ°āļœāđˆāļēāļ™āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļš LookML validator āļ•āļĢāļ§āļˆāļˆāļąāļšāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āđ„āļ§āļĒāļēāļāļĢāļ“āđŒāļāđˆāļ­āļ™ deployment

āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āđƒāļ™āļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ—āļĩāđˆāļžāļšāļšāđˆāļ­āļĒāļ—āļĩāđˆāļ„āļ§āļĢāļŦāļĨāļĩāļāđ€āļĨāļĩāđˆāļĒāļ‡

āļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ—āļēāļ‡āđ€āļ—āļ„āļ™āļīāļ„ Looker āđ€āļœāļĒāđƒāļŦāđ‰āđ€āļŦāđ‡āļ™āļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāđƒāļˆāļœāļīāļ”āļ—āļĩāđˆāļžāļšāļšāđˆāļ­āļĒ:

āļāļēāļĢāļ›āļĢāļ°āļāļēāļĻ relationship āļ—āļĩāđˆāđ„āļĄāđˆāļ–āļđāļāļ•āđ‰āļ­āļ‡ āļ—āļģāđƒāļŦāđ‰ metric āļžāļ­āļ‡āļ•āļąāļ§ Relationship one_to_one āļšāļ™ join one_to_many āļŠāļĢāđ‰āļēāļ‡ aggregates āļ—āļĩāđˆāļœāļīāļ” āļ•āļĢāļ§āļˆāļŠāļ­āļš cardinality āļ”āđ‰āļ§āļĒ queries SELECT COUNT(*), COUNT(DISTINCT key) āđ€āļŠāļĄāļ­

āļžāļķāđˆāļ‡āļžāļē SQL-derived tables āļĄāļēāļāđ€āļāļīāļ™āđ„āļ› āđāļ—āļ™ native derives Native derived tables āļĢāļ§āļĄāļāļąāļš dependency tracking āļ‚āļ­āļ‡ Looker; SQL-derived tables āļ•āđ‰āļ­āļ‡āļāļēāļĢāļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ”āđ‰āļ§āļĒāļ•āļ™āđ€āļ­āļ‡

āđ€āļžāļīāļāđ€āļ‰āļĒ datagroup caching āļŦāļēāļāđ„āļĄāđˆāļĄāļĩ cache invalidation āļ—āļĩāđˆāđ€āļŦāļĄāļēāļ°āļŠāļĄ dashboards āļˆāļ°āđāļŠāļ”āļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāđ€āļāđˆāļē āļāļģāļŦāļ™āļ” datagroups āļ—āļĩāđˆāļŠāļ­āļ”āļ„āļĨāđ‰āļ­āļ‡āļāļąāļšāļ•āļēāļĢāļēāļ‡ ETL āđāļĨāļ°āļāļģāļŦāļ™āļ”āđƒāļŦāđ‰ explores

āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāđ€āļ•āļĢāļĩāļĒāļĄāļ•āļąāļ§āļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ—āļĩāđˆāļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāđāļ™āļ§āļ„āļīāļ”āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ‚āļĄāđ€āļ”āļĨāļ‚āđ‰āļ­āļĄāļđāļĨāđāļĨāļ° analytics āļ„āļđāđˆāļĄāļ·āļ­āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ data analytics āļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāļŦāļąāļ§āļ‚āđ‰āļ­āļ—āļĩāđˆāļāļ§āđ‰āļēāļ‡āļāļ§āđˆāļēāļ„āļ§āļēāļĄāļĢāļđāđ‰āđ€āļ‰āļžāļēāļ° Looker

āļŠāļĢāļļāļ›

āļāļēāļĢāļ›āļĢāļ°āļŠāļšāļ„āļ§āļēāļĄāļŠāļģāđ€āļĢāđ‡āļˆāđƒāļ™āļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ Looker āļ•āđ‰āļ­āļ‡āđāļŠāļ”āļ‡āđƒāļŦāđ‰āđ€āļŦāđ‡āļ™āļ—āļąāđ‰āļ‡āļ„āļ§āļēāļĄāļĢāļđāđ‰āđ„āļ§āļĒāļēāļāļĢāļ“āđŒ LookML āđāļĨāļ°āļ„āļ§āļēāļĄāđ€āļ‚āđ‰āļēāđƒāļˆāļ§āđˆāļēāļ—āļģāđ„āļĄāļŠāļ–āļēāļ›āļąāļ•āļĒāļāļĢāļĢāļĄ semantic layer āļˆāļķāļ‡āđ€āļ›āđ‡āļ™āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒāļ•āđˆāļ­āļ­āļ‡āļ„āđŒāļāļĢ:

  • LookML views āļāļģāļŦāļ™āļ” dimensions āđāļĨāļ° measures; explores āļĢāļ§āļĄ views āļœāđˆāļēāļ™ joins āļ—āļĩāđˆāļ›āļĢāļ°āļāļēāļĻāļ”āđ‰āļ§āļĒ relationship types āļ—āļĩāđˆāļŠāļąāļ”āđ€āļˆāļ™
  • Derived tables materialize transformations āļ—āļĩāđˆāļ‹āļąāļšāļ‹āđ‰āļ­āļ™; datagroups āļ„āļ§āļšāļ„āļļāļĄ cache invalidation āđāļĨāļ°āļ•āļēāļĢāļēāļ‡ rebuild PDT
  • Liquid templating āđ€āļ›āļīāļ”āđƒāļŠāđ‰āļ‡āļēāļ™āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡ SQL āđāļšāļšāđ„āļ”āļ™āļēāļĄāļīāļāļ•āļēāļĄ user attributes āđāļĨāļ°āļāļēāļĢāđ€āļĨāļ·āļ­āļ filter
  • Aggregate awareness pre-compute metrics āļ—āļĩāđˆāļŦāļĨāļēāļĒ grains āļāļģāļŦāļ™āļ”āđ€āļŠāđ‰āļ™āļ—āļēāļ‡ queries āđ„āļ›āļĒāļąāļ‡āļ•āļēāļĢāļēāļ‡āļ—āļĩāđˆāđ€āļŦāļĄāļēāļ°āļŠāļĄāļ—āļĩāđˆāļŠāļļāļ”āđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī
  • Access controls āļĢāļ§āļĄ row-level filters, access grants āđāļĨāļ° content permissions āļŠāļģāļŦāļĢāļąāļš governed self-service
  • āļāļēāļĢāļ›āļĢāļąāļšāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāđƒāļŦāđ‰āđ€āļŦāļĄāļēāļ°āļŠāļĄāļ•āđ‰āļ­āļ‡āļˆāļąāļ”āđāļ™āļ§āļĢāļđāļ›āđāļšāļš LookML āļāļąāļšāļāļēāļĢāļ›āļĢāļąāļšāđāļ•āđˆāļ‡āđ€āļ‰āļžāļēāļ°āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨ (BigQuery slots, Snowflake warehouses)

āļāļķāļāļŠāļĢāđ‰āļēāļ‡āđ‚āļĄāđ€āļ”āļĨ LookML āļāļąāļš sample datasets āļāđˆāļ­āļ™āļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ BigQuery public datasets āļĄāļĩ schemas āļ—āļĩāđˆāļŠāļĄāļˆāļĢāļīāļ‡āļŠāļģāļŦāļĢāļąāļšāđāļšāļšāļāļķāļāļŦāļąāļ”āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ‚āļĄāđ€āļ”āļĨ

āđ€āļĢāļīāđˆāļĄāļāļķāļāļ‹āđ‰āļ­āļĄāđ€āļĨāļĒ!

āļ—āļ”āļŠāļ­āļšāļ„āļ§āļēāļĄāļĢāļđāđ‰āļ‚āļ­āļ‡āļ„āļļāļ“āļ”āđ‰āļ§āļĒāļ•āļąāļ§āļˆāļģāļĨāļ­āļ‡āļŠāļąāļĄāļ āļēāļĐāļ“āđŒāđāļĨāļ°āđāļšāļšāļ—āļ”āļŠāļ­āļšāđ€āļ—āļ„āļ™āļīāļ„āļ„āļĢāļąāļš

āļŠāļēāđ€āļĨāļ™āļˆāđŒāļ›āļĢāļ°āļˆāļģāļ§āļąāļ™

āļ„āļļāļ“āļŦāļēāļšāļąāđŠāļāđƒāļ™ Data Analytics āđ€āļˆāļ­āđ„āļŦāļĄ

āđ‚āļ„āđ‰āļ”āļˆāļĢāļīāļ‡āļŦāļ™āļķāđˆāļ‡āļŠāļīāđ‰āļ™ āļšāļąāđŠāļāļ—āļĩāđˆāļ‹āđˆāļ­āļ™āļ­āļĒāļđāđˆāļŦāļ™āļķāđˆāļ‡āļˆāļļāļ” āļ§āļąāļ™āļĨāļ°āļŦāļ™āļķāđˆāļ‡āļ„āļĢāļąāđ‰āļ‡ āļĨāļ­āļ‡āđ„āļ”āđ‰āđ‚āļ”āļĒāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āļĄāļĩāļšāļąāļāļŠāļĩ

Anthony Fillion-Maillet

āđ€āļ‚āļĩāļĒāļ™āđ‚āļ”āļĒ

Anthony Fillion-Maillet

āļœāļđāđ‰āļāđˆāļ­āļ•āļąāđ‰āļ‡ SharpSkill

āđ€āļ›āđ‡āļ™āļ™āļąāļāļžāļąāļ’āļ™āļēāļŸāļđāļĨāļŠāđāļ•āļāļĄāļēāļāļ§āđˆāļē 10 āļ›āļĩ āļ”āļđāđāļĨ SharpSkill āđāļĨāļ°āļĢāļąāļšāļœāļīāļ”āļŠāļ­āļšāļ—āļļāļāļŠāļīāđˆāļ‡āļ—āļĩāđˆāđ€āļœāļĒāđāļžāļĢāđˆāļ—āļĩāđˆāļ™āļĩāđˆ

āļ­āļąāļ›āđ€āļ”āļ•āđ€āļĄāļ·āđˆāļ­ 20 āļāļĢāļāļŽāļēāļ„āļĄ 2569

āđāļ—āđ‡āļ

#looker
#lookml
#business-intelligence
#data-analytics
#interview

āđāļŠāļĢāđŒ

āļšāļ—āļ„āļ§āļēāļĄāļ—āļĩāđˆāđ€āļāļĩāđˆāļĒāļ§āļ‚āđ‰āļ­āļ‡

āđāļ”āļŠāļšāļ­āļĢāđŒāļ”āļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒāļ‚āđ‰āļ­āļĄāļđāļĨāđāļĨāļ° SQL Lab āļ‚āļ­āļ‡ Apache Superset āđƒāļ™āļ›āļĩ 2026

Apache Superset āļ›āļĩ 2026: āđāļ”āļŠāļšāļ­āļĢāđŒāļ” SQL Lab āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

āđ€āļˆāļēāļ°āļĨāļķāļ Apache Superset: āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđāļ”āļŠāļšāļ­āļĢāđŒāļ”āļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒāļ‚āđ‰āļ­āļĄāļđāļĨ SQL Lab āđāļĨāļ° Jinja templating āļāļēāļĢāđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļšāļāļąāļš Tableau āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ—āļĩāđˆāļŠāļģāļ„āļąāļ

Pandas 3.0 API āđƒāļŦāļĄāđˆāđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ data analytics 2026

Pandas 3.0 āđƒāļ™āļ›āļĩ 2026: API āđƒāļŦāļĄāđˆ, Breaking Changes āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ‡āļēāļ™

āļ„āļđāđˆāļĄāļ·āļ­āļ‰āļšāļąāļšāļŠāļĄāļšāļđāļĢāļ“āđŒāđ€āļāļĩāđˆāļĒāļ§āļāļąāļš Pandas 3.0 āļ„āļĢāļ­āļšāļ„āļĨāļļāļĄ Copy-on-Write, PyArrow string backend, pd.col() expressions, breaking changes āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ data analytics

dbt data modeling testing āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ‡āļēāļ™āļŠāļģāļŦāļĢāļąāļš data analyst

dbt āļŠāļģāļŦāļĢāļąāļš Data Analyst āđƒāļ™āļ›āļĩ 2026: āļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ‚āļĄāđ€āļ”āļĨ āļāļēāļĢāļ—āļ”āļŠāļ­āļš āđāļĨāļ°āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ‡āļēāļ™

āđ€āļĢāļĩāļĒāļ™āļĢāļđāđ‰ dbt āļŠāļģāļŦāļĢāļąāļš Data Analyst āļ•āļąāđ‰āļ‡āđāļ•āđˆāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ‚āļĄāđ€āļ”āļĨ āļāļēāļĢāļ—āļ”āļŠāļ­āļšāļ‚āđ‰āļ­āļĄāļđāļĨ āđ„āļ›āļˆāļ™āļ–āļķāļ‡āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ‡āļēāļ™āļ—āļĩāđˆāļžāļšāļšāđˆāļ­āļĒ āļžāļĢāđ‰āļ­āļĄāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ‚āļ„āđ‰āļ”āđāļĨāļ°āđāļ™āļ§āļ›āļāļīāļšāļąāļ•āļīāļ—āļĩāđˆāļ”āļĩ