├── explores ├── .gitkeep ├── repository.explore.lkml ├── organization.explore.lkml ├── user.explore.lkml ├── event.explore.lkml ├── repository_commit.explore.lkml ├── issue.explore.lkml └── pull_request.explore.lkml ├── views ├── .gitkeep ├── organization_user.view.lkml ├── organization.view.lkml ├── event.view.lkml ├── user.view.lkml ├── repository_commit.view.lkml ├── pull_request_activity.view.lkml ├── issue_comment.view.lkml ├── repository.view.lkml ├── issue.view.lkml └── pull_request.view.lkml ├── dashboards ├── .gitkeep ├── user_activity.dashboard.lookml └── overview.dashboard.lookml ├── manifest.lkml ├── marketplace.json ├── LICENSE ├── README.md └── block_keboola_git_v2.model.lkml /explores/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /views/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /dashboards/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /explores/repository.explore.lkml: -------------------------------------------------------------------------------- 1 | include: "/views/*.view.lkml" 2 | 3 | explore: repository { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /explores/organization.explore.lkml: -------------------------------------------------------------------------------- 1 | include: "/views/*.view.lkml" 2 | 3 | explore: organization { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /manifest.lkml: -------------------------------------------------------------------------------- 1 | project_name: "block-keboola-git" 2 | 3 | ################ Constants ################ 4 | 5 | constant: CONNECTION { 6 | value: "keboola_block_git" 7 | export: override_optional 8 | } 9 | 10 | constant: SCHEMA_NAME { 11 | value: "WORKSPACE_546683285" 12 | export: override_optional 13 | } 14 | -------------------------------------------------------------------------------- /explores/user.explore.lkml: -------------------------------------------------------------------------------- 1 | include: "/views/*.view.lkml" 2 | 3 | explore: user{ 4 | 5 | 6 | join: organization_user { 7 | type: left_outer 8 | sql_on: ${user.user_id} = ${organization_user.user_id} ;; 9 | relationship: one_to_many 10 | } 11 | 12 | join: organization { 13 | type: left_outer 14 | sql_on: ${organization_user.organization_id} = ${organization.organization_id} ;; 15 | relationship: many_to_one 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /views/organization_user.view.lkml: -------------------------------------------------------------------------------- 1 | view: organization_user{ 2 | sql_table_name: @{SCHEMA_NAME}."ORGANIZATION_USER" ;; 3 | 4 | dimension: organization_id { 5 | hidden: yes 6 | type: string 7 | sql: ${TABLE}."ORGANIZATION_ID" ;; 8 | } 9 | 10 | dimension: user_id { 11 | hidden: yes 12 | type: string 13 | sql: ${TABLE}."USER_ID" ;; 14 | } 15 | 16 | measure: count { 17 | type: count 18 | } 19 | 20 | # ----- Sets of fields for drilling ------ 21 | set: detail { 22 | fields: [ 23 | organization.organization, 24 | user.users 25 | ] 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /marketplace.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "DevOps Essentials", 3 | "category_label": "Models", 4 | "branding": { 5 | "image_uri": "https://marketplace-api.looker.com/block-icons/KeboolaBrand.png", 6 | "tagline": "Analyze your Git repositories activity and team members’ activity." 7 | }, 8 | 9 | "constants": { 10 | "CONNECTION": { 11 | "label": "Connection Name", 12 | "value_constraint": "connection" 13 | }, 14 | "SCHEMA_NAME": { 15 | "label": "Schema Name" 16 | } 17 | }, 18 | "models": [ 19 | { 20 | "name": "block_keboola_git_v2", 21 | "connection_constant": "CONNECTION" 22 | } 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /views/organization.view.lkml: -------------------------------------------------------------------------------- 1 | view: organization { 2 | sql_table_name: @{SCHEMA_NAME}.ORGANIZATION ;; 3 | 4 | dimension: organization_id { 5 | label: "Organization ID" 6 | primary_key: yes 7 | type: string 8 | sql: ${TABLE}."ORGANIZATION_ID" ;; 9 | } 10 | 11 | dimension: organization { 12 | type: string 13 | sql: ${TABLE}."ORGANIZATION" ;; 14 | } 15 | 16 | measure: organizations { 17 | type: count 18 | drill_fields: [detail*] 19 | } 20 | 21 | # ----- Sets of fields for drilling ------ 22 | set: detail { 23 | fields: [ 24 | organization.organization, 25 | user.users 26 | ] 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /explores/event.explore.lkml: -------------------------------------------------------------------------------- 1 | include: "/views/*.view.lkml" 2 | explore: event{ 3 | 4 | 5 | join: user { 6 | type: left_outer 7 | sql_on: ${event.user_id} = ${user.user_id} ;; 8 | relationship: many_to_one 9 | } 10 | 11 | join: organization_user { 12 | type: left_outer 13 | sql_on: ${user.user_id} = ${organization_user.user_id} ;; 14 | relationship: one_to_many 15 | } 16 | 17 | join: organization { 18 | type: left_outer 19 | sql_on: ${organization_user.organization_id} = ${organization.organization_id} ;; 20 | relationship: many_to_one 21 | } 22 | 23 | join: repository { 24 | type: left_outer 25 | sql_on: ${event.repository_id} = ${repository.repository_id} ;; 26 | relationship: many_to_one 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /explores/repository_commit.explore.lkml: -------------------------------------------------------------------------------- 1 | include: "/views/*.view.lkml" 2 | 3 | explore: repository_commit { 4 | 5 | 6 | join: user { 7 | type: left_outer 8 | sql_on: ${repository_commit.user_id} = ${user.user_id} ;; 9 | relationship: many_to_one 10 | } 11 | 12 | join: repository { 13 | type: left_outer 14 | sql_on: ${repository_commit.repository_id} = ${repository.repository_id} ;; 15 | relationship: many_to_one 16 | } 17 | 18 | join: organization_user { 19 | type: left_outer 20 | sql_on: ${user.user_id} = ${organization_user.user_id} ;; 21 | relationship: one_to_many 22 | } 23 | 24 | join: organization { 25 | type: left_outer 26 | sql_on: ${organization_user.organization_id} = ${organization.organization_id} ;; 27 | relationship: many_to_one 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /explores/issue.explore.lkml: -------------------------------------------------------------------------------- 1 | include: "/views/*.view.lkml" 2 | 3 | explore: issue { 4 | 5 | 6 | join: repository { 7 | type: left_outer 8 | sql_on: ${issue.repository_id} = ${repository.repository_id} ;; 9 | relationship: many_to_one 10 | } 11 | 12 | join: user { 13 | type: left_outer 14 | sql_on: ${issue.user_id} = ${user.user_id} ;; 15 | relationship: many_to_one 16 | } 17 | 18 | join: organization_user { 19 | type: left_outer 20 | sql_on: ${user.user_id} = ${organization_user.user_id} ;; 21 | relationship: one_to_many 22 | } 23 | 24 | join: organization { 25 | type: left_outer 26 | sql_on: ${organization_user.organization_id} = ${organization.organization_id} ;; 27 | relationship: many_to_one 28 | } 29 | 30 | join: issue_comment { 31 | type: left_outer 32 | sql_on: ${issue.issue_id} = ${issue_comment.issue_id} ;; 33 | relationship: one_to_many 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /explores/pull_request.explore.lkml: -------------------------------------------------------------------------------- 1 | include: "/views/*.view.lkml" 2 | 3 | explore: pull_request { 4 | 5 | 6 | join: user { 7 | type: left_outer 8 | sql_on: ${pull_request.user_id} = ${user.user_id} ;; 9 | relationship: many_to_one 10 | } 11 | 12 | join: repository { 13 | type: left_outer 14 | sql_on: ${pull_request.repository_id} = ${repository.repository_id} ;; 15 | relationship: many_to_one 16 | } 17 | 18 | join: organization_user { 19 | type: left_outer 20 | sql_on: ${user.user_id} = ${organization_user.user_id} ;; 21 | relationship: one_to_many 22 | } 23 | 24 | join: organization { 25 | type: left_outer 26 | sql_on: ${organization_user.organization_id} = ${organization.organization_id} ;; 27 | relationship: many_to_one 28 | } 29 | 30 | join: pull_request_activity { 31 | type: left_outer 32 | sql_on: ${pull_request.pull_request_id} = ${pull_request_activity.pull_request_id} ;; 33 | relationship: one_to_many 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | "MIT License 2 | 3 | Copyright (c) 2021 Google 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE." 22 | -------------------------------------------------------------------------------- /views/event.view.lkml: -------------------------------------------------------------------------------- 1 | view: event { 2 | sql_table_name: @{SCHEMA_NAME}.EVENT ;; 3 | drill_fields: [event_id] 4 | 5 | dimension: event_id { 6 | label: "Event ID" 7 | primary_key: yes 8 | type: string 9 | sql: ${TABLE}."EVENT_ID" ;; 10 | html: {{ value }} ;; 11 | } 12 | 13 | dimension_group: date { 14 | type: time 15 | timeframes: [ 16 | raw, 17 | time, 18 | date, 19 | week, 20 | month, 21 | quarter, 22 | year 23 | ] 24 | sql: ${TABLE}."DATE" ;; 25 | } 26 | 27 | dimension: event { 28 | type: string 29 | sql: ${TABLE}."EVENT" ;; 30 | } 31 | 32 | dimension: repository_id { 33 | type: string 34 | hidden: yes 35 | sql: ${TABLE}."REPOSITORY_ID" ;; 36 | } 37 | 38 | dimension: url { 39 | type: string 40 | sql: ${TABLE}."URL" ;; 41 | } 42 | 43 | dimension: user_id { 44 | type: string 45 | sql: ${TABLE}."USER_ID" ;; 46 | } 47 | 48 | measure: events { 49 | type: count 50 | drill_fields: [detail*] 51 | } 52 | 53 | # ----- Sets of fields for drilling ------ 54 | set: detail { 55 | fields: [ 56 | organization.organization, 57 | user.user, 58 | repository.repository, 59 | date_date, 60 | event, 61 | event_id 62 | ] 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /views/user.view.lkml: -------------------------------------------------------------------------------- 1 | view: user { 2 | sql_table_name: @{SCHEMA_NAME}."USER" ;; 3 | 4 | dimension: user_id { 5 | label: "User ID" 6 | primary_key: yes 7 | type: string 8 | sql: ${TABLE}."USER_ID" ;; 9 | } 10 | 11 | dimension_group: created { 12 | type: time 13 | timeframes: [ 14 | raw, 15 | time, 16 | date, 17 | week, 18 | month, 19 | quarter, 20 | year 21 | ] 22 | sql: ${TABLE}."CREATED_ON" ;; 23 | } 24 | 25 | dimension: is_active { 26 | type: yesno 27 | sql: ${TABLE}."IS_ACTIVE" = 'true' ;; 28 | } 29 | 30 | dimension: is_member { 31 | type: yesno 32 | sql: ${TABLE}."IS_MEMBER" = 'true' ;; 33 | } 34 | 35 | dimension: organization_id { 36 | type: string 37 | hidden: yes 38 | sql: ${TABLE}."ORGANIZATION_ID" ;; 39 | } 40 | 41 | dimension: type { 42 | type: string 43 | sql: ${TABLE}."TYPE" ;; 44 | } 45 | 46 | dimension: user { 47 | type: string 48 | sql: ${TABLE}."USER" ;; 49 | } 50 | 51 | measure: users { 52 | type: count 53 | drill_fields: [detail*] 54 | } 55 | 56 | # ----- Sets of fields for drilling ------ 57 | set: detail { 58 | fields: [ 59 | organization.organization, 60 | user, 61 | issue.issues, 62 | issue_comment.issue_comments, 63 | pull_request.pull_requests, 64 | pull_request_activity.pull_request_activities, 65 | repository_commit.commits 66 | ] 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /views/repository_commit.view.lkml: -------------------------------------------------------------------------------- 1 | view: repository_commit { 2 | sql_table_name: @{SCHEMA_NAME}.REPOSITORY_COMMIT ;; 3 | drill_fields: [repository_commit_id] 4 | 5 | dimension: repository_commit_id { 6 | label: "Repository Commit ID" 7 | primary_key: yes 8 | type: string 9 | sql: ${TABLE}."REPOSITORY_COMMIT_ID" ;; 10 | html: {{ value }} ;; 11 | } 12 | 13 | dimension_group: date { 14 | type: time 15 | timeframes: [ 16 | raw, 17 | time, 18 | date, 19 | week, 20 | month, 21 | quarter, 22 | year 23 | ] 24 | sql: ${TABLE}."DATE" ;; 25 | } 26 | 27 | dimension: message { 28 | type: string 29 | sql: ${TABLE}."MESSAGE" ;; 30 | } 31 | 32 | dimension: repository_id { 33 | type: string 34 | hidden: yes 35 | sql: ${TABLE}."REPOSITORY_ID" ;; 36 | } 37 | 38 | dimension: url { 39 | type: string 40 | sql: ${TABLE}."URL" ;; 41 | } 42 | 43 | dimension: user_id { 44 | type: string 45 | hidden: yes 46 | sql: ${TABLE}."USER_ID" ;; 47 | } 48 | 49 | measure: commits { 50 | type: count 51 | drill_fields: [detail*] 52 | } 53 | 54 | # ----- Sets of fields for drilling ------ 55 | set: detail { 56 | fields: [ 57 | organization.organization, 58 | repository.project, 59 | repository.repository, 60 | date_date, 61 | repository_commit_id, 62 | user.user, 63 | message, 64 | repository_commit_change.commit_changes 65 | ] 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /views/pull_request_activity.view.lkml: -------------------------------------------------------------------------------- 1 | 2 | view: pull_request_activity { 3 | sql_table_name: @{SCHEMA_NAME}.PULL_REQUEST_ACTIVITY ;; 4 | 5 | dimension: pull_request_activity_id { 6 | label: "Pull Request Activity ID" 7 | primary_key: yes 8 | type: string 9 | sql: ${TABLE}."PULL_REQUEST_ACTIVITY_ID" ;; 10 | } 11 | 12 | dimension_group: date { 13 | type: time 14 | timeframes: [ 15 | raw, 16 | time, 17 | date, 18 | week, 19 | month, 20 | quarter, 21 | year 22 | ] 23 | sql: ${TABLE}."DATE" ;; 24 | } 25 | 26 | dimension: description { 27 | type: string 28 | sql: ${TABLE}."DESCRIPTION" ;; 29 | } 30 | 31 | dimension: pull_request_id { 32 | type: string 33 | hidden: yes 34 | sql: ${TABLE}."PULL_REQUEST_ID" ;; 35 | } 36 | 37 | dimension: reason { 38 | type: string 39 | sql: ${TABLE}."REASON" ;; 40 | } 41 | 42 | dimension: state { 43 | type: string 44 | sql: ${TABLE}."STATE" ;; 45 | } 46 | 47 | dimension: title { 48 | type: string 49 | sql: ${TABLE}."TITLE" ;; 50 | } 51 | 52 | dimension: user { 53 | type: string 54 | sql: ${TABLE}."USER" ;; 55 | } 56 | 57 | dimension: user_id { 58 | type: string 59 | hidden: yes 60 | sql: ${TABLE}."USER_ID" ;; 61 | } 62 | 63 | measure: pull_request_activities { 64 | type: count 65 | drill_fields: [detail*] 66 | } 67 | 68 | # ----- Sets of fields for drilling ------ 69 | set: detail { 70 | fields: [ 71 | organization.organization, 72 | repository.repository, 73 | users.user, 74 | date_date, 75 | pull_request_activity_id, 76 | title, 77 | state, 78 | reason 79 | ] 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /views/issue_comment.view.lkml: -------------------------------------------------------------------------------- 1 | view: issue_comment { 2 | sql_table_name: @{SCHEMA_NAME}.ISSUE_COMMENT ;; 3 | drill_fields: [issue_comment_id, description] 4 | 5 | dimension: issue_comment_id { 6 | label: "Issue Comment ID" 7 | primary_key: yes 8 | type: string 9 | sql: ${TABLE}."ISSUE_COMMENT_ID" ;; 10 | html: {{ value }} ;; 11 | } 12 | 13 | dimension_group: created { 14 | type: time 15 | timeframes: [ 16 | raw, 17 | time, 18 | date, 19 | week, 20 | month, 21 | quarter, 22 | year 23 | ] 24 | sql: ${TABLE}."CREATED_ON" ;; 25 | } 26 | 27 | dimension: description { 28 | type: string 29 | sql: ${TABLE}."DESCRIPTION" ;; 30 | } 31 | 32 | dimension: issue_id { 33 | type: string 34 | hidden: yes 35 | sql: ${TABLE}."ISSUE_ID" ;; 36 | } 37 | 38 | dimension_group: updated { 39 | type: time 40 | timeframes: [ 41 | raw, 42 | time, 43 | date, 44 | week, 45 | month, 46 | quarter, 47 | year 48 | ] 49 | sql: ${TABLE}."UPDATED_ON" ;; 50 | } 51 | 52 | dimension: url { 53 | type: string 54 | sql: ${TABLE}."URL" ;; 55 | } 56 | 57 | dimension: user { 58 | type: string 59 | sql: ${TABLE}."USER" ;; 60 | } 61 | 62 | dimension: user_id { 63 | type: string 64 | hidden: yes 65 | sql: ${TABLE}."USER_ID" ;; 66 | } 67 | 68 | measure: issue_comments { 69 | type: count 70 | drill_fields: [detail*] 71 | } 72 | 73 | # ----- Sets of fields for drilling ------ 74 | set: detail { 75 | fields: [ 76 | organization.organization, 77 | user.user, 78 | issue.title, 79 | issue.description, 80 | created_date, 81 | issue_comment_id, 82 | user, 83 | description 84 | ] 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /views/repository.view.lkml: -------------------------------------------------------------------------------- 1 | view: repository { 2 | sql_table_name: @{SCHEMA_NAME}.REPOSITORY ;; 3 | drill_fields: [repository] 4 | 5 | dimension: repository_id { 6 | label: "Repository ID" 7 | primary_key: yes 8 | type: string 9 | sql: ${TABLE}."REPOSITORY_ID" ;; 10 | html: {{ value }} ;; 11 | } 12 | 13 | dimension_group: created { 14 | type: time 15 | timeframes: [ 16 | raw, 17 | time, 18 | date, 19 | week, 20 | month, 21 | quarter, 22 | year 23 | ] 24 | sql: ${TABLE}."CREATED_ON" ;; 25 | } 26 | 27 | dimension: description { 28 | type: string 29 | sql: ${TABLE}."DESCRIPTION" ;; 30 | } 31 | 32 | dimension: has_issues { 33 | type: yesno 34 | sql: ${TABLE}."HAS_ISSUES" = 'true' ;; 35 | } 36 | 37 | dimension: has_wiki { 38 | type: yesno 39 | sql: ${TABLE}."HAS_WIKI" = 'true' ;; 40 | } 41 | 42 | dimension: is_private { 43 | type: yesno 44 | sql: ${TABLE}."IS_PRIVATE" = 'true' ;; 45 | } 46 | 47 | dimension: language { 48 | type: string 49 | sql: ${TABLE}."LANGUAGE" ;; 50 | } 51 | 52 | dimension: project { 53 | type: string 54 | sql: ${TABLE}."PROJECT" ;; 55 | } 56 | 57 | dimension: repository { 58 | type: string 59 | sql: ${TABLE}."REPOSITORY" ;; 60 | html: {{ value }} ;; 61 | } 62 | 63 | dimension: url { 64 | type: string 65 | sql: ${TABLE}."URL" ;; 66 | } 67 | 68 | measure: repositories { 69 | type: count 70 | drill_fields: [detail*] 71 | } 72 | 73 | # ----- Sets of fields for drilling ------ 74 | set: detail { 75 | fields: [ 76 | organization.organization, 77 | project, 78 | repository, 79 | description, 80 | created_date, 81 | language, 82 | pull_request.pull_requests, 83 | repository_commit.commits, 84 | issue.issues 85 | ] 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Devops Essentials by Keboola 2 | 3 | ## Keboola Blocks Intro (Scaffold Prerequisite) 4 | Looker Blocks powered by Keboola are designed to work in tandem with corresponding Keboola Scaffolds in the Keboola Connection platform. Similar to Blocks in nature, Keboola Scaffolds are templatized use-cases that can be instantly deployed into the Keboola platform, providing the whole data management and processing chain required to populate your Looker dashboards. 5 | 6 | ## Block Overview 7 | This Block connects to data from Keboola “Devops” Scaffolds into Looker. Its purpose is to provide quick out-of-the-box end-to-end integration and functionality to be used either stand-alone or to be combined with other data, into scorecards, etc. In order to set up the Keboola data feed, please contact us: [here](https://get.keboola.com/lookerblocks?block=devops_essentials). 8 | 9 | ## Data and Block Structure 10 | The Block contains two LookML dashboards: 11 | 12 | * Overview for checking recent commit/pull/issues activity and identifying unresolved issues. 13 | * User Activity for tracking activity of your team members. 14 | 15 | The underlying model contains four main explores: 16 | 17 | * Repository Commit - contains commits and info about repositories. 18 | * Pull Request - contains pull requests and their activity (comments, approvals…). 19 | * Issues - contains issues and their comments. 20 | * Event - contains activity of your team members to track it in one place (commits, pulls, issues, comments etc.). 21 | 22 | As a standard, the data gets provided as a connection to Keboola-provided Snowflake, but it can be easily changed to your own DWH of choice during the setup. 23 | 24 | The **Keboola Scaffold** will set up everything for you - from the data extraction to data transformation, to setting up the Snowflake database with necessary tables for the LookML. All you need to do is set up the connection to the database in Looker and add it to the Looker model. 25 | 26 | In case you want to enrich your Looker model and dashboards with other fields or objects, including the addition of more data sources, you can modify and extend the whole data extraction and processing directly in Keboola Connection. 27 | 28 | ## Customization 29 | The LookML contents of this block can also be modified/extended to best fit all use cases. 30 | This block utilizes Refinement files for customization. For more information on using refinements to customize marketplace blocks, please see [this documentation](https://docs.looker.com/data-modeling/marketplace/customize-blocks). 31 | -------------------------------------------------------------------------------- /views/issue.view.lkml: -------------------------------------------------------------------------------- 1 | view: issue { 2 | sql_table_name: @{SCHEMA_NAME}.ISSUE ;; 3 | drill_fields: [issue_id, title] 4 | 5 | dimension: issue_id { 6 | label: "Issue ID" 7 | primary_key: yes 8 | type: string 9 | sql: ${TABLE}."ISSUE_ID" ;; 10 | html: {{ value }} ;; 11 | } 12 | 13 | dimension_group: created { 14 | type: time 15 | timeframes: [ 16 | raw, 17 | time, 18 | date, 19 | week, 20 | month, 21 | quarter, 22 | year 23 | ] 24 | sql: ${TABLE}."CREATED_ON" ;; 25 | } 26 | 27 | dimension: description { 28 | type: string 29 | sql: ${TABLE}."DESCRIPTION" ;; 30 | } 31 | 32 | dimension: kind { 33 | type: string 34 | sql: ${TABLE}."KIND" ;; 35 | } 36 | 37 | dimension: number { 38 | type: number 39 | sql: ${TABLE}."NUMBER" ;; 40 | } 41 | 42 | dimension: priority { 43 | type: string 44 | sql: ${TABLE}."PRIORITY" ;; 45 | } 46 | 47 | dimension: reporter { 48 | type: string 49 | sql: ${TABLE}."REPORTER" ;; 50 | } 51 | 52 | dimension: repository_id { 53 | type: string 54 | hidden: yes 55 | sql: ${TABLE}."REPOSITORY_ID" ;; 56 | } 57 | 58 | dimension: state { 59 | type: string 60 | sql: ${TABLE}."STATE" ;; 61 | } 62 | 63 | dimension: title { 64 | type: string 65 | sql: ${TABLE}."TITLE" ;; 66 | html: {{ value }} ;; 67 | } 68 | 69 | dimension_group: updated { 70 | type: time 71 | timeframes: [ 72 | raw, 73 | time, 74 | date, 75 | week, 76 | month, 77 | quarter, 78 | year 79 | ] 80 | sql: ${TABLE}."UPDATED_ON" ;; 81 | } 82 | 83 | dimension: url { 84 | type: string 85 | sql: ${TABLE}."URL" ;; 86 | } 87 | 88 | dimension: user_id { 89 | type: string 90 | hidden: yes 91 | sql: ${TABLE}."USER_ID" ;; 92 | } 93 | 94 | dimension_group: since_created { 95 | type: duration 96 | intervals: [day] 97 | sql_start: ${TABLE}."CREATED_ON" ;; 98 | sql_end: current_date ;; 99 | drill_fields: [detail*] 100 | } 101 | 102 | dimension_group: since_updated { 103 | type: duration 104 | intervals: [day] 105 | sql_start: ${TABLE}."UPDATED_ON" ;; 106 | sql_end: current_date ;; 107 | drill_fields: [detail*] 108 | } 109 | 110 | measure: issues { 111 | type: count 112 | drill_fields: [detail*] 113 | } 114 | 115 | # ----- Sets of fields for drilling ------ 116 | set: detail { 117 | fields: [ 118 | organization.organization, 119 | user.user, 120 | repository.repository, 121 | issue_id, 122 | created_date, 123 | updated_date, 124 | issue_comment.issue_comments 125 | ] 126 | } 127 | } 128 | -------------------------------------------------------------------------------- /block_keboola_git_v2.model.lkml: -------------------------------------------------------------------------------- 1 | #⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 2 | #⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣠⣤⣤⣤⣤⣀⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 3 | #⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣴⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣤⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 4 | #⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣦⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 5 | #⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 6 | #⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 7 | #⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠛⠛⠛⠛⠛⠛⠻⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 8 | #⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 9 | #⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 10 | #⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 11 | #⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀⠀⠀ 12 | #⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀ 13 | #⠀⠀⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⠀ 14 | #⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀ 15 | #⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠀⠀⠀⠀⠀⠀⠀ 16 | #⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠟⠻⣧⠀⠀⠀⠀⢀⡀⠀⠀⢀⡀⠀⠀⠀⢀⣼⠟⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀ 17 | #⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠈⢧⡀⠀⠰⣿⣿⠆⠰⣿⣿⠆⠀⢀⡾⠁⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀ 18 | #⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣦⠀⠀⠀⠙⢦⡀⠈⠁⠀⠀⠈⠁⢀⡴⠋⠀⠀⠀⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀ 19 | #⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⠀⠀⠀⠉⠓⠶⠤⠤⠶⠚⠉⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀ 20 | #⠀⠀⠀⠀⠀⠀⠀⠸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡷⠆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠰⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀ 21 | #⠀⠀⠀⠀⠀⠀⠀⠀⢻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀ 22 | #⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠋⠀⠀⠀⣠⡾⠀⠀⠀⣰⣦⠀⠀⠀⢷⣄⠀⠀⠀⠙⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀ 23 | #⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⢠⣾⣿⠁⠀⠀⣸⣿⣿⡆⠀⠀⠈⣿⣷⡄⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 24 | #⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣶⣿⣿⡏⠀⠀⢀⣿⣿⣿⣿⡀⠀⠀⢹⣿⣿⣷⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 25 | #⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⢸⣿⣿⣿⣿⡇⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 26 | #⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠘⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⣤⣾⣿⣿⣿⣿⣷⣤⣤⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 27 | #⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 28 | #⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 29 | #⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠛⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 30 | #⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠻⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠟⠋⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 31 | #⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠉⠉⠉⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ 32 | 33 | 34 | # This Looker Block is designed to be powered by a scaffold in Keboola connection 35 | # that will acquire and transform data from HubSpot into the model expected here. 36 | # Please go to https://get.keboola.com/lookerblocks if you haven't already. 37 | 38 | # The connection name can be changed in the manifest file if desired, along with 39 | # other constants used by this block (Keboola will automatically create a connection 40 | # with this name) 41 | 42 | connection: "@{CONNECTION}" 43 | 44 | label: "Block Keboola Git Essentials" 45 | 46 | include: "/explores/*.explore.lkml" 47 | include: "/dashboards/*.dashboard.lookml" 48 | -------------------------------------------------------------------------------- /views/pull_request.view.lkml: -------------------------------------------------------------------------------- 1 | view: pull_request { 2 | sql_table_name: @{SCHEMA_NAME}.PULL_REQUEST ;; 3 | drill_fields: [pull_request_id, title] 4 | 5 | dimension: pull_request_id { 6 | label: "Pull Request ID" 7 | primary_key: yes 8 | type: string 9 | sql: ${TABLE}."PULL_REQUEST_ID" ;; 10 | html: {{ value }} ;; 11 | } 12 | 13 | dimension_group: created { 14 | type: time 15 | timeframes: [ 16 | raw, 17 | time, 18 | date, 19 | week, 20 | month, 21 | quarter, 22 | year 23 | ] 24 | sql: ${TABLE}."CREATED_ON" ;; 25 | } 26 | 27 | dimension: description { 28 | type: string 29 | sql: ${TABLE}."DESCRIPTION" ;; 30 | } 31 | 32 | dimension: repository_id { 33 | type: string 34 | hidden: yes 35 | sql: ${TABLE}."REPOSITORY_ID" ;; 36 | } 37 | 38 | dimension: state { 39 | type: string 40 | sql: ${TABLE}."STATE" ;; 41 | } 42 | 43 | dimension: title { 44 | type: string 45 | sql: ${TABLE}."TITLE" ;; 46 | html: {{ value }} ;; 47 | } 48 | 49 | dimension_group: updated { 50 | type: time 51 | timeframes: [ 52 | raw, 53 | time, 54 | date, 55 | week, 56 | month, 57 | quarter, 58 | year 59 | ] 60 | sql: ${TABLE}."UPDATED_ON" ;; 61 | } 62 | 63 | dimension: url { 64 | type: string 65 | sql: ${TABLE}."URL" ;; 66 | } 67 | 68 | dimension: user_id { 69 | type: string 70 | hidden: yes 71 | sql: ${TABLE}."USER_ID" ;; 72 | } 73 | 74 | dimension_group: since_created { 75 | type: duration 76 | intervals: [day] 77 | sql_start: ${TABLE}."CREATED_ON" ;; 78 | sql_end: current_date ;; 79 | drill_fields: [detail*] 80 | } 81 | 82 | dimension_group: since_updated { 83 | type: duration 84 | intervals: [day] 85 | sql_start: ${TABLE}."UPDATED_ON" ;; 86 | sql_end: current_date ;; 87 | drill_fields: [detail*] 88 | } 89 | 90 | dimension_group: to_update { 91 | type: duration 92 | intervals: [day] 93 | sql_start: ${TABLE}."CREATED_ON" ;; 94 | sql_end: ${TABLE}."UPDATED_ON" ;; 95 | drill_fields: [detail*] 96 | } 97 | 98 | measure: days_to_merge { 99 | type: sum 100 | sql: (CASE 101 | WHEN ${state} = 'MERGED' 102 | THEN ${days_to_update} 103 | ELSE NULL 104 | END) ;; 105 | value_format: "#,##0" 106 | drill_fields: [detail*] 107 | } 108 | 109 | measure: pull_requests { 110 | type: count 111 | drill_fields: [detail*] 112 | } 113 | 114 | # ----- Sets of fields for drilling ------ 115 | set: detail { 116 | fields: [ 117 | organization.organization, 118 | repository.repository, 119 | users.user, 120 | created_date, 121 | updated_date, 122 | pull_request_id, 123 | title, 124 | description, 125 | pull_request_activity.pull_request_activities 126 | ] 127 | } 128 | } 129 | -------------------------------------------------------------------------------- /dashboards/user_activity.dashboard.lookml: -------------------------------------------------------------------------------- 1 | - dashboard: users_activity 2 | title: Users Activity 3 | layout: newspaper 4 | elements: 5 | - name: 'powered by' 6 | type: text 7 | body_text: 9 | row: 0 10 | col: 18 11 | width: 6 12 | height: 2 13 | - name: 'scaffold' 14 | type: text 15 | title_text: '' 16 | subtitle_text: Git 17 | row: 0 18 | col: 0 19 | width: 6 20 | height: 2 21 | - name: 'dashboard' 22 | type: text 23 | title_text: '' 24 | subtitle_text: Users Activity 25 | body_text: '' 26 | row: 0 27 | col: 6 28 | width: 12 29 | height: 2 30 | - title: Users Overall Activity 31 | name: Users Overall Activity 32 | model: block_keboola_git_v2 33 | explore: event 34 | type: looker_column 35 | fields: [user.user, event.events, event.event] 36 | pivots: [event.event] 37 | sorts: [event.event 0, user.user] 38 | limit: 500 39 | color_application: 40 | collection_id: legacy 41 | palette_id: santa_cruz 42 | options: 43 | steps: 5 44 | x_axis_gridlines: false 45 | y_axis_gridlines: true 46 | show_view_names: false 47 | y_axes: [{label: '', orientation: left, series: [{axisId: Commit - event.events, 48 | id: Commit - event.events, name: Commit}, {axisId: Issue Comment - event.events, 49 | id: Issue Comment - event.events, name: Issue Comment}, {axisId: Issue 50 | Created - event.events, id: Issue Created - event.events, name: Issue 51 | Created}, {axisId: Pull Request Created - event.events, id: Pull Request 52 | Created - event.events, name: Pull Request Created}, {axisId: Pull Request 53 | Declined - event.events, id: Pull Request Declined - event.events, name: Pull 54 | Request Declined}, {axisId: Pull Request Merged - event.events, id: Pull 55 | Request Merged - event.events, name: Pull Request Merged}, {axisId: Pull 56 | Request Open - event.events, id: Pull Request Open - event.events, name: Pull 57 | Request Open}], showLabels: false, showValues: true, unpinAxis: false, 58 | tickDensity: default, tickDensityCustom: 5, type: linear}] 59 | show_y_axis_labels: true 60 | show_y_axis_ticks: true 61 | y_axis_tick_density: default 62 | y_axis_tick_density_custom: 5 63 | show_x_axis_label: false 64 | show_x_axis_ticks: true 65 | y_axis_scale_mode: linear 66 | x_axis_reversed: false 67 | y_axis_reversed: false 68 | plot_size_by_field: false 69 | trellis: '' 70 | stacking: normal 71 | limit_displayed_rows: false 72 | legend_position: center 73 | point_style: none 74 | series_colors: {} 75 | show_value_labels: true 76 | label_density: 25 77 | x_axis_scale: auto 78 | y_axis_combined: true 79 | reference_lines: [] 80 | ordering: none 81 | show_null_labels: false 82 | show_totals_labels: true 83 | show_silhouette: false 84 | totals_color: "#353b49" 85 | listen: 86 | Date: event.date_date 87 | Organization: organization.organization 88 | User: user.user 89 | row: 2 90 | col: 0 91 | width: 12 92 | height: 7 93 | - title: Users Pull Requests 94 | name: Users Pull Requests 95 | model: block_keboola_git_v2 96 | explore: pull_request 97 | type: looker_column 98 | fields: [user.user, pull_request.pull_requests, pull_request.state] 99 | pivots: [pull_request.state] 100 | sorts: [pull_request.pull_requests desc 0, pull_request.state] 101 | limit: 500 102 | color_application: 103 | collection_id: legacy 104 | palette_id: santa_cruz 105 | options: 106 | steps: 5 107 | x_axis_gridlines: false 108 | y_axis_gridlines: true 109 | show_view_names: false 110 | show_y_axis_labels: true 111 | show_y_axis_ticks: true 112 | y_axis_tick_density: default 113 | y_axis_tick_density_custom: 5 114 | show_x_axis_label: true 115 | show_x_axis_ticks: true 116 | y_axis_scale_mode: linear 117 | x_axis_reversed: false 118 | y_axis_reversed: false 119 | plot_size_by_field: false 120 | trellis: '' 121 | stacking: normal 122 | limit_displayed_rows: false 123 | legend_position: center 124 | point_style: none 125 | series_colors: 126 | DECLINED - pull_request.pull_requests: "#ed6168" 127 | MERGED - pull_request.pull_requests: "#49cec1" 128 | OPEN - pull_request.pull_requests: "#1ea8df" 129 | show_value_labels: true 130 | label_density: 25 131 | x_axis_scale: auto 132 | y_axis_combined: true 133 | reference_lines: [] 134 | ordering: none 135 | show_null_labels: false 136 | show_totals_labels: true 137 | show_silhouette: false 138 | totals_color: "#353b49" 139 | listen: 140 | Date: pull_request.created_date 141 | Organization: organization.organization 142 | User: user.user 143 | row: 9 144 | col: 0 145 | width: 12 146 | height: 7 147 | - title: Repositories Users Are Developing In (Commits/Pulls) 148 | name: Repositories Users Are Developing In (Commits/Pulls) 149 | model: block_keboola_git_v2 150 | explore: event 151 | type: looker_column 152 | fields: [user.user, repository.repositories, repository.language] 153 | pivots: [repository.language] 154 | filters: 155 | event.event: Commit,Pull Request Created 156 | event.events: ">0" 157 | sorts: [user.user, repository.language] 158 | limit: 500 159 | color_application: 160 | collection_id: legacy 161 | palette_id: santa_cruz 162 | options: 163 | steps: 5 164 | x_axis_gridlines: false 165 | y_axis_gridlines: true 166 | show_view_names: false 167 | y_axes: [{label: '', orientation: left, series: [{axisId: Commit - event.events, 168 | id: Commit - event.events, name: Commit}, {axisId: Issue Comment - event.events, 169 | id: Issue Comment - event.events, name: Issue Comment}, {axisId: Issue 170 | Created - event.events, id: Issue Created - event.events, name: Issue 171 | Created}, {axisId: Pull Request Created - event.events, id: Pull Request 172 | Created - event.events, name: Pull Request Created}, {axisId: Pull Request 173 | Declined - event.events, id: Pull Request Declined - event.events, name: Pull 174 | Request Declined}, {axisId: Pull Request Merged - event.events, id: Pull 175 | Request Merged - event.events, name: Pull Request Merged}, {axisId: Pull 176 | Request Open - event.events, id: Pull Request Open - event.events, name: Pull 177 | Request Open}], showLabels: false, showValues: true, unpinAxis: false, 178 | tickDensity: default, tickDensityCustom: 5, type: linear}] 179 | show_y_axis_labels: true 180 | show_y_axis_ticks: true 181 | y_axis_tick_density: default 182 | y_axis_tick_density_custom: 5 183 | show_x_axis_label: false 184 | show_x_axis_ticks: true 185 | y_axis_scale_mode: linear 186 | x_axis_reversed: false 187 | y_axis_reversed: false 188 | plot_size_by_field: false 189 | trellis: '' 190 | stacking: normal 191 | limit_displayed_rows: false 192 | legend_position: center 193 | point_style: none 194 | series_colors: {} 195 | series_labels: 196 | " - repository.repositories": unknown 197 | show_value_labels: true 198 | label_density: 25 199 | x_axis_scale: auto 200 | y_axis_combined: true 201 | reference_lines: [] 202 | ordering: none 203 | show_null_labels: false 204 | show_totals_labels: true 205 | show_silhouette: false 206 | totals_color: "#353b49" 207 | listen: 208 | Date: event.date_date 209 | Organization: organization.organization 210 | User: user.user 211 | row: 2 212 | col: 12 213 | width: 12 214 | height: 7 215 | - title: Users Commits 216 | name: Users Commits 217 | model: block_keboola_git_v2 218 | explore: repository_commit 219 | type: looker_column 220 | fields: [repository_commit.commits, user.user, repository.language] 221 | pivots: [repository.language] 222 | sorts: [repository_commit.commits desc 0, repository.language] 223 | limit: 500 224 | color_application: 225 | collection_id: legacy 226 | palette_id: santa_cruz 227 | options: 228 | steps: 5 229 | x_axis_gridlines: false 230 | y_axis_gridlines: true 231 | show_view_names: false 232 | y_axes: [{label: '', orientation: left, series: [{axisId: php - repository_commit.commits, 233 | id: php - repository_commit.commits, name: php}, {axisId: python - repository_commit.commits, 234 | id: python - repository_commit.commits, name: python}, {axisId: unknown 235 | - repository_commit.commits, id: unknown - repository_commit.commits, 236 | name: unknown}], showLabels: false, showValues: true, unpinAxis: false, 237 | tickDensity: default, tickDensityCustom: 5, type: linear}] 238 | show_y_axis_labels: true 239 | show_y_axis_ticks: true 240 | y_axis_tick_density: default 241 | y_axis_tick_density_custom: 5 242 | show_x_axis_label: false 243 | show_x_axis_ticks: true 244 | y_axis_scale_mode: linear 245 | x_axis_reversed: false 246 | y_axis_reversed: false 247 | plot_size_by_field: false 248 | trellis: '' 249 | stacking: normal 250 | limit_displayed_rows: false 251 | legend_position: center 252 | point_style: none 253 | show_value_labels: true 254 | label_density: 25 255 | x_axis_scale: auto 256 | y_axis_combined: true 257 | ordering: none 258 | show_null_labels: false 259 | show_totals_labels: true 260 | show_silhouette: false 261 | totals_color: "#353b49" 262 | listen: 263 | Date: repository_commit.date_date 264 | Organization: organization.organization 265 | User: user.user 266 | row: 16 267 | col: 0 268 | width: 12 269 | height: 7 270 | - title: Users Assigned Issues 271 | name: Users Assigned Issues 272 | model: block_keboola_git_v2 273 | explore: issue 274 | type: looker_column 275 | fields: [user.user, issue.kind, issue.issues] 276 | pivots: [issue.kind] 277 | sorts: [issue.issues desc 0, issue.kind] 278 | limit: 500 279 | color_application: 280 | collection_id: legacy 281 | palette_id: santa_cruz 282 | options: 283 | steps: 5 284 | x_axis_gridlines: false 285 | y_axis_gridlines: true 286 | show_view_names: false 287 | y_axes: [{label: '', orientation: left, series: [{axisId: bug - issue.issues, 288 | id: bug - issue.issues, name: bug}, {axisId: enhancement - issue.issues, 289 | id: enhancement - issue.issues, name: enhancement}, {axisId: proposal 290 | - issue.issues, id: proposal - issue.issues, name: proposal}, {axisId: task 291 | - issue.issues, id: task - issue.issues, name: task}], showLabels: false, 292 | showValues: true, unpinAxis: false, tickDensity: default, tickDensityCustom: 5, 293 | type: linear}] 294 | show_y_axis_labels: true 295 | show_y_axis_ticks: true 296 | y_axis_tick_density: default 297 | y_axis_tick_density_custom: 5 298 | show_x_axis_label: false 299 | show_x_axis_ticks: true 300 | y_axis_scale_mode: linear 301 | x_axis_reversed: false 302 | y_axis_reversed: false 303 | plot_size_by_field: false 304 | trellis: '' 305 | stacking: normal 306 | limit_displayed_rows: false 307 | legend_position: center 308 | point_style: none 309 | show_value_labels: true 310 | label_density: 25 311 | x_axis_scale: auto 312 | y_axis_combined: true 313 | ordering: none 314 | show_null_labels: false 315 | show_totals_labels: true 316 | show_silhouette: false 317 | totals_color: "#353b49" 318 | listen: 319 | Date: issue.created_date 320 | Organization: organization.organization 321 | User: user.user 322 | row: 16 323 | col: 12 324 | width: 12 325 | height: 7 326 | - title: Users Activities Above Pull Requests (Reviews) 327 | name: Users Activities Above Pull Requests (Reviews) 328 | model: block_keboola_git_v2 329 | explore: pull_request 330 | type: looker_column 331 | fields: [pull_request_activity.pull_request_activities, pull_request_activity.user, 332 | pull_request_activity.state] 333 | pivots: [pull_request_activity.state] 334 | sorts: [pull_request_activity.pull_request_activities desc 0, pull_request_activity.state] 335 | limit: 500 336 | color_application: 337 | collection_id: legacy 338 | palette_id: santa_cruz 339 | options: 340 | steps: 5 341 | x_axis_gridlines: false 342 | y_axis_gridlines: true 343 | show_view_names: false 344 | show_y_axis_labels: true 345 | show_y_axis_ticks: true 346 | y_axis_tick_density: default 347 | y_axis_tick_density_custom: 5 348 | show_x_axis_label: true 349 | show_x_axis_ticks: true 350 | y_axis_scale_mode: linear 351 | x_axis_reversed: false 352 | y_axis_reversed: false 353 | plot_size_by_field: false 354 | trellis: '' 355 | stacking: normal 356 | limit_displayed_rows: false 357 | legend_position: center 358 | point_style: none 359 | series_colors: 360 | DECLINED - pull_request_activity.pull_request_activities: "#ed6168" 361 | MERGED - pull_request_activity.pull_request_activities: "#49cec1" 362 | show_value_labels: true 363 | label_density: 25 364 | x_axis_scale: auto 365 | y_axis_combined: true 366 | reference_lines: [] 367 | ordering: none 368 | show_null_labels: false 369 | show_totals_labels: true 370 | show_silhouette: false 371 | totals_color: "#353b49" 372 | listen: 373 | Date: pull_request_activity.date_date 374 | Organization: organization.organization 375 | User: pull_request_activity.user 376 | row: 9 377 | col: 12 378 | width: 12 379 | height: 7 380 | filters: 381 | - name: Date 382 | title: Date 383 | type: date_filter 384 | default_value: 3 months 385 | allow_multiple_values: true 386 | required: false 387 | - name: Organization 388 | title: Organization 389 | type: field_filter 390 | default_value: '' 391 | allow_multiple_values: true 392 | required: false 393 | model: block_keboola_git_v2 394 | explore: organization 395 | listens_to_filters: [] 396 | field: organization.organization 397 | - name: User 398 | title: User 399 | type: field_filter 400 | default_value: "-External User" 401 | allow_multiple_values: true 402 | required: false 403 | model: block_keboola_git_v2 404 | explore: user 405 | listens_to_filters: [Organization] 406 | field: user.user -------------------------------------------------------------------------------- /dashboards/overview.dashboard.lookml: -------------------------------------------------------------------------------- 1 | - dashboard: overview 2 | title: Overview 3 | layout: newspaper 4 | elements: 5 | - name: 'powered by' 6 | type: text 7 | body_text: 9 | row: 0 10 | col: 18 11 | width: 6 12 | height: 2 13 | - name: 'block' 14 | type: text 15 | title_text: '' 16 | subtitle_text: Git 17 | row: 0 18 | col: 0 19 | width: 6 20 | height: 2 21 | - name: 'dashboard' 22 | type: text 23 | title_text: '' 24 | subtitle_text: Overview 25 | body_text: '' 26 | row: 0 27 | col: 6 28 | width: 12 29 | height: 2 30 | - title: Overall Activity 31 | name: Overall Activity 32 | model: block_keboola_git_v2 33 | explore: event 34 | type: looker_area 35 | fields: [event.date_week, event.events, event.event] 36 | pivots: [event.event] 37 | fill_fields: [event.date_week] 38 | sorts: [event.date_week desc, event.event] 39 | limit: 500 40 | color_application: 41 | collection_id: legacy 42 | palette_id: santa_cruz 43 | options: 44 | steps: 5 45 | x_axis_gridlines: false 46 | y_axis_gridlines: true 47 | show_view_names: false 48 | y_axes: [{label: '', orientation: left, series: [{axisId: Commit - event.events, 49 | id: Commit - event.events, name: Commit}, {axisId: Issue Comment - event.events, 50 | id: Issue Comment - event.events, name: Issue Comment}, {axisId: Issue 51 | Created - event.events, id: Issue Created - event.events, name: Issue 52 | Created}, {axisId: Pull Request Created - event.events, id: Pull Request 53 | Created - event.events, name: Pull Request Created}, {axisId: Pull Request 54 | Declined - event.events, id: Pull Request Declined - event.events, name: Pull 55 | Request Declined}, {axisId: Pull Request Merged - event.events, id: Pull 56 | Request Merged - event.events, name: Pull Request Merged}, {axisId: Pull 57 | Request Open - event.events, id: Pull Request Open - event.events, name: Pull 58 | Request Open}], showLabels: false, showValues: true, unpinAxis: false, 59 | tickDensity: default, tickDensityCustom: 5, type: linear}] 60 | show_y_axis_labels: true 61 | show_y_axis_ticks: true 62 | y_axis_tick_density: default 63 | y_axis_tick_density_custom: 5 64 | show_x_axis_label: false 65 | show_x_axis_ticks: true 66 | y_axis_scale_mode: linear 67 | x_axis_reversed: false 68 | y_axis_reversed: false 69 | plot_size_by_field: false 70 | trellis: '' 71 | stacking: normal 72 | limit_displayed_rows: false 73 | legend_position: center 74 | series_types: {} 75 | point_style: circle_outline 76 | show_value_labels: true 77 | label_density: 25 78 | x_axis_scale: auto 79 | y_axis_combined: true 80 | show_null_points: true 81 | interpolation: linear 82 | show_totals_labels: true 83 | show_silhouette: false 84 | totals_color: "#353b49" 85 | ordering: none 86 | show_null_labels: false 87 | listen: 88 | Date: event.date_date 89 | Organization: organization.organization 90 | User: user.user 91 | row: 4 92 | col: 0 93 | width: 24 94 | height: 7 95 | - title: Commits 96 | name: Commits KPI 97 | model: block_keboola_git_v2 98 | explore: repository_commit 99 | type: single_value 100 | fields: [repository_commit.commits] 101 | limit: 500 102 | listen: 103 | Date: repository_commit.date_date 104 | Organization: organization.organization 105 | User: user.user 106 | row: 2 107 | col: 12 108 | width: 6 109 | height: 2 110 | - title: Pull Requests 111 | name: Pull Requests KPI 112 | model: block_keboola_git_v2 113 | explore: pull_request 114 | type: single_value 115 | fields: [pull_request.pull_requests] 116 | limit: 500 117 | listen: 118 | Date: pull_request.created_date 119 | Organization: organization.organization 120 | User: user.user 121 | row: 2 122 | col: 6 123 | width: 6 124 | height: 2 125 | - title: Issues 126 | name: Issues KPI 127 | model: block_keboola_git_v2 128 | explore: issue 129 | type: single_value 130 | fields: [issue.issues] 131 | limit: 500 132 | listen: 133 | Date: issue.created_date 134 | Organization: organization.organization 135 | User: user.user 136 | row: 2 137 | col: 18 138 | width: 6 139 | height: 2 140 | - title: New Repositories 141 | name: New Repositories 142 | model: block_keboola_git_v2 143 | explore: repository 144 | type: single_value 145 | fields: [repository.repositories] 146 | limit: 500 147 | listen: 148 | Date: repository.created_date 149 | row: 2 150 | col: 0 151 | width: 6 152 | height: 2 153 | - name: Pull Requests 154 | type: text 155 | title_text: Pull Requests 156 | row: 18 157 | col: 0 158 | width: 24 159 | height: 2 160 | - title: Pull Requests Trend 161 | name: Pull Requests Trend 162 | model: block_keboola_git_v2 163 | explore: pull_request 164 | type: looker_column 165 | fields: [pull_request.pull_requests, pull_request.state, pull_request.created_week] 166 | pivots: [pull_request.state] 167 | fill_fields: [pull_request.created_week] 168 | sorts: [pull_request.state] 169 | limit: 500 170 | color_application: 171 | collection_id: legacy 172 | palette_id: santa_cruz 173 | options: 174 | steps: 5 175 | x_axis_gridlines: false 176 | y_axis_gridlines: true 177 | show_view_names: false 178 | y_axes: [{label: '', orientation: left, series: [{axisId: DECLINED - pull_request.pull_requests, 179 | id: DECLINED - pull_request.pull_requests, name: DECLINED}, {axisId: MERGED 180 | - pull_request.pull_requests, id: MERGED - pull_request.pull_requests, 181 | name: MERGED}, {axisId: OPEN - pull_request.pull_requests, id: OPEN - 182 | pull_request.pull_requests, name: OPEN}], showLabels: false, showValues: true, 183 | unpinAxis: false, tickDensity: default, tickDensityCustom: 5, type: linear}] 184 | show_y_axis_labels: true 185 | show_y_axis_ticks: true 186 | y_axis_tick_density: default 187 | y_axis_tick_density_custom: 5 188 | show_x_axis_label: false 189 | show_x_axis_ticks: true 190 | y_axis_scale_mode: linear 191 | x_axis_reversed: false 192 | y_axis_reversed: false 193 | plot_size_by_field: false 194 | trellis: '' 195 | stacking: normal 196 | limit_displayed_rows: false 197 | legend_position: center 198 | series_types: {} 199 | point_style: none 200 | series_colors: 201 | DECLINED - pull_request.pull_requests: "#ed6168" 202 | MERGED - pull_request.pull_requests: "#49cec1" 203 | OPEN - pull_request.pull_requests: "#1ea8df" 204 | show_value_labels: true 205 | label_density: 25 206 | x_axis_scale: auto 207 | y_axis_combined: true 208 | ordering: none 209 | show_null_labels: false 210 | show_totals_labels: true 211 | show_silhouette: false 212 | totals_color: "#353b49" 213 | listen: 214 | Date: pull_request.created_date 215 | Organization: organization.organization 216 | User: user.user 217 | row: 20 218 | col: 12 219 | width: 12 220 | height: 7 221 | - title: Pull Requests by Repository (TOP 10) 222 | name: Pull Requests by Repository (TOP 10) 223 | model: block_keboola_git_v2 224 | explore: pull_request 225 | type: looker_bar 226 | fields: [pull_request.pull_requests, pull_request.state, repository.repository] 227 | pivots: [pull_request.state] 228 | sorts: [pull_request.state 0, pull_request.pull_requests desc 3] 229 | limit: 10 230 | row_total: right 231 | color_application: 232 | collection_id: legacy 233 | palette_id: santa_cruz 234 | options: 235 | steps: 5 236 | x_axis_gridlines: false 237 | y_axis_gridlines: true 238 | show_view_names: false 239 | y_axes: [{label: '', orientation: left, series: [{axisId: DECLINED - pull_request.pull_requests, 240 | id: DECLINED - pull_request.pull_requests, name: DECLINED}, {axisId: MERGED 241 | - pull_request.pull_requests, id: MERGED - pull_request.pull_requests, 242 | name: MERGED}, {axisId: OPEN - pull_request.pull_requests, id: OPEN - 243 | pull_request.pull_requests, name: OPEN}], showLabels: false, showValues: true, 244 | unpinAxis: false, tickDensity: default, tickDensityCustom: 5, type: linear}] 245 | show_y_axis_labels: true 246 | show_y_axis_ticks: true 247 | y_axis_tick_density: default 248 | y_axis_tick_density_custom: 5 249 | show_x_axis_label: false 250 | show_x_axis_ticks: true 251 | y_axis_scale_mode: linear 252 | x_axis_reversed: false 253 | y_axis_reversed: false 254 | plot_size_by_field: false 255 | trellis: '' 256 | stacking: normal 257 | limit_displayed_rows: false 258 | legend_position: center 259 | series_types: {} 260 | point_style: none 261 | series_colors: 262 | DECLINED - pull_request.pull_requests: "#ed6168" 263 | MERGED - pull_request.pull_requests: "#49cec1" 264 | OPEN - pull_request.pull_requests: "#1ea8df" 265 | show_value_labels: false 266 | label_density: 25 267 | x_axis_scale: auto 268 | y_axis_combined: true 269 | ordering: none 270 | show_null_labels: false 271 | show_totals_labels: true 272 | show_silhouette: false 273 | totals_color: "#353b49" 274 | listen: 275 | Date: pull_request.created_date 276 | Organization: organization.organization 277 | User: user.user 278 | row: 20 279 | col: 0 280 | width: 12 281 | height: 7 282 | - name: Commits 283 | type: text 284 | title_text: Commits 285 | row: 27 286 | col: 0 287 | width: 24 288 | height: 2 289 | - title: Issues Trend 290 | name: Issues Trend 291 | model: block_keboola_git_v2 292 | explore: issue 293 | type: looker_column 294 | fields: [issue.issues, issue.created_week, issue.kind] 295 | pivots: [issue.kind] 296 | fill_fields: [issue.created_week] 297 | sorts: [issue.created_week desc, issue.kind] 298 | limit: 500 299 | color_application: 300 | collection_id: legacy 301 | palette_id: santa_cruz 302 | options: 303 | steps: 5 304 | x_axis_gridlines: false 305 | y_axis_gridlines: true 306 | show_view_names: false 307 | y_axes: [{label: '', orientation: left, series: [{axisId: bug - issue.issues, 308 | id: bug - issue.issues, name: bug}, {axisId: enhancement - issue.issues, 309 | id: enhancement - issue.issues, name: enhancement}, {axisId: proposal 310 | - issue.issues, id: proposal - issue.issues, name: proposal}, {axisId: task 311 | - issue.issues, id: task - issue.issues, name: task}], showLabels: false, 312 | showValues: true, unpinAxis: false, tickDensity: default, tickDensityCustom: 5, 313 | type: linear}] 314 | show_y_axis_labels: true 315 | show_y_axis_ticks: true 316 | y_axis_tick_density: default 317 | y_axis_tick_density_custom: 5 318 | show_x_axis_label: false 319 | show_x_axis_ticks: true 320 | y_axis_scale_mode: linear 321 | x_axis_reversed: false 322 | y_axis_reversed: false 323 | plot_size_by_field: false 324 | trellis: '' 325 | stacking: normal 326 | limit_displayed_rows: false 327 | legend_position: center 328 | series_types: {} 329 | point_style: none 330 | series_colors: 331 | bug - issue.issues: "#ed6168" 332 | proposal - issue.issues: "#e9b404" 333 | enhancement - issue.issues: "#49cec1" 334 | task - issue.issues: "#1ea8df" 335 | show_value_labels: true 336 | label_density: 25 337 | x_axis_scale: auto 338 | y_axis_combined: true 339 | ordering: none 340 | show_null_labels: false 341 | show_totals_labels: true 342 | show_silhouette: false 343 | totals_color: "#353b49" 344 | listen: 345 | Date: issue.created_date 346 | Organization: organization.organization 347 | User: user.user 348 | row: 38 349 | col: 12 350 | width: 12 351 | height: 7 352 | - name: Issues 353 | type: text 354 | title_text: Issues 355 | row: 36 356 | col: 0 357 | width: 24 358 | height: 2 359 | - title: Issues by Repository (TOP 10) 360 | name: Issues by Repository (TOP 10) 361 | model: block_keboola_git_v2 362 | explore: issue 363 | type: looker_bar 364 | fields: [issue.issues, issue.kind, repository.repository] 365 | pivots: [issue.kind] 366 | sorts: [issue.kind 0, issue.issues desc 4] 367 | limit: 10 368 | row_total: right 369 | color_application: 370 | collection_id: legacy 371 | palette_id: santa_cruz 372 | options: 373 | steps: 5 374 | x_axis_gridlines: false 375 | y_axis_gridlines: true 376 | show_view_names: false 377 | y_axes: [{label: '', orientation: left, series: [{axisId: bug - issue.issues, 378 | id: bug - issue.issues, name: bug}, {axisId: enhancement - issue.issues, 379 | id: enhancement - issue.issues, name: enhancement}, {axisId: proposal 380 | - issue.issues, id: proposal - issue.issues, name: proposal}, {axisId: task 381 | - issue.issues, id: task - issue.issues, name: task}], showLabels: false, 382 | showValues: true, unpinAxis: false, tickDensity: default, tickDensityCustom: 5, 383 | type: linear}] 384 | show_y_axis_labels: true 385 | show_y_axis_ticks: true 386 | y_axis_tick_density: default 387 | y_axis_tick_density_custom: 5 388 | show_x_axis_label: false 389 | show_x_axis_ticks: true 390 | y_axis_scale_mode: linear 391 | x_axis_reversed: false 392 | y_axis_reversed: false 393 | plot_size_by_field: false 394 | trellis: '' 395 | stacking: normal 396 | limit_displayed_rows: false 397 | legend_position: center 398 | series_types: {} 399 | point_style: none 400 | series_colors: 401 | bug - issue.issues: "#ed6168" 402 | proposal - issue.issues: "#e9b404" 403 | enhancement - issue.issues: "#49cec1" 404 | task - issue.issues: "#1ea8df" 405 | show_value_labels: true 406 | label_density: 25 407 | x_axis_scale: auto 408 | y_axis_combined: true 409 | ordering: none 410 | show_null_labels: false 411 | show_totals_labels: true 412 | show_silhouette: false 413 | totals_color: "#353b49" 414 | listen: 415 | Date: issue.created_date 416 | Organization: organization.organization 417 | User: user.user 418 | row: 38 419 | col: 0 420 | width: 12 421 | height: 7 422 | - title: Issues Open For More Than 30 Days 423 | name: Issues Open For More Than 30 Days 424 | model: block_keboola_git_v2 425 | explore: issue 426 | type: table 427 | fields: [repository.repository, issue.title, issue.kind, issue.days_since_created, 428 | issue.days_since_updated] 429 | filters: 430 | issue.state: new 431 | issue.days_since_created: ">30" 432 | sorts: [issue.days_since_created desc] 433 | limit: 500 434 | show_view_names: false 435 | show_row_numbers: false 436 | truncate_column_names: false 437 | hide_totals: false 438 | hide_row_totals: false 439 | table_theme: gray 440 | limit_displayed_rows: false 441 | enable_conditional_formatting: true 442 | conditional_formatting: [{type: along a scale..., value: !!null '', background_color: "#62bad4", 443 | font_color: !!null '', color_application: {collection_id: legacy, palette_id: legacy_sequential3, 444 | options: {steps: 5, reverse: true, constraints: {min: {type: number, value: 30}}}}, 445 | bold: false, italic: false, strikethrough: false, fields: !!null ''}] 446 | conditional_formatting_include_totals: false 447 | conditional_formatting_include_nulls: false 448 | listen: 449 | Organization: organization.organization 450 | User: user.user 451 | row: 11 452 | col: 0 453 | width: 12 454 | height: 5 455 | - title: Commits by Repository (TOP 10) 456 | name: Commits by Repository (TOP 10) 457 | model: block_keboola_git_v2 458 | explore: repository_commit 459 | type: looker_bar 460 | fields: [repository.repository, repository.language, repository_commit.commits] 461 | pivots: [repository.language] 462 | sorts: [repository_commit.commits desc 3, repository.language 0] 463 | limit: 10 464 | row_total: right 465 | color_application: 466 | collection_id: legacy 467 | palette_id: santa_cruz 468 | options: 469 | steps: 5 470 | x_axis_gridlines: false 471 | y_axis_gridlines: true 472 | show_view_names: false 473 | y_axes: [{label: '', orientation: bottom, series: [{axisId: repository_commit.commits, 474 | id: php - repository_commit.commits, name: php}, {axisId: repository_commit.commits, 475 | id: python - repository_commit.commits, name: python}, {axisId: repository_commit.commits, 476 | id: unknown - repository_commit.commits, name: unknown}, {axisId: repository_commit.commits, 477 | id: Row Total - repository_commit.commits, name: Row Total}], showLabels: false, 478 | showValues: true, unpinAxis: false, tickDensity: default, tickDensityCustom: 5, 479 | type: linear}] 480 | show_y_axis_labels: true 481 | show_y_axis_ticks: true 482 | y_axis_tick_density: default 483 | y_axis_tick_density_custom: 5 484 | show_x_axis_label: false 485 | show_x_axis_ticks: true 486 | y_axis_scale_mode: linear 487 | x_axis_reversed: false 488 | y_axis_reversed: false 489 | plot_size_by_field: false 490 | trellis: '' 491 | stacking: normal 492 | limit_displayed_rows: false 493 | legend_position: center 494 | series_types: {} 495 | point_style: none 496 | show_value_labels: false 497 | label_density: 25 498 | x_axis_scale: auto 499 | y_axis_combined: true 500 | ordering: none 501 | show_null_labels: false 502 | show_totals_labels: true 503 | show_silhouette: false 504 | totals_color: "#353b49" 505 | listen: 506 | Date: repository_commit.date_date 507 | Organization: organization.organization 508 | User: user.user 509 | row: 29 510 | col: 0 511 | width: 12 512 | height: 7 513 | - title: Commits Trend 514 | name: Commits Trend 515 | model: block_keboola_git_v2 516 | explore: repository_commit 517 | type: looker_column 518 | fields: [repository.language, repository_commit.date_week, repository_commit.commits] 519 | pivots: [repository.language] 520 | fill_fields: [repository_commit.date_week] 521 | sorts: [repository_commit.date_week desc, repository.language] 522 | limit: 500 523 | color_application: 524 | collection_id: legacy 525 | palette_id: santa_cruz 526 | options: 527 | steps: 5 528 | x_axis_gridlines: false 529 | y_axis_gridlines: true 530 | show_view_names: false 531 | y_axes: [{label: '', orientation: left, series: [{axisId: php - repository_commit.commits, 532 | id: php - repository_commit.commits, name: php}, {axisId: python - repository_commit.commits, 533 | id: python - repository_commit.commits, name: python}, {axisId: unknown 534 | - repository_commit.commits, id: unknown - repository_commit.commits, 535 | name: unknown}], showLabels: false, showValues: true, unpinAxis: false, 536 | tickDensity: default, tickDensityCustom: 5, type: linear}] 537 | show_y_axis_labels: true 538 | show_y_axis_ticks: true 539 | y_axis_tick_density: default 540 | y_axis_tick_density_custom: 5 541 | show_x_axis_label: false 542 | show_x_axis_ticks: true 543 | y_axis_scale_mode: linear 544 | x_axis_reversed: false 545 | y_axis_reversed: false 546 | plot_size_by_field: false 547 | trellis: '' 548 | stacking: normal 549 | limit_displayed_rows: false 550 | legend_position: center 551 | series_types: {} 552 | point_style: none 553 | show_value_labels: true 554 | label_density: 25 555 | x_axis_scale: auto 556 | y_axis_combined: true 557 | ordering: none 558 | show_null_labels: false 559 | show_totals_labels: true 560 | show_silhouette: false 561 | totals_color: "#353b49" 562 | show_null_points: true 563 | interpolation: linear 564 | listen: 565 | Date: repository_commit.date_date 566 | Organization: organization.organization 567 | User: user.user 568 | row: 29 569 | col: 12 570 | width: 12 571 | height: 7 572 | - title: Pull Requests Stalled For More Than 2 Days 573 | name: Pull Requests Stalled For More Than 2 Days 574 | model: block_keboola_git_v2 575 | explore: pull_request 576 | type: table 577 | fields: [repository.repository, pull_request.title, pull_request.days_since_updated] 578 | filters: 579 | pull_request.state: OPEN 580 | pull_request.days_since_updated: ">2" 581 | sorts: [pull_request.days_since_updated desc] 582 | limit: 500 583 | show_view_names: false 584 | show_row_numbers: true 585 | truncate_column_names: false 586 | hide_totals: false 587 | hide_row_totals: false 588 | table_theme: gray 589 | limit_displayed_rows: false 590 | enable_conditional_formatting: true 591 | conditional_formatting: [{type: along a scale..., value: !!null '', background_color: "#62bad4", 592 | font_color: !!null '', color_application: {collection_id: legacy, palette_id: legacy_sequential3, 593 | options: {steps: 5, reverse: true, constraints: {min: {type: number, value: 2}}}}, 594 | bold: false, italic: false, strikethrough: false, fields: !!null ''}] 595 | conditional_formatting_include_totals: false 596 | conditional_formatting_include_nulls: false 597 | series_types: {} 598 | listen: 599 | Organization: organization.organization 600 | User: user.user 601 | row: 11 602 | col: 12 603 | width: 12 604 | height: 7 605 | filters: 606 | - name: Date 607 | title: Date 608 | type: date_filter 609 | default_value: 3 months 610 | allow_multiple_values: true 611 | required: false 612 | - name: Organization 613 | title: Organization 614 | type: field_filter 615 | default_value: '' 616 | allow_multiple_values: true 617 | required: false 618 | model: block_keboola_git_v2 619 | explore: organization 620 | listens_to_filters: [] 621 | field: organization.organization 622 | - name: User 623 | title: User 624 | type: field_filter 625 | default_value: '' 626 | allow_multiple_values: true 627 | required: false 628 | model: block_keboola_git_v2 629 | explore: user 630 | listens_to_filters: [Organization] 631 | field: user.user --------------------------------------------------------------------------------