Create Project Board Looker Dashboard for Different Roles
- Dominant language
- JavaScript
- Stars
- 363
- Forks
- 872
- Avg merge
- 2d 21h
- Merged PRs (30d)
- 18
Description
### Overview
We are creating a Looker dashboard (that updates on schedule or on-demand) that displays 1) the breakdown of counts of issues by complexity type and role labels per project board columns of interest, 2) the number of issues with a certain status label (e.g. drafts, 2 weeks inactive, etc.) or unknown status by project board columns, and 3) a comprehensive anomaly report to allow developers and other roles access to real-time data to guide issue-making decisions and detect inconsistencies with regular practice.
### Action Items
- [x] Research online resources and GitHub REST API on retrieving issue information from GitHub project board columns
- [x] Retrieve issues in Jupyter Notebook and verify accuracy of issue retrieval (first check)
- [x] Explore data and design datasets and dashboard to display information requested
- [x] Clean and manipulate data to create datasets
- [x] Create blank Google sheet and send data from Jupyter Notebook to [Google Sheet](https://docs.google.com/spreadsheets/d/1aJ0yHkXYMWTtMz6eEeolTLmAQOBc2DyptmR5SAmUrjM/edit?usp=sharing) to act as data source
- [x] Create Looker dashboard with data in Google Sheet
- [x] Confirm adjustments required in Sunday meeting (recurring)
- [x] Edit Python script to reflect adjustments and additional information requested in Sunday meeting (recurring)
- [x] Verify accuracy of data from data cleaning and manipulation (recurring)
- [x] Automate running of Python script to get updated data (using GitHub Actions in [repository](https://github.com/hackforla/live-dashboard-automation))
- [x] Create a [Google spreadsheet](https://docs.google.com/spreadsheets/d/1-ltg0qMeZSgOnqrCU0nKUDQd1JOXTMWrNTK63VZjXdk/edit?usp=sharing) with official HackforLA labels to be used for dashboard (include columns that indicate whether a label is in use, what series does the label belong to (complexity, role, feature, size, dependency, ready, ignore), and whether the label belongs to the missing series (Complexity: Missing, role missing, etc.)
- [x] Edit Python script to use [Google spreadsheet](https://docs.google.com/spreadsheets/d/1-ltg0qMeZSgOnqrCU0nKUDQd1JOXTMWrNTK63VZjXdk/edit?usp=sharing) from previous point to pull in official labels to future-proof dashboard and ensure link to unknown status issues filters out issues with ignore labels.
- [x] Refine Looker dashboard to include the following pages:
- Developer dashboard with project board column and role breakdown,
- Customer dashboard with column and role breakdown, and
- Anomaly reports broken down into 4 pages:
- Complexity Labeling Anomalies,
- Issues with Missing or No Labels from complexity, role, feature, size, and dependency series,
- Issues with Unofficial Labels, and
- Detecting Blank Issues
(more functionalities to be added by other data scientists/analysts that will take over)
- [x] Create a button where script can be run on demand (added a workflow_dispatch event trigger in the [live-dashboard-automation repository](https://github.com/hackforla/live-dashboard-automation/actions/workflows/schedule_run_to_update_data.yaml)) and added button with link to pull data on-demand at top right of Looker dashboard banner
- [x] Add cache dependency to GitHub Actions to reduce runtime
- [x] Create documentation on methodology in Google Slides
- [x] Add sheet protection to Looker data sources (Google Sheets) to prevent accidental changes by people accessing the sheet
- [x] Update README.md in live-dashboard-automation repository
- [x] Add the following to live-dashboard-automation repository:
- [x] Markdown Looker troubleshooting guide
- [x] .env template for other data analysts continuing to work on sub-issues for this dashboard
- [x] Editable .ipynb file for other data analysts continuing to work on sub-issues for this dashboard
### Resources/Instructions
- [Looker dashboard being worked on](https://lookerstudio.google.com/u/2/reporting/6410c484-f38f-44ba-b4ed-c29a6b2a081b/page/e1JSB)
- [Repository controlling automation](https://github.com/hackforla/live-dashboard-automation)
- [Spreadsheet for team to update list of official labels needed for anomaly detection](https://docs.google.com/spreadsheets/d/1-ltg0qMeZSgOnqrCU0nKUDQd1JOXTMWrNTK63VZjXdk/edit?usp=sharing)
- Using Google API to Send and Read Data to Google Sheets: [Google Sheets API Automation in Python](https://www.youtube.com/watch?v=3wC-SCdJK2c&t=250s), [Update Google Sheets Using A Service Account With Google Sheets API In Python](https://www.youtube.com/watch?v=sVURhxyc6jE&t=2s), [How to Analyze Data in Google Sheets With Python: A Step-By-Step Guide](https://www.datacamp.com/tutorial/how-to-analyze-data-in-google-sheets-with-python-a-step-by-step-guide)
- Resource for Figuring Out Cron Job Expression: [https://crontab.guru/](https://crontab.guru/)
- References for Adding Cache Dependency: [Reference 1](https://github.com/orgs/community/discussions/26096), [Reference 2](https://www.youtube.com/watch?v=6WemQlusrJQ&t=1253s)
- [Guide on adding workflow dispatch event/button](https://leonardomontini.dev/github-action-manual-trigger/)
- [Slides with methodology documentation](https://docs.google.com/presentation/d/1hZCNMZewl4L_so1ceGMOuP0mTbaBkUuwzAbBPgcGYfU/edit?usp=sharing)
Refer to main issue #4152
Contributor guide
Assessment
This issue has not been assessed yet.