From 0056095e8ce7fa731030b86f5e952bbe70a17b9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20St=C3=B6lzle?= Date: Fri, 3 Feb 2017 11:50:30 +0100 Subject: [PATCH] Add .lkml to LookML (#3454) * Add .lkml to LookML * Limit .lkml to .view.lkml and .model.lkml * Add lkml samples * Fix extension order --- lib/linguist/languages.yml | 2 + samples/LookML/example.model.lkml | 49 +++++++++++++++++ samples/LookML/example.view.lkml | 90 +++++++++++++++++++++++++++++++ 3 files changed, 141 insertions(+) create mode 100644 samples/LookML/example.model.lkml create mode 100644 samples/LookML/example.view.lkml diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 700dd831..a86c8a31 100755 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -2292,6 +2292,8 @@ LookML: color: "#652B81" extensions: - ".lookml" + - ".model.lkml" + - ".view.lkml" tm_scope: source.yaml language_id: 211 LoomScript: diff --git a/samples/LookML/example.model.lkml b/samples/LookML/example.model.lkml new file mode 100644 index 00000000..ea6c4ff1 --- /dev/null +++ b/samples/LookML/example.model.lkml @@ -0,0 +1,49 @@ +- label: 'desired label name' +- connection: connection_name +- include: filename_or_pattern + # Possibly more include declarations +- persist_for: N (seconds | minutes | hours) +- case_sensitive: true | false +- week_start_day: monday | tuesday | wednesday | thursday | friday | saturday | sunday +- value_formats: + - name: desired_format_name + value_format: 'excel-style formatting string' + # Possibly more value formats + +- explore: view_name + label: 'desired label name' + description: 'description string' + symmetric_aggregates: true | false + hidden: true | false + fields: [field_or_set, field_or_set, …] + + sql_always_where: SQL WHERE condition + always_filter: + field_name: 'looker filter expression' + conditionally_filter: + field_name: 'looker filter expression' + unless: [field_or_set, field_or_set, …] + access_filter_fields: [fully_scoped_field, fully_scoped_field, …] + + always_join: [view_name, view_name, …] + joins: + - join: view_name + type: left_outer | full_outer | inner | cross + relationship: one_to_one | many_to_one | one_to_many | many_to_many + from: view_name + sql_table_name: table_name + view_label: 'desired label name' + fields: [field_or_set, field_or_set, …] + required_joins: [view_name, view_name, …] + foreign_key: dimension_name + sql_on: SQL ON clause + # Possibly more join declarations + + persist_for: N (seconds | minutes | hours) + from: view_name + view: view_name + case_sensitive: true | false + sql_table_name: table_name + cancel_grouping_fields: [fully_scoped_field, fully_scoped_field, …] + +# Possibly more explore declarations diff --git a/samples/LookML/example.view.lkml b/samples/LookML/example.view.lkml new file mode 100644 index 00000000..f4918d76 --- /dev/null +++ b/samples/LookML/example.view.lkml @@ -0,0 +1,90 @@ +- view: view_name + sql_table_name: table_name + suggestions: true | false + + derived_table: + sql: SQL query + persist_for: N (seconds | minutes | hours) + sql_trigger_value: SQL query + distribution: column_name + distribution_style: ALL | EVEN + sortkeys: [column_name, column_name, …] + indexes: [column_name, column_name, …] + + sets: + set_name: + - field_or_set + - field_or_set + - … + # Possibly more set declarations + + fields: + - (dimension | dimension_group | measure | filter): field_name + label: 'desired label name' + view_label: 'desired label name' + group_label: 'desired label name' + description: 'description string' + hidden: true | false + alias: [old_field_name, old_field_name, …] + value_format: 'excel-style formatting string' + value_format_name: format_name + html: HTML expression using Liquid template elements + sql: SQL expression to generate the field value + required_fields: [field_name, field_name, …] + drill_fields: [field_or_set, field_or_set, …] + can_filter: true | false + fanout_on: repeated_record_name + + # DIMENSION SPECIFIC PARAMETERS + + type: dimension_field_type + primary_key: true | false + sql_case: + value: SQL condition + value: SQL condition + # Possibly more sql_case statements + alpha_sort: true | false + tiers: [N, N, …] + style: classic | interval | integer | relational + sql_latitude: SQL expression to generate a latitude + sql_longitude: SQL expression to generate a longitude + suggestable: true | false + suggest_persist_for: N (seconds | minutes | hours) + suggest_dimension: dimension_name + suggest_explore: explore_name + suggestions: ['suggestion string', 'suggestion string', …] + bypass_suggest_restrictions: true | false + full_suggestions: true | false + skip_drill_filter: true | false + case_sensitive: true | false + order_by_field: dimension_name + map_layer: name_of_map_layer + links: + - label: 'desired label name' + url: desired_url + icon_url: url_of_an_ico_file + # Possibly more links + + # DIMENSION GROUP SPECIFIC PARAMETERS + + timeframes: [timeframe, timeframe, …] + convert_tz: true | false + datatype: epoch | timestamp | datetime | date | yyyymmdd + + # MEASURE SPECIFIC PARAMETERS + + type: measure_field_type + direction: row | column + approximate: true | false + approximate_threshold: N + sql_distinct_key: SQL expression to define repeated entities + list_field: dimension_name + filters: + dimension_name: 'looker filter expression' + # Possibly more filters statements + + # FILTER SPECIFIC PARAMETERS + + default_value: 'desired default value' + + # Possibly more dimension or measure declarations