diff --git a/models/github.yml b/models/github.yml index 7e485fd..bdd8dfc 100644 --- a/models/github.yml +++ b/models/github.yml @@ -184,7 +184,6 @@ models: - name: day description: The reporting day tests: - - unique - not_null - name: number_issues_opened description: The total number of issues created during this time period @@ -207,6 +206,9 @@ models: - name: number_prs_closed_without_merge description: The total number of pull requests closed without a merge during this time period + - name: repository + description: The name of the repository + - name: sum_days_pr_open description: The total number of days a pull request opened during this time period was open @@ -221,7 +223,6 @@ models: - name: week description: The reporting week tests: - - unique - not_null - name: number_issues_opened description: The total number of issues created during this time period @@ -249,6 +250,9 @@ models: - name: longest_days_pr_open description: The longest number of days a pull request opened during this time period was open + + - name: repository + description: The name of the repository - name: github__monthly_metrics description: > @@ -257,7 +261,6 @@ models: - name: month description: The reporting month tests: - - unique - not_null - name: number_issues_opened description: The total number of issues created during this time period @@ -285,6 +288,9 @@ models: - name: longest_days_pr_open description: The longest number of days a pull request opened during this time period was open + + - name: repository + description: The name of the repository - name: github__quarterly_metrics description: > @@ -293,7 +299,6 @@ models: - name: quarter description: The reporting quarter tests: - - unique - not_null - name: number_issues_opened description: The total number of issues created during this time period @@ -321,4 +326,7 @@ models: - name: longest_days_pr_open description: The longest number of days a pull request opened during this time period was open + + - name: repository + description: The name of the repository \ No newline at end of file diff --git a/models/github__daily_metrics.sql b/models/github__daily_metrics.sql index 22327a2..dd49dd9 100644 --- a/models/github__daily_metrics.sql +++ b/models/github__daily_metrics.sql @@ -13,18 +13,24 @@ issues_opened_per_day as ( {{ dbt.date_trunc('day', 'created_at') }} as day, count(*) as number_issues_opened, sum(days_issue_open) as sum_days_issue_open, - max(days_issue_open) as longest_days_issue_open + max(days_issue_open) as longest_days_issue_open, + repository as repository from github_issues - group by 1 + group by + 1, + repository ), issues_closed_per_day as ( select {{ dbt.date_trunc('day', 'closed_at') }} as day, - count(*) as number_issues_closed + count(*) as number_issues_closed, + repository as repository from github_issues where closed_at is not null - group by 1 + group by + 1, + repository ), prs_opened_per_day as ( @@ -32,28 +38,37 @@ prs_opened_per_day as ( {{ dbt.date_trunc('day', 'created_at') }} as day, count(*) as number_prs_opened, sum(days_issue_open) as sum_days_pr_open, - max(days_issue_open) as longest_days_pr_open + max(days_issue_open) as longest_days_pr_open, + repository as repository from pull_requests - group by 1 + group by + 1, + repository ), prs_merged_per_day as ( select {{ dbt.date_trunc('day', 'merged_at') }} as day, - count(*) as number_prs_merged + count(*) as number_prs_merged, + repository as repository from pull_requests where merged_at is not null - group by 1 + group by + 1, + repository ), prs_closed_without_merge_per_day as ( select {{ dbt.date_trunc('day', 'closed_at') }} as day, - count(*) as number_prs_closed_without_merge + count(*) as number_prs_closed_without_merge, + repository as repository from pull_requests where closed_at is not null and merged_at is null - group by 1 + group by + 1, + repository ), issues_per_day as ( @@ -61,12 +76,18 @@ issues_per_day as ( coalesce(issues_opened_per_day.day, issues_closed_per_day.day ) as day, + coalesce(issues_opened_per_day.repository, + issues_closed_per_day.repository + ) as repository, number_issues_opened, number_issues_closed, sum_days_issue_open, longest_days_issue_open from issues_opened_per_day - full outer join issues_closed_per_day on issues_opened_per_day.day = issues_closed_per_day.day + full outer join issues_closed_per_day + on + issues_opened_per_day.day = issues_closed_per_day.day + and issues_opened_per_day.repository = issues_closed_per_day.repository ), prs_per_day as ( @@ -75,18 +96,29 @@ prs_per_day as ( prs_merged_per_day.day, prs_closed_without_merge_per_day.day ) as day, + coalesce(prs_opened_per_day.repository, + prs_merged_per_day.repository, + prs_closed_without_merge_per_day.repository + ) as repository, number_prs_opened, number_prs_merged, number_prs_closed_without_merge, sum_days_pr_open, longest_days_pr_open from prs_opened_per_day - full outer join prs_merged_per_day on prs_opened_per_day.day = prs_merged_per_day.day - full outer join prs_closed_without_merge_per_day on coalesce(prs_opened_per_day.day, prs_merged_per_day.day) = prs_closed_without_merge_per_day.day + full outer join prs_merged_per_day + on + prs_opened_per_day.day = prs_merged_per_day.day + AND prs_opened_per_day.repository = prs_merged_per_day.repository + full outer join prs_closed_without_merge_per_day + on + coalesce(prs_opened_per_day.day, prs_merged_per_day.day) = prs_closed_without_merge_per_day.day + AND coalesce(prs_opened_per_day.repository, prs_merged_per_day.repository) = prs_closed_without_merge_per_day.repository ) select coalesce(issues_per_day.day, prs_per_day.day) as day, + coalesce(issues_per_day.repository, prs_per_day.repository) as repository, coalesce(number_issues_opened, 0) as number_issues_opened, coalesce(number_issues_closed, 0) as number_issues_closed, sum_days_issue_open, @@ -97,5 +129,8 @@ select sum_days_pr_open, longest_days_pr_open from issues_per_day -full outer join prs_per_day on issues_per_day.day = prs_per_day.day +full outer join prs_per_day +on + issues_per_day.day = prs_per_day.day + AND issues_per_day.repository = prs_per_day.repository order by day desc diff --git a/models/github__monthly_metrics.sql b/models/github__monthly_metrics.sql index b26b927..c23c019 100644 --- a/models/github__monthly_metrics.sql +++ b/models/github__monthly_metrics.sql @@ -5,6 +5,7 @@ with daily_metrics as ( select {{ dbt.date_trunc('month', 'day') }} as month, + repository as repository, sum(number_issues_opened) as number_issues_opened, sum(number_issues_closed) as number_issues_closed, sum(sum_days_issue_open) / sum(number_issues_opened) as avg_days_issue_open, @@ -15,5 +16,5 @@ select sum(sum_days_pr_open) / sum(number_prs_opened) as avg_days_pr_open, max(longest_days_pr_open) as longest_days_pr_open from daily_metrics -group by 1 +group by 1, repository order by 1 desc \ No newline at end of file diff --git a/models/github__quarterly_metrics.sql b/models/github__quarterly_metrics.sql index ccb8733..983fd26 100644 --- a/models/github__quarterly_metrics.sql +++ b/models/github__quarterly_metrics.sql @@ -5,6 +5,7 @@ with daily_metrics as ( select {{ dbt.date_trunc('quarter', 'day') }} as quarter, + repository as repository, sum(number_issues_opened) as number_issues_opened, sum(number_issues_closed) as number_issues_closed, sum(sum_days_issue_open) / sum(number_issues_opened) as avg_days_issue_open, @@ -16,5 +17,5 @@ select max(longest_days_pr_open) as longest_days_pr_open from daily_metrics -group by 1 +group by 1, repository order by 1 desc \ No newline at end of file diff --git a/models/github__weekly_metrics.sql b/models/github__weekly_metrics.sql index 0d46a13..40f1b30 100644 --- a/models/github__weekly_metrics.sql +++ b/models/github__weekly_metrics.sql @@ -4,7 +4,8 @@ with daily_metrics as ( ) select - {{ dbt.date_trunc('week', 'day') }} as week, + {{ dbt.date_trunc('week', 'day') }} as week, + repository as repository, sum(number_issues_opened) as number_issues_opened, sum(number_issues_closed) as number_issues_closed, sum(sum_days_issue_open) / sum(number_issues_opened) as avg_days_issue_open, @@ -15,5 +16,5 @@ select sum(sum_days_pr_open) / sum(number_prs_opened) as avg_days_pr_open, max(longest_days_pr_open) as longest_days_pr_open from daily_metrics -group by 1 +group by 1, repository order by 1 desc \ No newline at end of file