AgentStack
SKILL verified MIT Self-run

Lookml Model

skill-lkrdev-lookml-skills-lookml-model · by lkrdev

Use this skill when you need to create or modify a LookML Model file (.model.lkml). This includes defining connections, includes, and configuring model-level settings.

No reviews yet
0 installs
14 views
0.0% view→install

Install

$ agentstack add skill-lkrdev-lookml-skills-lookml-model

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Lookml Model? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Instructions

  1. Define the Model File: A model file generally corresponds to a single database connection and includes Explores.
  2. Required Parameters:
  • connection: "connection_name": Must match a connection defined in Looker Admin.
  • include: "pattern": Specifies which view and dashboard files are available to the model.
  1. Best Practices:
  • Includes: Avoid include: "*.view" if possible to prevent performance issues and namespace clutter. Use specific paths or wildcards like include: "/views/users.view" or include: "/views/marketing/*.view".
  • Label: Use label: to provide a user-friendly name for the model in the UI.
  • Week Start Day: Set week_start_day: if the business logic requires a specific start day (e.g., monday).
  • Datagroups & Caching: ALWAYS use datagroups for caching policies to align Looker with your ETL/ELT processes.

4. Datagroups & Caching

Datagroups are the preferred mechanism for managing caching policies.

  • Definition: Define in the model file.
  • sql_trigger: A query that returns a single value (e.g., max timestamp). If the value changes, the cache is invalidated.
  • maxcacheage: A fallback duration if the trigger doesn't change.
  • persist_with: Apply the datagroup to Explores or the entire model.

Datagroups vs persist_for

| Feature | Datagroups (Recommended) | persist_for | | :------------- | :----------------------------------------- | :------------------------------------ | | Trigger | SQL Query (Smart) | Fixed Time (Dumb) | | Alignment | Aligns with ETL/ELT completion | Misaligned (guesswork) | | Management | Centralized in Model file | Scattered in Explores/Models | | Use Case | Production dashboards, ETL synchronization | Ad-hoc queries, Real-time ( [!TIP] > Use persist_for ONLY for real-time dashboards where you need to force a cache refresh every X minutes (e.g., stock tickers, fast-moving inventory). For everything else, use Datagroups.

5. Include Patterns

Use strict patterns to control scope and performance.

| Pattern | Description | Use Case | | :--- | :--- | :--- | | include: "/views/*.view" | All views in specific folder | Standard modularity | | include: "/views/marketing/users.view" | Specific file | Precise control, avoids conflicts | | include: "/**/*.view" | Recursive (all views in project) | Avoid unless small project | | include: "/dashboards/*.dashboard" | All dashboards in folder | Importing dashboards |

Examples

Basic Model

connection: "thelook"

# Include all views in the views/ folder
include: "/views/*.view"

# Include all dashboards
include: "/*.dashboard"

# Define an Explore (usually better to define in separate files for large projects, but acceptable here for small ones)
explore: orders {
  join: users {
    type: left_outer
    sql_on: ${orders.user_id} = ${users.id} ;;
    relationship: many_to_one
  }
}

Model with Specific Settings

````lookml connection: "snowlooker"

label: "eCommerce Analytics"

Set valid week start day

weekstartday: monday

Include specific folders

include: "/views/finance/.view" include: "/views/marketing/.view"

Model with Datagroup (Best Practice)

connection: "thelook"

# Define the caching policy
datagroup: ecommerce_etl {
  description: "Triggers when the max created_at date changes in the events table."
  sql_trigger: SELECT MAX(created_at) FROM `project.dataset.events` ;;
  max_cache_age: "24 hours" # Fallback
}

# Apply default caching to all Explores in this model
persist_with: ecommerce_etl

include: "/views/*.view"

explore: orders {
  # This explore inherits 'persist_with: ecommerce_etl' from the model default
}

explore: real_time_dashboard {
  # Override with a different policy if needed
  persist_for: "5 minutes"
}

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.