From 94ef8db289d5e61f29720cb0fae27e9f058e5b98 Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 17:10:23 -0600 Subject: [PATCH 01/37] best practices overview all workloads Azure Data Factory (ADF) - Best Practices Overview Data Engineering - Best Practices Overview Data Warehouse - Best Practices Overview - in progress Data Science - Best Practices Overview - in progress Real-Time Intelligence - Best Practices Overview - in progress Power Bi - Best Practices Overview Copilot - Best Practices Overview - in progress Purview - Best Practices Overview - in progress OneLake - Best Practices Overview - in progress --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index f934f1e..401b0b2 100644 --- a/README.md +++ b/README.md @@ -201,13 +201,13 @@ Click to read more about [Microsoft Purview for Fabric - Overview](./Purview-Fab - [Azure Data Factory (ADF) - Best Practices Overview](./Workloads-Specific/DataFactory/BestPractices.md) - [Data Engineering - Best Practices Overview](./Workloads-Specific/DataEngineering/BestPractices.md) -- [Data Warehouse - Best Practices Overview]() - in progress -- [Data Science - Best Practices Overview]() - in progress -- [Real-Time Intelligence - Best Practices Overview]() - in progress +- [Data Warehouse - Best Practices Overview](./Workloads-Specific/DataWarehouse/BestPractices.md) - in progress +- [Data Science - Best Practices Overview](./Workloads-Specific/DataScience/BestPractices.md) - in progress +- [Real-Time Intelligence - Best Practices Overview](./Workloads-Specific/RealTimeIntelligence/BestPractices.md) - in progress - [Power Bi - Best Practices Overview](./Workloads-Specific/PowerBi/BestPractices.md) -- [Copilot - Best Practices Overview]() - in progress -- [Purview - Best Practices Overview]() - in progress -- [OneLake - Best Practices Overview]() - in progress +- [Copilot - Best Practices Overview](./Workloads-Specific/Copilot/BestPractices.md) - in progress +- [Purview - Best Practices Overview](./Workloads-Specific/Purview/BestPractices.md) - in progress +- [OneLake - Best Practices Overview](./Workloads-Specific/OneLake/BestPractices.md) - in progress

Total Visitors

From d8fc9d1ad61a0f3d258ee1cccb21f31e236e5abf Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 17:28:46 -0600 Subject: [PATCH 02/37] missing | table --- Workloads-Specific/PowerBi/BestPractices.md | 48 ++++++++++----------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/Workloads-Specific/PowerBi/BestPractices.md b/Workloads-Specific/PowerBi/BestPractices.md index d0e2c23..beeffe4 100644 --- a/Workloads-Specific/PowerBi/BestPractices.md +++ b/Workloads-Specific/PowerBi/BestPractices.md @@ -50,12 +50,12 @@ Last updated: 2025-05-02 > Ensure that your Power BI dashboards and reports are organized, visually cohesive, and provide clear insights at a glance. -| **Best Practice** | **Description** | **Example** | -|--------------------------------------|------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **Consistent Naming Conventions** | Use clear and descriptive names for reports, pages, visuals, measures, and datasets. | Instead of generic names like `Report1`, prefer descriptive names such as `SalesPerformanceReport`. | -| **Modular Report Design** | Organize your reports by separating key performance indicators (KPIs), detailed analysis, and context. | Design separate pages for overviews, analytics details, and contextual information as your audience drills down. | +| **Best Practice** | **Description** | **Example** | +|--------------------------------------|-------------------------|-------------------------------------------------------------------| +| **Consistent Naming Conventions** | Use clear and descriptive names for reports, pages, visuals, measures, and datasets. | Instead of generic names like `Report1`, prefer descriptive names such as `SalesPerformanceReport`. | +| **Modular Report Design** | Organize your reports by separating key performance indicators (KPIs), detailed analysis, and context. | Design separate pages for overviews, analytics details, and contextual information as your audience drills down. | | **Visual Consistency** | Apply a uniform theme and layout using Power BI themes to maintain brand consistency and readability. | Follow [Tips for designing a great Power BI dashboard](https://learn.microsoft.com/en-us/power-bi/create-reports/service-dashboards-design-tips) for layout and visual emphasis best practices. | -| **Annotations and Tooltips** | Document complex visual logic and calculations via in-report annotations and dynamic tooltips. | Include tooltips that explain data sources or DAX logic to enhance report understandability. | +| **Annotations and Tooltips** | Document complex visual logic and calculations via in-report annotations and dynamic tooltips. | Include tooltips that explain data sources or DAX logic to enhance report understandability. | ### Example Report Layout @@ -76,20 +76,20 @@ From [Understand star schema and the importance for Power BI](https://learn.micr > Enhance report flexibility by using parameters and dynamic expressions. -| **Best Practice** | **Description** | **Example** | -|----------------------------------------|------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **Power Query Parameters** | Use parameters to dynamically adjust data sources and filter conditions during data ingestion. | Define date range parameters in Power Query to allow reports to automatically update based on user configurations. | +| **Best Practice** | **Description** | **Example** | +|----------------------------------------|-------------------------------------------|------------------------------------------------------------------------| +| **Power Query Parameters** | Use parameters to dynamically adjust data sources and filter conditions during data ingestion. | Define date range parameters in Power Query to allow reports to automatically update based on user configurations. | | **Dynamic DAX Expressions** | Create DAX measures that change in response to slicer selections or other user inputs. | Implement dynamic calculations using variables in DAX so that measures (like Year-over-Year growth) adjust automatically per user selection. | -| **Dynamic Drill-throughs** | Build drill-through URLs and links dynamically for a seamless navigation experience. | Concatenate strings and field values in DAX to direct users to detailed reports or external dashboards. | +| **Dynamic Drill-throughs** | Build drill-through URLs and links dynamically for a seamless navigation experience. | Concatenate strings and field values in DAX to direct users to detailed reports or external dashboards. | ## Incremental Data Refresh > Optimize your data refresh process by updating only the data that has changed. -| **Best Practice** | **Description** | **Example** | -|----------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Best Practice** | **Description** | **Example** | +|----------------------------------------|--------------------------------------------------|------------------------------------------------------------------------------------------------------| | **Enable Incremental Refresh** | Set up incremental refresh policies to refresh only new or modified data, reducing load time and resource usage. | Use the [Data refresh in Power BI](https://learn.microsoft.com/en-us/power-bi/connect-data/refresh-data) guidelines to configure incremental refresh for large datasets. | -| **Data Partitioning** | Partition your data by logical segments (e.g., date ranges) to target refresh operations more efficiently. | Partition sales or transaction data by month or quarter so that only the most recent partitions are refreshed during scheduled updates. | +| **Data Partitioning** | Partition your data by logical segments (e.g., date ranges) to target refresh operations more efficiently. | Partition sales or transaction data by month or quarter so that only the most recent partitions are refreshed during scheduled updates. | > Click to read [Incremental Refresh for Reporting - Overview](./Workloads-Specific/PowerBi/IncrementalRefresh.md) @@ -104,10 +104,10 @@ From [Understand star schema and the importance for Power BI](https://learn.micr > Build robust data models and optimize DAX calculations to ensure high performance and maintainability. -| **Best Practice** | **Description** | **Example** | -|--------------------------------------|---------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **Star Schema Implementation** | Structure your data using a star schema to improve clarity and query performance. | Separate fact tables (e.g., Sales) from dimension tables (e.g., Date, Customer) as recommended by [Power BI guidance documentation](https://learn.microsoft.com/en-us/power-bi/guidance/). | -| **Efficient DAX Coding** | Utilize variables and avoid deeply nested functions to streamline DAX calculations. | Replace nested CALCULATE functions with variables:
VAR TotalSales = SUM('Sales'[Amount]) RETURN TotalSales to simplify logic and improve performance. | +| **Best Practice** | **Description** | **Example**| +|--------------------------------------|----------------------------------------------|-----------------------------------------------------------------------------------------------| +| **Star Schema Implementation** | Structure your data using a star schema to improve clarity and query performance.| Separate fact tables (e.g., Sales) from dimension tables (e.g., Date, Customer) as recommended by [Power BI guidance documentation](https://learn.microsoft.com/en-us/power-bi/guidance/). | +| **Efficient DAX Coding** | Utilize variables and avoid deeply nested functions to streamline DAX calculations.| Replace nested CALCULATE functions with variables:
VAR TotalSales = SUM('Sales'[Amount]) RETURN TotalSales to simplify logic and improve performance. | | **Reduce Cardinality When Possible** | Pre-aggregate data where applicable to reduce the detail in fact tables and improve efficiency. | Aggregate detailed transaction logs to daily totals if high granularity is not necessary, as covered in the [Optimization guide for Power BI](https://learn.microsoft.com/en-us/power-bi/guidance/power-bi-optimization). | ## Security and Governance @@ -116,21 +116,21 @@ From [Understand star schema and the importance for Power BI](https://learn.micr ### Row-Level Security (RLS) -| **Best Practice** | **Description** | **Example** | -|---------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **Define RLS in Power BI Desktop** | Use Power BI Desktop to create roles and restrict data at the row level. | Implement RLS by defining roles such as `SalesManager` and applying DAX filters (e.g., `[Region] = USERPRINCIPALNAME()`) as described in [Row-level security (RLS) guidance in Power BI Desktop](https://learn.microsoft.com/en-us/power-bi/guidance/rls-guidance). | -| **Test RLS Thoroughly** | Validate security settings using the “View as Role” feature before publishing your reports. | Verify RLS filters by simulating different user roles to ensure users can only view allowed data. | -| **Optimize RLS Implementation** | Apply RLS filters preferably on dimension tables so that filtering propagates efficiently through relationships. | Structure RLS so that filters on the Customer or Region tables automatically restrict the related fact table data. | +| **Best Practice** | **Description**| **Example**| +|---------------------------------------|--------------------------------------------------------------------|----------------| +| **Define RLS in Power BI Desktop** | Use Power BI Desktop to create roles and restrict data at the row level. | Implement RLS by defining roles such as `SalesManager` and applying DAX filters (e.g., `[Region] = USERPRINCIPALNAME()`) as described in [Row-level security (RLS) guidance in Power BI Desktop](https://learn.microsoft.com/en-us/power-bi/guidance/rls-guidance). | +| **Test RLS Thoroughly** | Validate security settings using the “View as Role” feature before publishing your reports. | Verify RLS filters by simulating different user roles to ensure users can only view allowed data. | +| **Optimize RLS Implementation** | Apply RLS filters preferably on dimension tables so that filtering propagates efficiently through relationships. | Structure RLS so that filters on the Customer or Region tables automatically restrict the related fact table data. | ## Source Control and Collaboration > Leverage version control systems and collaborative workspaces for efficient report deployment and teamwork. -| **Best Practice** | **Description** | **Example** | -|---------------------------------------|----------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Best Practice** | **Description** | **Example** | +|---------------------------------------|------------------------------|----------------------------------------------| | **Git-based Version Control** | Use Git repositories (via Azure DevOps or GitHub) to manage and version your Power BI Desktop projects. | Follow the [Azure DevOps build pipeline integration with Power BI Desktop projects](https://learn.microsoft.com/en-us/power-bi/developer/projects/projects-build-pipelines) guidance for setting up continuous integration. | | **Collaborative Workspaces** | Configure shared workspaces within the Power BI service for team collaboration and controlled deployment. | Integrate your workspace with Git as described in [Power BI Desktop projects Azure DevOps integration](https://learn.microsoft.com/en-us/power-bi/developer/projects/projects-azdo) to manage team contributions. | -| **Change Documentation** | Maintain a detailed changelog or README file to document major updates and decision rationales. | Use Git commit messages and an in-repository README to capture changes and ensure transparency across development cycles. +| **Change Documentation** | Maintain a detailed changelog or README file to document major updates and decision rationales. | Use Git commit messages and an in-repository README to capture changes and ensure transparency across development cycles. | ## Performance Tuning From 6e48349cb54a90987bf3af26cdca0c7f8472874e Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 17:31:30 -0600 Subject: [PATCH 03/37] cleaning --- Workloads-Specific/PowerBi/BestPractices.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/Workloads-Specific/PowerBi/BestPractices.md b/Workloads-Specific/PowerBi/BestPractices.md index beeffe4..60d4176 100644 --- a/Workloads-Specific/PowerBi/BestPractices.md +++ b/Workloads-Specific/PowerBi/BestPractices.md @@ -136,8 +136,8 @@ From [Understand star schema and the importance for Power BI](https://learn.micr > Enhance report responsiveness and reduce resource load by optimizing visuals and query performance. -| **Best Practice** | **Description** | **Example** | -|---------------------------------------|--------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Best Practice** | **Description** | **Example** | +|---------------------------------------|-------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | **Optimize Visuals and Interactions** | Limit the number of visuals per report page and simplify complex interactions to improve performance. | Use [Optimize ribbon in Power BI Desktop](https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-optimize-ribbon) to pause visuals and control query execution during design. | | **DirectQuery Optimization** | Use features from the Optimize ribbon to streamline DirectQuery interactions and reduce redundant queries. | Follow methods in [DirectQuery optimization scenarios with the Optimize ribbon in Power BI Desktop](https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-optimize-ribbon-scenarios) to adjust visual refresh behavior. | @@ -145,23 +145,22 @@ From [Understand star schema and the importance for Power BI](https://learn.micr > Keep your reports self-explanatory and maintain a centralized repository for ongoing support and future enhancements. -| **Best Practice** | **Description** | **Example** | -|---------------------------------------|--------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Best Practice** | **Description** | **Example**| +|---------------------------------------|-----------------------------------------------------------|--------------------| | **In-Report Annotations** | Use text boxes, tooltips, and in-report comments to document data sources, transformations, and calculation logic. | Include explanatory notes within report pages as encouraged in the [Power BI guidance documentation](https://learn.microsoft.com/en-us/power-bi/guidance/). | | **Scheduled Reviews and Updates** | Periodically review report performance, refresh schedules, and security settings to keep the solution optimized and current. | Adopt a routine review cycle based on feedback and usage metrics provided by Power BI service administration tools. | -| **Centralized Repository** | Store and version-control all project artifacts (PBIX files, change logs, documentation) in a secure repository. | Use Azure DevOps or another Git-based repository, following the practices laid out in the source control sections above. +| **Centralized Repository** | Store and version-control all project artifacts (PBIX files, change logs, documentation) in a secure repository. | Use Azure DevOps or another Git-based repository, following the practices laid out in the source control sections above. | ## Deploying Reports with DevOps Best Practices > Automate and streamline deployment processes using CI/CD pipelines integrated within your Power BI environment. -| **Best Practice** | **Description** | **Example** | -|---------------------------------------|------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Best Practice** | **Description** | **Example**| +|---------------------------------------|------------------------------------------------------------|---------------------------------| | **Automated Build Pipelines** | Integrate Git repositories with Azure DevOps to automatically validate and deploy Power BI content. | Refer to [Azure DevOps build pipeline integration with Power BI Desktop projects](https://learn.microsoft.com/en-us/power-bi/developer/projects/projects-build-pipelines) for guidance. | | **Deployment Pipelines via APIs** | Use the Power BI deployment pipelines APIs to automate report deployment steps and ensure quality across environments. | Implement automated deployments as described in [Automate deployment pipelines with APIs for Power BI items](https://learn.microsoft.com/en-us/fabric/cicd/deployment-pipelines/pipeline-automation). | | **Continuous Integration** | Incorporate quality gates and automated testing within your CI/CD process to catch issues early in the development cycle. | Utilize Git-based integration and automated tests as shown in [Power BI Desktop projects Azure DevOps integration](https://learn.microsoft.com/en-us/power-bi/developer/projects/projects-azdo) for best practices. | -

Total Visitors

Visitor Count From dee82f1e12202e9c60ec967f3a2a4570ac9d7e31 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 2 May 2025 23:31:48 +0000 Subject: [PATCH 04/37] Fix Markdown syntax issues --- Workloads-Specific/DataEngineering/BestPractices.md | 2 +- Workloads-Specific/DataFactory/BestPractices.md | 2 +- Workloads-Specific/PowerBi/BestPractices.md | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Workloads-Specific/DataEngineering/BestPractices.md b/Workloads-Specific/DataEngineering/BestPractices.md index 09a7007..947e4d9 100644 --- a/Workloads-Specific/DataEngineering/BestPractices.md +++ b/Workloads-Specific/DataEngineering/BestPractices.md @@ -61,7 +61,7 @@ Last updated: 2025-05-02 - **Comprehensive Schema Documentation:** Create detailed, auto-generated documentation for every endpoint; include sample queries, expected responses, and precise error messages to aid developer understanding. - **Robust Error Handling:** Implement consistent, informative error responses and integrate thorough test suites to guarantee smooth operation and backward compatibility as the API evolves. - https://github.com/user-attachments/assets/8971651d-9aff-4b41-94ca-9a35b9241f22 +

Total Visitors

diff --git a/Workloads-Specific/DataFactory/BestPractices.md b/Workloads-Specific/DataFactory/BestPractices.md index 5337aad..d8b3073 100644 --- a/Workloads-Specific/DataFactory/BestPractices.md +++ b/Workloads-Specific/DataFactory/BestPractices.md @@ -56,7 +56,6 @@ Last updated: 2025-05-02 - ## Clear Pipeline Structure > Ensure your pipelines are well-organized and easy to understand. @@ -364,6 +363,7 @@ graph TD ## Source Control > Benefits of Git Integration:
+> > - **Version Control**: Track and audit changes, and revert to previous versions if needed.
> - **Collaboration**: Multiple team members can work on the same project simultaneously.
> - **Incremental Saves**: Save partial changes without publishing them live.
diff --git a/Workloads-Specific/PowerBi/BestPractices.md b/Workloads-Specific/PowerBi/BestPractices.md index 60d4176..dca0d2f 100644 --- a/Workloads-Specific/PowerBi/BestPractices.md +++ b/Workloads-Specific/PowerBi/BestPractices.md @@ -32,13 +32,13 @@ Last updated: 2025-05-02 Table of Content (Click to expand) - [Clear Dashboard and Report Structure](#clear-dashboard-and-report-structure) - - [Example Report Layout](#example-report-layout) + - [Example Report Layout](#example-report-layout) - [Parameterization and Dynamic Content](#parameterization-and-dynamic-content) - [Incremental Data Refresh](#incremental-data-refresh) - - [Optimized Refresh Schedules](#optimized-refresh-schedules) + - [Optimized Refresh Schedules](#optimized-refresh-schedules) - [Data Modeling and DAX Optimization](#data-modeling-and-dax-optimization) - [Security and Governance](#security-and-governance) - - [Row-Level Security RLS](#row-level-security-rls) + - [Row-Level Security RLS](#row-level-security-rls) - [Source Control and Collaboration](#source-control-and-collaboration) - [Performance Tuning](#performance-tuning) - [Documentation and Maintenance](#documentation-and-maintenance) @@ -98,7 +98,7 @@ From [Understand star schema and the importance for Power BI](https://learn.micr - **Staggered Refreshes**: Schedule refresh operations during off-peak hours to balance resource consumption. - **Monitoring Refresh Performance**: Follow best practices in [Configure scheduled refresh](https://learn.microsoft.com/en-us/power-bi/connect-data/refresh-scheduled-refresh) to monitor and troubleshoot scheduled refresh cycles. - https://github.com/user-attachments/assets/61780cc9-5778-4c55-8f05-ffbaedd7802c + ## Data Modeling and DAX Optimization From 34fe74ec2d1f1ae202b53de03febaeb32c740db3 Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 17:34:05 -0600 Subject: [PATCH 05/37] data warehouse best practices init --- .../DataWarehouse/BestPractices.md | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Workloads-Specific/DataWarehouse/BestPractices.md diff --git a/Workloads-Specific/DataWarehouse/BestPractices.md b/Workloads-Specific/DataWarehouse/BestPractices.md new file mode 100644 index 0000000..42bc343 --- /dev/null +++ b/Workloads-Specific/DataWarehouse/BestPractices.md @@ -0,0 +1,22 @@ +# Data Warehouse - Best Practices Overview + +Costa Rica + +[![GitHub](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com) +[![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) +[brown9804](https://github.com/brown9804) + +Last updated: 2025-05-02 + +---------- + +
+List of References (Click to expand) + +
+ +
+

Total Visitors

+ Visitor Count +
+ From 330293f66c7e7874dfd66318fb91c4c64d785934 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 2 May 2025 23:34:24 +0000 Subject: [PATCH 06/37] Fix Markdown syntax issues --- Workloads-Specific/DataWarehouse/BestPractices.md | 1 - 1 file changed, 1 deletion(-) diff --git a/Workloads-Specific/DataWarehouse/BestPractices.md b/Workloads-Specific/DataWarehouse/BestPractices.md index 42bc343..7f85f9f 100644 --- a/Workloads-Specific/DataWarehouse/BestPractices.md +++ b/Workloads-Specific/DataWarehouse/BestPractices.md @@ -19,4 +19,3 @@ Last updated: 2025-05-02

Total Visitors

Visitor Count
- From e9aee728355c48ffe4b8fa0e41d9a70411a27cda Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 17:36:45 -0600 Subject: [PATCH 07/37] data science best practices init --- .../DataScience/BestPractices.md | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Workloads-Specific/DataScience/BestPractices.md diff --git a/Workloads-Specific/DataScience/BestPractices.md b/Workloads-Specific/DataScience/BestPractices.md new file mode 100644 index 0000000..5c40e16 --- /dev/null +++ b/Workloads-Specific/DataScience/BestPractices.md @@ -0,0 +1,22 @@ +# Data Science - Best Practices Overview + +Costa Rica + +[![GitHub](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com) +[![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) +[brown9804](https://github.com/brown9804) + +Last updated: 2025-05-02 + +---------- + +
+List of References (Click to expand) + +
+ +
+

Total Visitors

+ Visitor Count +
+ From 6c8dee5ae311552b23a81262e486f7c09cec1d25 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 2 May 2025 23:37:02 +0000 Subject: [PATCH 08/37] Fix Markdown syntax issues --- Workloads-Specific/DataScience/BestPractices.md | 1 - 1 file changed, 1 deletion(-) diff --git a/Workloads-Specific/DataScience/BestPractices.md b/Workloads-Specific/DataScience/BestPractices.md index 5c40e16..86be475 100644 --- a/Workloads-Specific/DataScience/BestPractices.md +++ b/Workloads-Specific/DataScience/BestPractices.md @@ -19,4 +19,3 @@ Last updated: 2025-05-02

Total Visitors

Visitor Count
- From 35baf056450b6ec4b5a61a0c8bed51dc60e97137 Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 17:38:54 -0600 Subject: [PATCH 09/37] real time intelligence init --- .../RealTimeIntelligence/BestPractices.md | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Workloads-Specific/RealTimeIntelligence/BestPractices.md diff --git a/Workloads-Specific/RealTimeIntelligence/BestPractices.md b/Workloads-Specific/RealTimeIntelligence/BestPractices.md new file mode 100644 index 0000000..eb56027 --- /dev/null +++ b/Workloads-Specific/RealTimeIntelligence/BestPractices.md @@ -0,0 +1,22 @@ +# Real-Time Intelligence - Best Practices Overview + +Costa Rica + +[![GitHub](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com) +[![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) +[brown9804](https://github.com/brown9804) + +Last updated: 2025-05-02 + +---------- + +
+List of References (Click to expand) + +
+ +
+

Total Visitors

+ Visitor Count +
+ From a74e2b795c36bf6c54e9bf810b6b7d6e42a2a28b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 2 May 2025 23:39:11 +0000 Subject: [PATCH 10/37] Fix Markdown syntax issues --- Workloads-Specific/RealTimeIntelligence/BestPractices.md | 1 - 1 file changed, 1 deletion(-) diff --git a/Workloads-Specific/RealTimeIntelligence/BestPractices.md b/Workloads-Specific/RealTimeIntelligence/BestPractices.md index eb56027..a89b7f9 100644 --- a/Workloads-Specific/RealTimeIntelligence/BestPractices.md +++ b/Workloads-Specific/RealTimeIntelligence/BestPractices.md @@ -19,4 +19,3 @@ Last updated: 2025-05-02

Total Visitors

Visitor Count
- From 0e72d1087b4b9c8e30f0a1e7b09ec13830f702a6 Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 17:40:55 -0600 Subject: [PATCH 11/37] general copilot best practices --- Workloads-Specific/Copilot/BestPractices.md | 22 +++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Workloads-Specific/Copilot/BestPractices.md diff --git a/Workloads-Specific/Copilot/BestPractices.md b/Workloads-Specific/Copilot/BestPractices.md new file mode 100644 index 0000000..0e5b5c5 --- /dev/null +++ b/Workloads-Specific/Copilot/BestPractices.md @@ -0,0 +1,22 @@ +# Copilot - Best Practices Overview + +Costa Rica + +[![GitHub](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com) +[![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) +[brown9804](https://github.com/brown9804) + +Last updated: 2025-05-02 + +---------- + +
+List of References (Click to expand) + +
+ +
+

Total Visitors

+ Visitor Count +
+ From 727ba0f0e974d48801766fb552f65713c45c5a37 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 2 May 2025 23:41:14 +0000 Subject: [PATCH 12/37] Fix Markdown syntax issues --- Workloads-Specific/Copilot/BestPractices.md | 1 - 1 file changed, 1 deletion(-) diff --git a/Workloads-Specific/Copilot/BestPractices.md b/Workloads-Specific/Copilot/BestPractices.md index 0e5b5c5..0a67bcb 100644 --- a/Workloads-Specific/Copilot/BestPractices.md +++ b/Workloads-Specific/Copilot/BestPractices.md @@ -19,4 +19,3 @@ Last updated: 2025-05-02

Total Visitors

Visitor Count - From f11becd14ddd91f8a63b2ae88fbda8996f326e90 Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 17:41:48 -0600 Subject: [PATCH 13/37] purview best practices in fabric --- Workloads-Specific/Purview/BestPractices.md | 22 +++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Workloads-Specific/Purview/BestPractices.md diff --git a/Workloads-Specific/Purview/BestPractices.md b/Workloads-Specific/Purview/BestPractices.md new file mode 100644 index 0000000..c680d90 --- /dev/null +++ b/Workloads-Specific/Purview/BestPractices.md @@ -0,0 +1,22 @@ +# Purview - Best Practices Overview + +Costa Rica + +[![GitHub](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com) +[![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) +[brown9804](https://github.com/brown9804) + +Last updated: 2025-05-02 + +---------- + +
+List of References (Click to expand) + +
+ +
+

Total Visitors

+ Visitor Count +
+ From cabaa6c8879d57109fd6edf0a2dae692488e30cc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 2 May 2025 23:42:07 +0000 Subject: [PATCH 14/37] Fix Markdown syntax issues --- Workloads-Specific/Purview/BestPractices.md | 1 - 1 file changed, 1 deletion(-) diff --git a/Workloads-Specific/Purview/BestPractices.md b/Workloads-Specific/Purview/BestPractices.md index c680d90..86c8028 100644 --- a/Workloads-Specific/Purview/BestPractices.md +++ b/Workloads-Specific/Purview/BestPractices.md @@ -19,4 +19,3 @@ Last updated: 2025-05-02

Total Visitors

Visitor Count - From b4b5fb9fc769c9c33cd6e2d5ed1dc5ea62256810 Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 17:42:39 -0600 Subject: [PATCH 15/37] onelake best practices --- Workloads-Specific/OneLake/BestPractices.md | 22 +++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Workloads-Specific/OneLake/BestPractices.md diff --git a/Workloads-Specific/OneLake/BestPractices.md b/Workloads-Specific/OneLake/BestPractices.md new file mode 100644 index 0000000..fb81701 --- /dev/null +++ b/Workloads-Specific/OneLake/BestPractices.md @@ -0,0 +1,22 @@ +# OneLake - Best Practices Overview + +Costa Rica + +[![GitHub](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com) +[![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) +[brown9804](https://github.com/brown9804) + +Last updated: 2025-05-02 + +---------- + +
+List of References (Click to expand) + +
+ +
+

Total Visitors

+ Visitor Count +
+ From d363089071fbfd3645c7897ea7e3aa4e472f04a0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 2 May 2025 23:42:58 +0000 Subject: [PATCH 16/37] Fix Markdown syntax issues --- Workloads-Specific/OneLake/BestPractices.md | 1 - 1 file changed, 1 deletion(-) diff --git a/Workloads-Specific/OneLake/BestPractices.md b/Workloads-Specific/OneLake/BestPractices.md index fb81701..6166524 100644 --- a/Workloads-Specific/OneLake/BestPractices.md +++ b/Workloads-Specific/OneLake/BestPractices.md @@ -19,4 +19,3 @@ Last updated: 2025-05-02

Total Visitors

Visitor Count - From 2b6381f75455100b7e3ce60ce37e60e67241b5ae Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 17:43:45 -0600 Subject: [PATCH 17/37] mved --- Purview-Fabric.md | 121 ---------------------------------------------- 1 file changed, 121 deletions(-) delete mode 100644 Purview-Fabric.md diff --git a/Purview-Fabric.md b/Purview-Fabric.md deleted file mode 100644 index 06a48f6..0000000 --- a/Purview-Fabric.md +++ /dev/null @@ -1,121 +0,0 @@ -# Purview for Fabric - Overview - -Costa Rica - -[![GitHub](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com) -[![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) -[brown9804](https://github.com/brown9804) - -Last updated: 2025-05-02 - ----------- - -
-List of References (Click to expand) - -- [Use Microsoft Purview to govern Microsoft Fabric](https://learn.microsoft.com/en-us/fabric/governance/microsoft-purview-fabric) -- [The Microsoft Purview hub for data owners (preview)](https://learn.microsoft.com/en-us/fabric/governance/use-microsoft-purview-hub-data-owners) -- [Govern data in Microsoft Fabric with Purview](https://learn.microsoft.com/en-us/training/modules/fabric-data-governance-purview/) - -
- -## Content - -- [Purview + Fabric](#purview--fabric) -- [Microsoft Purview Pricing: Fabric focused](#microsoft-purview-pricing-fabric-focused) -- [Cost Optimization Strategies](#cost-optimization-strategies) - -## Purview + Fabric - -> Microsoft Purview and Microsoft Fabric are integrated to provide a comprehensive `data governance and analytics platform`. -> Purview enables users to `discover, classify, and protect data within Fabric`, ensuring that `data governance policies are consistently applied across the entire data estate`. -> Purview's capabilities, such as `automated scanning, ingestion, classification, and sensitivity labeling, enhance the governance of Fabric's data assets, providing a unified approach to data management and compliance`. - -| Feature | Description | Free | Charged | Interaction | -|---------|-------------|------|---------|-------------| -| **Automated Scanning, Ingestion & Classification** | This feature involves scanning and classifying data assets within Fabric. It helps in identifying and categorizing data based on predefined rules and policies. | - **Power BI Online**: Free for a limited time means that users can utilize automated scanning, ingestion, and classification features for Power BI Online without incurring costs during the promotional period.
- **SQL Server on-prem**: Free for a limited time indicates that users can use automated scanning, ingestion, and classification features for SQL Server on-premises without charges during the promotional period | **Other data sources**: $0.011 per vCore minute | Interacts with **Data Map Enrichment** by providing initial metadata. Feeds into **Report Generation** by supplying data for reports. | -| **Data Map Enrichment** | Enriching metadata with advanced resource sets involves adding detailed information to the metadata, making it more useful for data governance and analysis. | N/A | $0.21 per vCore-hour | Enhances metadata from **Automated Scanning, Ingestion & Classification**. Used in **Report Generation** for detailed insights. | -| **Report Generation** | Generating reports based on scanned data provides insights and summaries of the data assets, helping in decision-making and compliance monitoring. | N/A | $0.82 per vCore-hour | Utilizes enriched metadata from **Data Map Enrichment** to create comprehensive reports. | -| **Elastic Data Map** | Capacity units support data map operations and metadata storage, allowing for scalable and efficient management of data assets. | N/A | $0.411 per capacity unit hour | Supports operations of **Automated Scanning, Ingestion & Classification**, **Data Map Enrichment**, and **Report Generation**. | -| **Data Catalog** | Browsing and searching data assets allows users to explore and find relevant data within Fabric. This feature is included with the Data Map. | Included with Data Map | N/A | Leverages metadata and insights from other features for a unified view of data. | -| **Data Policy** | Applying DevOps policies to data assets involves setting rules and policies for data management and governance. | N/A | $0.0027 per policy hour | Ensures compliance and proper data management for assets managed by other features. | -| **Insights Consumption** | API calls for insights and data access allow users to retrieve and interact with data programmatically, providing flexibility in data usage. | N/A | $0.21 per API call | Enables programmatic access to data and metadata managed by other features. | - -## Microsoft Purview Pricing: Fabric focused - -> When Purview is integrated with Fabric, the following aspects are considered for pricing: - -```mermaid -graph TD - A[Data Map] --> B[Storage] - A --> C[Operations] - D[Data Catalog] --> E[Storage] - D --> F[Operations] - G[Information Protection] --> H[Sensitivity Labels] - G --> I[DLP] - - B --> J[Charged by metadata amount] - C --> K[Charged by operations] - E --> L[Charged by metadata amount] - F --> M[Charged by operations] - H --> N[Charged by protected assets] - I --> O[Charged by policies and data volume] -``` - -> [!TIP] -> `Compute resources` are used for `operations` such as scanning, ingestion, classification, enrichment, and report generation. These operations involve processing data and performing various tasks that require computational power.
-> `Storage resources` are used to `store metadata`, data maps, and other related information. This includes the storage of scanned metadata, enriched metadata, and generated reports. - -| Aspect | Description | Pricing | -|--------|-------------|---------| -| **Unified Data Catalog** | **Metadata Management**: Purview captures metadata from Fabric items. | Cost is based on the amount of metadata stored and the operations performed. | -| **Information Protection** | **Sensitivity Labels**: Applying sensitivity labels to Fabric items. | Charges are based on the number of assets protected. | -| **Data Governance** | **Data Map Operations**: Scanning and cataloging Fabric data assets in Purview. | Charged based on the number of operations performed. | - -> Pricing example:
-> -> 1. **Automated Scanning, Ingestion & Classification**: **Other data sources**: 0.5 minutes of total scan duration using 16 vCores.
-> 2. **Data Map Enrichment**: 365 hours of advanced resource set usage.
-> 3. **Report Generation**: 365 hours of report generation.
-> 4. **Elastic Data Map**: 1 capacity units used for 365 hours. `1 Capacity Unit supports requests of up to 25 data map operations per second and includes storage of up to 10 GB of metadata about data assets`
-> 5. **Data Catalog**: Included with the Data Map.
-> 6. **Data Policy**: 0 DevOps policies applied.
-> 7. **Insights Consumption**: 0 API calls. - -| Feature | Description | Usage | Rate | Cost | -|---------|-------------|-------|------|------| -| **Automated Scanning, Ingestion & Classification** | Scanning and classifying data assets within Fabric. | 0.5 minutes x 16 vCores | $0.011 per vCore minute | $0.09 | -| **Data Map Enrichment** | Enriching metadata with advanced resource sets. | 365 hours | $0.21 per vCore-hour | $76.65 | -| **Report Generation** | Generating reports based on scanned data. | 365 hours | $0.82 per vCore-hour | $299.30 | -| **Elastic Data Map** | Capacity units supporting data map operations and metadata storage. | 1 capacity units x 365 hours | $0.411 per capacity unit hour | $150.02 | -| **Data Catalog** | Browsing and searching data assets. | Included with Data Map | N/A | $0.00 | -| **Data Policy** | Applying DevOps policies to data assets. | 0 policies x 365 hours | $0.0027 per policy hour | $0.00 | -| **Insights Consumption** | API calls for insights and data access. | 0 API calls | $0.21 per API call | $0.00 | - -> Total Optimized Monthly Cost: - -- **Automated Scanning and Classification**: $0.09 -- **Data Map Enrichment**: $76.65 -- **Report Generation**: $299.30 -- **Elastic Data Map**: $150.02 -- **Data Policy**: $0.00 -- **Insights Consumption**: $0.00 -- **Total Optimized Monthly Cost**: $526.05 - -> [!NOTE] -> Viewing reports generated by Microsoft Purview within Microsoft Fabric does not incur additional charges. The costs are primarily associated with the generation of the reports, which involves processing and computing resources. Once the reports are generated, viewing them is typically free of charge. - -## Cost Optimization Strategies - -| Strategy | Description | Details | -|----------|-------------|---------| -| **Efficient Scanning and Classification** | Optimize scanning and classification processes to reduce costs. | - **Schedule Scans**: Schedule scans during off-peak hours to reduce costs associated with high-demand periods.
- **Incremental Scans**: Use incremental scans to only scan new or modified data, reducing the total scan duration and vCore usage. | -| **Selective Data Map Enrichment** | Focus on enriching metadata for critical data assets. | - **Prioritize Critical Data**: Focus on enriching metadata for critical data assets that require detailed governance and analysis.
- **Batch Processing**: Process data in batches to optimize resource usage and reduce vCore-hour costs. | -| **Targeted Report Generation** | Limit report generation to essential reports. | - **Generate Essential Reports**: Limit report generation to essential reports that provide the most value for decision-making and compliance monitoring.
- **Optimize Report Frequency**: Adjust the frequency of report generation to balance between timely insights and cost efficiency. | -| **Elastic Data Map Utilization** | Efficiently manage capacity units to optimize costs. | - **Monitor Usage**: Regularly monitor capacity unit usage to ensure efficient allocation and avoid over-provisioning.
- **Scale Appropriately**: Scale capacity units based on actual usage patterns to optimize costs. | -| **API Call Management** | Minimize unnecessary API calls to reduce costs. | - **Optimize API Usage**: Minimize unnecessary API calls by caching results and reusing data where possible.
- **Batch API Requests**: Group API requests to reduce the number of individual calls, optimizing cost per API call. | - -
-

Total Visitors

- Visitor Count -
From 6491baf000ba76d490035f3bde4c14a5f20c9187 Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 17:44:36 -0600 Subject: [PATCH 18/37] moved --- .../Purview/PurviewforFabric.md | 121 ++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 Workloads-Specific/Purview/PurviewforFabric.md diff --git a/Workloads-Specific/Purview/PurviewforFabric.md b/Workloads-Specific/Purview/PurviewforFabric.md new file mode 100644 index 0000000..06a48f6 --- /dev/null +++ b/Workloads-Specific/Purview/PurviewforFabric.md @@ -0,0 +1,121 @@ +# Purview for Fabric - Overview + +Costa Rica + +[![GitHub](https://badgen.net/badge/icon/github?icon=github&label)](https://github.com) +[![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) +[brown9804](https://github.com/brown9804) + +Last updated: 2025-05-02 + +---------- + +
+List of References (Click to expand) + +- [Use Microsoft Purview to govern Microsoft Fabric](https://learn.microsoft.com/en-us/fabric/governance/microsoft-purview-fabric) +- [The Microsoft Purview hub for data owners (preview)](https://learn.microsoft.com/en-us/fabric/governance/use-microsoft-purview-hub-data-owners) +- [Govern data in Microsoft Fabric with Purview](https://learn.microsoft.com/en-us/training/modules/fabric-data-governance-purview/) + +
+ +## Content + +- [Purview + Fabric](#purview--fabric) +- [Microsoft Purview Pricing: Fabric focused](#microsoft-purview-pricing-fabric-focused) +- [Cost Optimization Strategies](#cost-optimization-strategies) + +## Purview + Fabric + +> Microsoft Purview and Microsoft Fabric are integrated to provide a comprehensive `data governance and analytics platform`. +> Purview enables users to `discover, classify, and protect data within Fabric`, ensuring that `data governance policies are consistently applied across the entire data estate`. +> Purview's capabilities, such as `automated scanning, ingestion, classification, and sensitivity labeling, enhance the governance of Fabric's data assets, providing a unified approach to data management and compliance`. + +| Feature | Description | Free | Charged | Interaction | +|---------|-------------|------|---------|-------------| +| **Automated Scanning, Ingestion & Classification** | This feature involves scanning and classifying data assets within Fabric. It helps in identifying and categorizing data based on predefined rules and policies. | - **Power BI Online**: Free for a limited time means that users can utilize automated scanning, ingestion, and classification features for Power BI Online without incurring costs during the promotional period.
- **SQL Server on-prem**: Free for a limited time indicates that users can use automated scanning, ingestion, and classification features for SQL Server on-premises without charges during the promotional period | **Other data sources**: $0.011 per vCore minute | Interacts with **Data Map Enrichment** by providing initial metadata. Feeds into **Report Generation** by supplying data for reports. | +| **Data Map Enrichment** | Enriching metadata with advanced resource sets involves adding detailed information to the metadata, making it more useful for data governance and analysis. | N/A | $0.21 per vCore-hour | Enhances metadata from **Automated Scanning, Ingestion & Classification**. Used in **Report Generation** for detailed insights. | +| **Report Generation** | Generating reports based on scanned data provides insights and summaries of the data assets, helping in decision-making and compliance monitoring. | N/A | $0.82 per vCore-hour | Utilizes enriched metadata from **Data Map Enrichment** to create comprehensive reports. | +| **Elastic Data Map** | Capacity units support data map operations and metadata storage, allowing for scalable and efficient management of data assets. | N/A | $0.411 per capacity unit hour | Supports operations of **Automated Scanning, Ingestion & Classification**, **Data Map Enrichment**, and **Report Generation**. | +| **Data Catalog** | Browsing and searching data assets allows users to explore and find relevant data within Fabric. This feature is included with the Data Map. | Included with Data Map | N/A | Leverages metadata and insights from other features for a unified view of data. | +| **Data Policy** | Applying DevOps policies to data assets involves setting rules and policies for data management and governance. | N/A | $0.0027 per policy hour | Ensures compliance and proper data management for assets managed by other features. | +| **Insights Consumption** | API calls for insights and data access allow users to retrieve and interact with data programmatically, providing flexibility in data usage. | N/A | $0.21 per API call | Enables programmatic access to data and metadata managed by other features. | + +## Microsoft Purview Pricing: Fabric focused + +> When Purview is integrated with Fabric, the following aspects are considered for pricing: + +```mermaid +graph TD + A[Data Map] --> B[Storage] + A --> C[Operations] + D[Data Catalog] --> E[Storage] + D --> F[Operations] + G[Information Protection] --> H[Sensitivity Labels] + G --> I[DLP] + + B --> J[Charged by metadata amount] + C --> K[Charged by operations] + E --> L[Charged by metadata amount] + F --> M[Charged by operations] + H --> N[Charged by protected assets] + I --> O[Charged by policies and data volume] +``` + +> [!TIP] +> `Compute resources` are used for `operations` such as scanning, ingestion, classification, enrichment, and report generation. These operations involve processing data and performing various tasks that require computational power.
+> `Storage resources` are used to `store metadata`, data maps, and other related information. This includes the storage of scanned metadata, enriched metadata, and generated reports. + +| Aspect | Description | Pricing | +|--------|-------------|---------| +| **Unified Data Catalog** | **Metadata Management**: Purview captures metadata from Fabric items. | Cost is based on the amount of metadata stored and the operations performed. | +| **Information Protection** | **Sensitivity Labels**: Applying sensitivity labels to Fabric items. | Charges are based on the number of assets protected. | +| **Data Governance** | **Data Map Operations**: Scanning and cataloging Fabric data assets in Purview. | Charged based on the number of operations performed. | + +> Pricing example:
+> +> 1. **Automated Scanning, Ingestion & Classification**: **Other data sources**: 0.5 minutes of total scan duration using 16 vCores.
+> 2. **Data Map Enrichment**: 365 hours of advanced resource set usage.
+> 3. **Report Generation**: 365 hours of report generation.
+> 4. **Elastic Data Map**: 1 capacity units used for 365 hours. `1 Capacity Unit supports requests of up to 25 data map operations per second and includes storage of up to 10 GB of metadata about data assets`
+> 5. **Data Catalog**: Included with the Data Map.
+> 6. **Data Policy**: 0 DevOps policies applied.
+> 7. **Insights Consumption**: 0 API calls. + +| Feature | Description | Usage | Rate | Cost | +|---------|-------------|-------|------|------| +| **Automated Scanning, Ingestion & Classification** | Scanning and classifying data assets within Fabric. | 0.5 minutes x 16 vCores | $0.011 per vCore minute | $0.09 | +| **Data Map Enrichment** | Enriching metadata with advanced resource sets. | 365 hours | $0.21 per vCore-hour | $76.65 | +| **Report Generation** | Generating reports based on scanned data. | 365 hours | $0.82 per vCore-hour | $299.30 | +| **Elastic Data Map** | Capacity units supporting data map operations and metadata storage. | 1 capacity units x 365 hours | $0.411 per capacity unit hour | $150.02 | +| **Data Catalog** | Browsing and searching data assets. | Included with Data Map | N/A | $0.00 | +| **Data Policy** | Applying DevOps policies to data assets. | 0 policies x 365 hours | $0.0027 per policy hour | $0.00 | +| **Insights Consumption** | API calls for insights and data access. | 0 API calls | $0.21 per API call | $0.00 | + +> Total Optimized Monthly Cost: + +- **Automated Scanning and Classification**: $0.09 +- **Data Map Enrichment**: $76.65 +- **Report Generation**: $299.30 +- **Elastic Data Map**: $150.02 +- **Data Policy**: $0.00 +- **Insights Consumption**: $0.00 +- **Total Optimized Monthly Cost**: $526.05 + +> [!NOTE] +> Viewing reports generated by Microsoft Purview within Microsoft Fabric does not incur additional charges. The costs are primarily associated with the generation of the reports, which involves processing and computing resources. Once the reports are generated, viewing them is typically free of charge. + +## Cost Optimization Strategies + +| Strategy | Description | Details | +|----------|-------------|---------| +| **Efficient Scanning and Classification** | Optimize scanning and classification processes to reduce costs. | - **Schedule Scans**: Schedule scans during off-peak hours to reduce costs associated with high-demand periods.
- **Incremental Scans**: Use incremental scans to only scan new or modified data, reducing the total scan duration and vCore usage. | +| **Selective Data Map Enrichment** | Focus on enriching metadata for critical data assets. | - **Prioritize Critical Data**: Focus on enriching metadata for critical data assets that require detailed governance and analysis.
- **Batch Processing**: Process data in batches to optimize resource usage and reduce vCore-hour costs. | +| **Targeted Report Generation** | Limit report generation to essential reports. | - **Generate Essential Reports**: Limit report generation to essential reports that provide the most value for decision-making and compliance monitoring.
- **Optimize Report Frequency**: Adjust the frequency of report generation to balance between timely insights and cost efficiency. | +| **Elastic Data Map Utilization** | Efficiently manage capacity units to optimize costs. | - **Monitor Usage**: Regularly monitor capacity unit usage to ensure efficient allocation and avoid over-provisioning.
- **Scale Appropriately**: Scale capacity units based on actual usage patterns to optimize costs. | +| **API Call Management** | Minimize unnecessary API calls to reduce costs. | - **Optimize API Usage**: Minimize unnecessary API calls by caching results and reusing data where possible.
- **Batch API Requests**: Group API requests to reduce the number of individual calls, optimizing cost per API call. | + +
+

Total Visitors

+ Visitor Count +
From dfb9bc28f35f6cedc4af7e4cb246e1fd5865fdc3 Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 17:46:41 -0600 Subject: [PATCH 19/37] purview for fabric --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 401b0b2..1b21121 100644 --- a/README.md +++ b/README.md @@ -147,7 +147,7 @@ From [Microsoft Documentation](https://learn.microsoft.com/pt-br/fabric/fundamen 4. **You want to empower data consumers** (analysts, scientists, engineers) to discover and understand data assets easily. 5. **You are scaling your data operations** and need consistent governance policies across teams and projects. -Click to read more about [Microsoft Purview for Fabric - Overview](./Purview-Fabric.md). +Click to read more about [Microsoft Purview for Fabric - Overview](./Workloads-Specific/Purview/PurviewforFabric.md). ## Networking From fec82d4910eb8e1b75f07a588ce37992ce92c1ed Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 17:51:53 -0600 Subject: [PATCH 20/37] data warehouse in progres --- Workloads-Specific/DataWarehouse/BestPractices.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Workloads-Specific/DataWarehouse/BestPractices.md b/Workloads-Specific/DataWarehouse/BestPractices.md index 7f85f9f..ff59e26 100644 --- a/Workloads-Specific/DataWarehouse/BestPractices.md +++ b/Workloads-Specific/DataWarehouse/BestPractices.md @@ -15,6 +15,20 @@ Last updated: 2025-05-02 +> Ensure that your data warehouse solution is engineered for scalability, resilience, and efficient integration of diverse data sources. Every component (from the core warehouse to mirrored databases) should adhere to strict best practices for structure, documentation, and management, ensuring long-term maintainability and robust disaster recovery. + +| **Best Practice** | **Description** | **Example** | +|---------------|-------|-------------------| +| **Structured Warehouse Implementation** | Build a robust, centralized data warehouse that organizes data into well-defined layers (often referred to as Bronze, Silver, and Gold). Layering the data warehouse ensures fast query performance, streamlined management, and strong governance. Leverage proper indexing, partitioning schemes, metadata tagging, and lineage tracking to support compliance and facilitate troubleshooting.| Create a warehouse solution that segments data as follows:
- **Bronze Layer:** Ingests raw, untransformed data maintaining source fidelity.
- **Silver Layer:** Applies data cleansing, validation, and enrichment.
- **Gold Layer:** Produces analytics-ready data using optimized storage formats like Parquet or Delta Lake, with partitioning by date or region. Integrate metadata catalogs and RBAC controls for added governance. | +| **Sample Warehouse Environment** | Develop an isolated sample warehouse to prototype, test, and train on the data warehouse structure. This environment mimics the production warehouse architecture but contains a representative subset of data. Its purpose is to validate new queries, ETL routines, and performance tuning while insulating production operations from potential disruptions.| Deploy a sample warehouse using anonymized or synthetic data. For example, use a smaller, mirrored version of the production warehouse structure to experiment with SQL queries, develop new ETL pipelines, or train team members without impacting live data and processes.| +| **Interactive Notebooks for Data Warehousing** | Use interactive notebooks as exploratory and documentation tools for your warehouse operations. These notebooks serve as an effective interface for testing queries, performing data analysis, and capturing transformation logic. Rich markdown annotations, code segmentation, and version control increase collaboration while ensuring reproducibility across the team.| Create notebooks that are segmented into distinct sections:
- **Data Loading:** Scripts to pull data from the warehouse.
- **Data Transformation:** Blocks that illustrate cleaning and enrichment steps.
- **Analysis & Visualization:** SQL queries and charts generated from warehouse data, supplemented with detailed markdown explanations and inline comments to clarify business logic.| +| **Mirrored Azure SQL Database** | Implement mirroring for your Azure SQL Database to enhance high availability and enable robust disaster recovery. This mirroring facilitates load balancing, supports failover scenarios, and enables non-disruptive maintenance (crucial for mission-critical operations). | Configure a mirrored Azure SQL Database with geo-redundancy and automatic failover. For example, use Azure’s built-in replication to maintain a secondary copy that seamlessly takes over during primary instance outages, ensuring continuous data availability.| +| **Mirrored Snowflake** | Establish a mirrored Snowflake instance to boost resilience and data consistency. Mirroring your Snowflake environment can help you maintain continuous integration testing and rapid recovery in case of primary instance failures, while also ensuring global replication consistency. | Deploy a Snowflake mirror by setting up data replication between your primary instance and a secondary environment. Regularly validate synchronization and monitor rollback capabilities to confirm that the mirror remains current and can support operations during failover or testing cycles.| +| **Mirrored Azure Cosmos DB (Preview)** | Leverage the preview features of mirrored Azure Cosmos DB to set up a redundant NoSQL datastore. This setup targets high availability and low latency access for globally distributed applications, providing additional resilience through multi-region replication and load balancing. | Configure an Azure Cosmos DB mirroring setup in preview mode that replicates data across multiple regions. Test the environment by simulating high-load queries and failover events to ensure that global access is maintained with minimal latency.| +| **Mirrored Azure Database for PostgreSQL (Preview)** | Utilize mirroring for Azure Database for PostgreSQL (in preview) to boost availability and support continuous operations. This safeguards maintenance activities, minimizes downtime, and ensures the consistency of transactional workloads. | Set up a mirrored Azure Database for PostgreSQL in its preview configuration. Create read replicas with continuous synchronization, perform failover drills, and track replication latency to guarantee that the mirrored instance maintains data integrity and high availability during operational stress.| +| **Mirrored Azure SQL Managed Instance (Preview)** | Deploy a mirrored configuration for Azure SQL Managed Instance (preview) to combine the power of SQL Server with cloud agility. This approach underpins your enterprise’s disaster recovery strategy and supports legacy workloads with advanced data security and resiliency. | Configure an Azure SQL Managed Instance in a mirrored setup using strategies like log shipping or transactional replication. Monitor key performance metrics to ensure that replication latency is minimal, and the mirror is capable of supporting a swift transition during outages or maintenance windows.| +| **Mirrored Database (Preview)** | Implement a generic mirrored database solution (in preview) to test cross-platform replication strategies. This flexible approach allows you to verify that your mirroring configurations, error-handling, and failover processes are robust before production rollout. | Set up a mirrored database configuration that synchronizes periodically with a primary instance. Schedule automated tests and synchronization checks, and simulate failover events to validate that the data remains consistent, with built-in alerts and monitoring demonstrating the mirror’s readiness for production use.| +

Total Visitors

Visitor Count From d40a95539cb03c769ae2280595e794f84d902552 Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 18:01:06 -0600 Subject: [PATCH 21/37] visual guindace of workload --- Workloads-Specific/PowerBi/BestPractices.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Workloads-Specific/PowerBi/BestPractices.md b/Workloads-Specific/PowerBi/BestPractices.md index dca0d2f..de25b46 100644 --- a/Workloads-Specific/PowerBi/BestPractices.md +++ b/Workloads-Specific/PowerBi/BestPractices.md @@ -46,6 +46,10 @@ Last updated: 2025-05-02 +
+ Centered Image +
+ ## Clear Dashboard and Report Structure > Ensure that your Power BI dashboards and reports are organized, visually cohesive, and provide clear insights at a glance. From 907af15547915f5aaadeff47a3a25fd68be52df4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 3 May 2025 00:01:17 +0000 Subject: [PATCH 22/37] Update last modified date in Markdown files --- README.md | 2 +- Workloads-Specific/Copilot/BestPractices.md | 2 +- Workloads-Specific/DataEngineering/BestPractices.md | 2 +- Workloads-Specific/DataFactory/BestPractices.md | 2 +- Workloads-Specific/DataScience/BestPractices.md | 2 +- Workloads-Specific/DataWarehouse/BestPractices.md | 2 +- Workloads-Specific/OneLake/BestPractices.md | 2 +- Workloads-Specific/PowerBi/BestPractices.md | 2 +- Workloads-Specific/Purview/BestPractices.md | 2 +- Workloads-Specific/Purview/PurviewforFabric.md | 2 +- Workloads-Specific/RealTimeIntelligence/BestPractices.md | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 1b21121..bcdd1dc 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ Costa Rica [![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) [brown9804](https://github.com/brown9804) -Last updated: 2025-05-02 +Last updated: 2025-05-03 ------------------------------------------ diff --git a/Workloads-Specific/Copilot/BestPractices.md b/Workloads-Specific/Copilot/BestPractices.md index 0a67bcb..be4da10 100644 --- a/Workloads-Specific/Copilot/BestPractices.md +++ b/Workloads-Specific/Copilot/BestPractices.md @@ -6,7 +6,7 @@ Costa Rica [![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) [brown9804](https://github.com/brown9804) -Last updated: 2025-05-02 +Last updated: 2025-05-03 ---------- diff --git a/Workloads-Specific/DataEngineering/BestPractices.md b/Workloads-Specific/DataEngineering/BestPractices.md index 947e4d9..83a7f08 100644 --- a/Workloads-Specific/DataEngineering/BestPractices.md +++ b/Workloads-Specific/DataEngineering/BestPractices.md @@ -6,7 +6,7 @@ Costa Rica [![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) [brown9804](https://github.com/brown9804) -Last updated: 2025-05-02 +Last updated: 2025-05-03 ---------- diff --git a/Workloads-Specific/DataFactory/BestPractices.md b/Workloads-Specific/DataFactory/BestPractices.md index d8b3073..876cc14 100644 --- a/Workloads-Specific/DataFactory/BestPractices.md +++ b/Workloads-Specific/DataFactory/BestPractices.md @@ -6,7 +6,7 @@ Costa Rica [![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) [brown9804](https://github.com/brown9804) -Last updated: 2025-05-02 +Last updated: 2025-05-03 ---------- diff --git a/Workloads-Specific/DataScience/BestPractices.md b/Workloads-Specific/DataScience/BestPractices.md index 86be475..d29ce68 100644 --- a/Workloads-Specific/DataScience/BestPractices.md +++ b/Workloads-Specific/DataScience/BestPractices.md @@ -6,7 +6,7 @@ Costa Rica [![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) [brown9804](https://github.com/brown9804) -Last updated: 2025-05-02 +Last updated: 2025-05-03 ---------- diff --git a/Workloads-Specific/DataWarehouse/BestPractices.md b/Workloads-Specific/DataWarehouse/BestPractices.md index ff59e26..d71dc9a 100644 --- a/Workloads-Specific/DataWarehouse/BestPractices.md +++ b/Workloads-Specific/DataWarehouse/BestPractices.md @@ -6,7 +6,7 @@ Costa Rica [![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) [brown9804](https://github.com/brown9804) -Last updated: 2025-05-02 +Last updated: 2025-05-03 ---------- diff --git a/Workloads-Specific/OneLake/BestPractices.md b/Workloads-Specific/OneLake/BestPractices.md index 6166524..7ccee2f 100644 --- a/Workloads-Specific/OneLake/BestPractices.md +++ b/Workloads-Specific/OneLake/BestPractices.md @@ -6,7 +6,7 @@ Costa Rica [![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) [brown9804](https://github.com/brown9804) -Last updated: 2025-05-02 +Last updated: 2025-05-03 ---------- diff --git a/Workloads-Specific/PowerBi/BestPractices.md b/Workloads-Specific/PowerBi/BestPractices.md index de25b46..cca9f6b 100644 --- a/Workloads-Specific/PowerBi/BestPractices.md +++ b/Workloads-Specific/PowerBi/BestPractices.md @@ -6,7 +6,7 @@ Costa Rica [![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) [brown9804](https://github.com/brown9804) -Last updated: 2025-05-02 +Last updated: 2025-05-03 ---------- diff --git a/Workloads-Specific/Purview/BestPractices.md b/Workloads-Specific/Purview/BestPractices.md index 86c8028..074b189 100644 --- a/Workloads-Specific/Purview/BestPractices.md +++ b/Workloads-Specific/Purview/BestPractices.md @@ -6,7 +6,7 @@ Costa Rica [![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) [brown9804](https://github.com/brown9804) -Last updated: 2025-05-02 +Last updated: 2025-05-03 ---------- diff --git a/Workloads-Specific/Purview/PurviewforFabric.md b/Workloads-Specific/Purview/PurviewforFabric.md index 06a48f6..c5d1099 100644 --- a/Workloads-Specific/Purview/PurviewforFabric.md +++ b/Workloads-Specific/Purview/PurviewforFabric.md @@ -6,7 +6,7 @@ Costa Rica [![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) [brown9804](https://github.com/brown9804) -Last updated: 2025-05-02 +Last updated: 2025-05-03 ---------- diff --git a/Workloads-Specific/RealTimeIntelligence/BestPractices.md b/Workloads-Specific/RealTimeIntelligence/BestPractices.md index a89b7f9..6369ab1 100644 --- a/Workloads-Specific/RealTimeIntelligence/BestPractices.md +++ b/Workloads-Specific/RealTimeIntelligence/BestPractices.md @@ -6,7 +6,7 @@ Costa Rica [![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) [brown9804](https://github.com/brown9804) -Last updated: 2025-05-02 +Last updated: 2025-05-03 ---------- From 1bddb81495878fce431c8afd3ad0ed7ca1322c9c Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 18:02:24 -0600 Subject: [PATCH 23/37] adf visual guindace --- Workloads-Specific/DataFactory/BestPractices.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Workloads-Specific/DataFactory/BestPractices.md b/Workloads-Specific/DataFactory/BestPractices.md index 876cc14..ec69188 100644 --- a/Workloads-Specific/DataFactory/BestPractices.md +++ b/Workloads-Specific/DataFactory/BestPractices.md @@ -56,6 +56,10 @@ Last updated: 2025-05-03 +
+ Centered Image +
+ ## Clear Pipeline Structure > Ensure your pipelines are well-organized and easy to understand. From 05328706ef2d815b421068efade89a8e66f36f6b Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 18:18:36 -0600 Subject: [PATCH 24/37] mirroring in progress --- .../DataWarehouse/BestPractices.md | 51 ++++++++++++++----- 1 file changed, 38 insertions(+), 13 deletions(-) diff --git a/Workloads-Specific/DataWarehouse/BestPractices.md b/Workloads-Specific/DataWarehouse/BestPractices.md index d71dc9a..497dd22 100644 --- a/Workloads-Specific/DataWarehouse/BestPractices.md +++ b/Workloads-Specific/DataWarehouse/BestPractices.md @@ -6,28 +6,53 @@ Costa Rica [![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) [brown9804](https://github.com/brown9804) -Last updated: 2025-05-03 +Last updated: 2025-05-02 ---------- +> Ensure that your data warehouse solution is engineered for scalability, resilience, and efficient integration of diverse data sources. Every component (from the core warehouse to mirrored databases) should adhere to strict best practices for structure, documentation, and management, ensuring long-term maintainability and robust disaster recovery. +
List of References (Click to expand)
-> Ensure that your data warehouse solution is engineered for scalability, resilience, and efficient integration of diverse data sources. Every component (from the core warehouse to mirrored databases) should adhere to strict best practices for structure, documentation, and management, ensuring long-term maintainability and robust disaster recovery. +
+Table of Content (Click to expand) + +
+ +
+ Centered Image +
+ +## Sample Warehouse Environment + +> Develop an isolated sample warehouse to prototype, test, and train on the data warehouse structure. This environment mimics the production warehouse architecture but contains a representative subset of data. Its purpose is to validate new queries, ETL routines, and performance tuning while insulating production operations from potential disruptions. You can deploy a sample warehouse using anonymized or synthetic data. For example, use a smaller, mirrored version of the production warehouse structure to experiment with SQL queries, develop new ETL pipelines, or train team members without impacting live data and processes. + +## Structured Warehouse Implementation + +> Build a robust, centralized data warehouse that organizes data into well-defined layers (often referred to as Bronze, Silver, and Gold). Layering the data warehouse ensures fast query performance, streamlined management, and strong governance. Leverage proper indexing, partitioning schemes, metadata tagging, and lineage tracking to support compliance and facilitate troubleshooting. + +Create a warehouse solution that segments data as follows: +- Bronze Layer: Ingests raw, untransformed data maintaining source fidelity. +- Silver Layer: Applies data cleansing, validation, and enrichment. +- Gold Layer: Produces analytics-ready data using optimized storage formats like Parquet or Delta Lake, with partitioning by date or region. Integrate metadata catalogs and RBAC controls for added governance. + +## Interactive Notebooks for Data Warehousing + +> Use interactive notebooks as exploratory and documentation tools for your warehouse operations. These notebooks serve as an effective interface for testing queries, performing data analysis, and capturing transformation logic. Rich markdown annotations, code segmentation, and version control increase collaboration while ensuring reproducibility across the team. + +Create notebooks that are segmented into distinct sections: +- Data Loading: Scripts to pull data from the warehouse. +- Data Transformation: Blocks that illustrate cleaning and enrichment steps. +- Analysis & Visualization: SQL queries and charts generated from warehouse data, supplemented with detailed markdown explanations and inline comments to clarify business logic. + +## Using Mirroring to Your Benefit + +> Mirroring offers a modern, efficient way to continuously and seamlessly access and ingest data from operational databases or data warehouses. It works by replicating a snapshot of the source database into OneLake, and then keeping that replica in near real-time sync with the original. This ensures that your data is always up to date and readily available for analytics or downstream processing. `As part of the value offering, each Fabric compute SKU includes a built-in allowance of free Mirroring storage, proportional to the compute capacity you provision. For example, provisioning an F64 SKU grants you 64 terabytes of free Mirroring storage. You only begin incurring OneLake storage charges if your mirrored data exceeds this free limit or if the compute capacity is paused.` Click [here](https://azure.microsoft.com/en-us/pricing/details/microsoft-fabric/?msockid=38ec3806873362243e122ce086486339) to read more about it. + -| **Best Practice** | **Description** | **Example** | -|---------------|-------|-------------------| -| **Structured Warehouse Implementation** | Build a robust, centralized data warehouse that organizes data into well-defined layers (often referred to as Bronze, Silver, and Gold). Layering the data warehouse ensures fast query performance, streamlined management, and strong governance. Leverage proper indexing, partitioning schemes, metadata tagging, and lineage tracking to support compliance and facilitate troubleshooting.| Create a warehouse solution that segments data as follows:
- **Bronze Layer:** Ingests raw, untransformed data maintaining source fidelity.
- **Silver Layer:** Applies data cleansing, validation, and enrichment.
- **Gold Layer:** Produces analytics-ready data using optimized storage formats like Parquet or Delta Lake, with partitioning by date or region. Integrate metadata catalogs and RBAC controls for added governance. | -| **Sample Warehouse Environment** | Develop an isolated sample warehouse to prototype, test, and train on the data warehouse structure. This environment mimics the production warehouse architecture but contains a representative subset of data. Its purpose is to validate new queries, ETL routines, and performance tuning while insulating production operations from potential disruptions.| Deploy a sample warehouse using anonymized or synthetic data. For example, use a smaller, mirrored version of the production warehouse structure to experiment with SQL queries, develop new ETL pipelines, or train team members without impacting live data and processes.| -| **Interactive Notebooks for Data Warehousing** | Use interactive notebooks as exploratory and documentation tools for your warehouse operations. These notebooks serve as an effective interface for testing queries, performing data analysis, and capturing transformation logic. Rich markdown annotations, code segmentation, and version control increase collaboration while ensuring reproducibility across the team.| Create notebooks that are segmented into distinct sections:
- **Data Loading:** Scripts to pull data from the warehouse.
- **Data Transformation:** Blocks that illustrate cleaning and enrichment steps.
- **Analysis & Visualization:** SQL queries and charts generated from warehouse data, supplemented with detailed markdown explanations and inline comments to clarify business logic.| -| **Mirrored Azure SQL Database** | Implement mirroring for your Azure SQL Database to enhance high availability and enable robust disaster recovery. This mirroring facilitates load balancing, supports failover scenarios, and enables non-disruptive maintenance (crucial for mission-critical operations). | Configure a mirrored Azure SQL Database with geo-redundancy and automatic failover. For example, use Azure’s built-in replication to maintain a secondary copy that seamlessly takes over during primary instance outages, ensuring continuous data availability.| -| **Mirrored Snowflake** | Establish a mirrored Snowflake instance to boost resilience and data consistency. Mirroring your Snowflake environment can help you maintain continuous integration testing and rapid recovery in case of primary instance failures, while also ensuring global replication consistency. | Deploy a Snowflake mirror by setting up data replication between your primary instance and a secondary environment. Regularly validate synchronization and monitor rollback capabilities to confirm that the mirror remains current and can support operations during failover or testing cycles.| -| **Mirrored Azure Cosmos DB (Preview)** | Leverage the preview features of mirrored Azure Cosmos DB to set up a redundant NoSQL datastore. This setup targets high availability and low latency access for globally distributed applications, providing additional resilience through multi-region replication and load balancing. | Configure an Azure Cosmos DB mirroring setup in preview mode that replicates data across multiple regions. Test the environment by simulating high-load queries and failover events to ensure that global access is maintained with minimal latency.| -| **Mirrored Azure Database for PostgreSQL (Preview)** | Utilize mirroring for Azure Database for PostgreSQL (in preview) to boost availability and support continuous operations. This safeguards maintenance activities, minimizes downtime, and ensures the consistency of transactional workloads. | Set up a mirrored Azure Database for PostgreSQL in its preview configuration. Create read replicas with continuous synchronization, perform failover drills, and track replication latency to guarantee that the mirrored instance maintains data integrity and high availability during operational stress.| -| **Mirrored Azure SQL Managed Instance (Preview)** | Deploy a mirrored configuration for Azure SQL Managed Instance (preview) to combine the power of SQL Server with cloud agility. This approach underpins your enterprise’s disaster recovery strategy and supports legacy workloads with advanced data security and resiliency. | Configure an Azure SQL Managed Instance in a mirrored setup using strategies like log shipping or transactional replication. Monitor key performance metrics to ensure that replication latency is minimal, and the mirror is capable of supporting a swift transition during outages or maintenance windows.| -| **Mirrored Database (Preview)** | Implement a generic mirrored database solution (in preview) to test cross-platform replication strategies. This flexible approach allows you to verify that your mirroring configurations, error-handling, and failover processes are robust before production rollout. | Set up a mirrored database configuration that synchronizes periodically with a primary instance. Schedule automated tests and synchronization checks, and simulate failover events to validate that the data remains consistent, with built-in alerts and monitoring demonstrating the mirror’s readiness for production use.|

Total Visitors

From 5e4826d3a5b2ba2930e87e7da49ea4112e0bcd06 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 3 May 2025 00:18:52 +0000 Subject: [PATCH 25/37] Update last modified date in Markdown files --- Workloads-Specific/DataWarehouse/BestPractices.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Workloads-Specific/DataWarehouse/BestPractices.md b/Workloads-Specific/DataWarehouse/BestPractices.md index 497dd22..b1e269e 100644 --- a/Workloads-Specific/DataWarehouse/BestPractices.md +++ b/Workloads-Specific/DataWarehouse/BestPractices.md @@ -6,7 +6,7 @@ Costa Rica [![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) [brown9804](https://github.com/brown9804) -Last updated: 2025-05-02 +Last updated: 2025-05-03 ---------- From 710f7fa3d63fab916ad832eab4cd0d0e35dca099 Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 19:00:06 -0600 Subject: [PATCH 26/37] Update BestPractices.adding medallion arch --- Workloads-Specific/DataWarehouse/BestPractices.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Workloads-Specific/DataWarehouse/BestPractices.md b/Workloads-Specific/DataWarehouse/BestPractices.md index b1e269e..64891db 100644 --- a/Workloads-Specific/DataWarehouse/BestPractices.md +++ b/Workloads-Specific/DataWarehouse/BestPractices.md @@ -30,6 +30,8 @@ Last updated: 2025-05-03 > Develop an isolated sample warehouse to prototype, test, and train on the data warehouse structure. This environment mimics the production warehouse architecture but contains a representative subset of data. Its purpose is to validate new queries, ETL routines, and performance tuning while insulating production operations from potential disruptions. You can deploy a sample warehouse using anonymized or synthetic data. For example, use a smaller, mirrored version of the production warehouse structure to experiment with SQL queries, develop new ETL pipelines, or train team members without impacting live data and processes. +https://github.com/user-attachments/assets/acaecdd1-e81c-4e3a-b14a-db054f700f3e + ## Structured Warehouse Implementation > Build a robust, centralized data warehouse that organizes data into well-defined layers (often referred to as Bronze, Silver, and Gold). Layering the data warehouse ensures fast query performance, streamlined management, and strong governance. Leverage proper indexing, partitioning schemes, metadata tagging, and lineage tracking to support compliance and facilitate troubleshooting. @@ -39,6 +41,13 @@ Create a warehouse solution that segments data as follows: - Silver Layer: Applies data cleansing, validation, and enrichment. - Gold Layer: Produces analytics-ready data using optimized storage formats like Parquet or Delta Lake, with partitioning by date or region. Integrate metadata catalogs and RBAC controls for added governance. +> Here is a [reference of a medallion architecture using only Fabric](./Workloads-Specific/DataWarehouse/Medallion_Archuitecture/).
+> If you need to handle `complex data transformations and large-scale data processing`, you can use our combined solution of **Fabric + Databricks**. This powerful combination leverages the strengths of both platforms to provide a robust data processing pipeline. This workshop on [Fabric with Databricks for Data Analytics](https://microsoft.github.io/TechExcel-Fabric-with-Databricks-for-Data-Analytics/) offers a comprehensive step-by-step guide on developing Medallion Architecture using Fabric and Databricks.
+ +| Medallion Architecture using only Fabric | Medallion Architecture Fabric + Databricks | +| --- | --- | +| image | image + ## Interactive Notebooks for Data Warehousing > Use interactive notebooks as exploratory and documentation tools for your warehouse operations. These notebooks serve as an effective interface for testing queries, performing data analysis, and capturing transformation logic. Rich markdown annotations, code segmentation, and version control increase collaboration while ensuring reproducibility across the team. From 47c6815c838d643a807997d2d0780658390b8ec4 Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 19:12:59 -0600 Subject: [PATCH 27/37] adding medallion arch --- .../DataWarehouse/BestPractices.md | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/Workloads-Specific/DataWarehouse/BestPractices.md b/Workloads-Specific/DataWarehouse/BestPractices.md index 64891db..2dc373c 100644 --- a/Workloads-Specific/DataWarehouse/BestPractices.md +++ b/Workloads-Specific/DataWarehouse/BestPractices.md @@ -15,11 +15,19 @@ Last updated: 2025-05-03
List of References (Click to expand) +- [Ingest data into the Warehouse](https://learn.microsoft.com/en-us/fabric/data-warehouse/ingest-data) +- [Performance guidelines in Fabric Data Warehouse](https://learn.microsoft.com/en-us/fabric/data-warehouse/guidelines-warehouse-performance) +
Table of Content (Click to expand) +- [Sample Warehouse Environment](#sample-warehouse-environment) +- [Structured Warehouse Implementation](#structured-warehouse-implementation) +- [Interactive Notebooks for Data Warehousing](#interactive-notebooks-for-data-warehousing) +- [Using Mirroring to Your Benefit](#using-mirroring-to-your-benefit) +
@@ -41,12 +49,11 @@ Create a warehouse solution that segments data as follows: - Silver Layer: Applies data cleansing, validation, and enrichment. - Gold Layer: Produces analytics-ready data using optimized storage formats like Parquet or Delta Lake, with partitioning by date or region. Integrate metadata catalogs and RBAC controls for added governance. -> Here is a [reference of a medallion architecture using only Fabric](./Workloads-Specific/DataWarehouse/Medallion_Archuitecture/).
-> If you need to handle `complex data transformations and large-scale data processing`, you can use our combined solution of **Fabric + Databricks**. This powerful combination leverages the strengths of both platforms to provide a robust data processing pipeline. This workshop on [Fabric with Databricks for Data Analytics](https://microsoft.github.io/TechExcel-Fabric-with-Databricks-for-Data-Analytics/) offers a comprehensive step-by-step guide on developing Medallion Architecture using Fabric and Databricks.
+> Here is a [reference of a medallion architecture using only Fabric](./Workloads-Specific/DataWarehouse/Medallion_Archuitecture/). If you need to handle `complex data transformations and large-scale data processing`, you can use our combined solution of **Fabric + Databricks**. This powerful combination leverages the strengths of both platforms to provide a robust data processing pipeline. This workshop on [Fabric with Databricks for Data Analytics](https://microsoft.github.io/TechExcel-Fabric-with-Databricks-for-Data-Analytics/) offers a comprehensive step-by-step guide on developing Medallion Architecture using Fabric and Databricks.
| Medallion Architecture using only Fabric | Medallion Architecture Fabric + Databricks | | --- | --- | -| image | image +| image | image | ## Interactive Notebooks for Data Warehousing @@ -61,7 +68,18 @@ Create notebooks that are segmented into distinct sections: > Mirroring offers a modern, efficient way to continuously and seamlessly access and ingest data from operational databases or data warehouses. It works by replicating a snapshot of the source database into OneLake, and then keeping that replica in near real-time sync with the original. This ensures that your data is always up to date and readily available for analytics or downstream processing. `As part of the value offering, each Fabric compute SKU includes a built-in allowance of free Mirroring storage, proportional to the compute capacity you provision. For example, provisioning an F64 SKU grants you 64 terabytes of free Mirroring storage. You only begin incurring OneLake storage charges if your mirrored data exceeds this free limit or if the compute capacity is paused.` Click [here](https://azure.microsoft.com/en-us/pricing/details/microsoft-fabric/?msockid=38ec3806873362243e122ce086486339) to read more about it. +
+ Centered Image +
+| **Mirroring Option** | Details | +|--------------------------------------------------|--------------------| +| **Mirrored Azure SQL Database** | Configure a mirrored Azure SQL Database with geo-redundancy and automatic failover. For example, use Azure’s built-in replication to maintain a secondary copy that seamlessly takes over during primary instance outages, ensuring continuous data availability. | +| **Mirrored Snowflake** | Deploy a Snowflake mirror by setting up data replication between your primary instance and a secondary environment. Regularly validate synchronization and monitor rollback capabilities to confirm that the mirror remains current and can support operations during failover or testing cycles. | +| **Mirrored Azure Cosmos DB** | Configure an Azure Cosmos DB mirroring setup in preview mode that replicates data across multiple regions. Test the environment by simulating high-load queries and failover events to ensure that global access is maintained with minimal latency. | +| **Mirrored Azure Database for PostgreSQL** | Set up a mirrored Azure Database for PostgreSQL in its preview configuration. Create read replicas with continuous synchronization, perform failover drills, and track replication latency to guarantee that the mirrored instance maintains data integrity and high availability during operational stress. | +| **Mirrored Azure SQL Managed Instance** | Configure an Azure SQL Managed Instance in a mirrored setup using strategies like log shipping or transactional replication. Monitor key performance metrics to ensure that replication latency is minimal, and the mirror is capable of supporting a swift transition during outages or maintenance windows. | +| **Mirrored Database** | Set up a mirrored database configuration that synchronizes periodically with a primary instance. Schedule automated tests and synchronization checks, and simulate failover events to validate that the data remains consistent, with built-in alerts and monitoring demonstrating the mirror’s readiness for production use. |

Total Visitors

From 1522998a7774ff88849eeeda755b34295c6592e5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 3 May 2025 01:13:17 +0000 Subject: [PATCH 28/37] Fix Markdown syntax issues --- Workloads-Specific/DataWarehouse/BestPractices.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Workloads-Specific/DataWarehouse/BestPractices.md b/Workloads-Specific/DataWarehouse/BestPractices.md index 2dc373c..5fdd2bd 100644 --- a/Workloads-Specific/DataWarehouse/BestPractices.md +++ b/Workloads-Specific/DataWarehouse/BestPractices.md @@ -34,17 +34,18 @@ Last updated: 2025-05-03 Centered Image
-## Sample Warehouse Environment +## Sample Warehouse Environment -> Develop an isolated sample warehouse to prototype, test, and train on the data warehouse structure. This environment mimics the production warehouse architecture but contains a representative subset of data. Its purpose is to validate new queries, ETL routines, and performance tuning while insulating production operations from potential disruptions. You can deploy a sample warehouse using anonymized or synthetic data. For example, use a smaller, mirrored version of the production warehouse structure to experiment with SQL queries, develop new ETL pipelines, or train team members without impacting live data and processes. +> Develop an isolated sample warehouse to prototype, test, and train on the data warehouse structure. This environment mimics the production warehouse architecture but contains a representative subset of data. Its purpose is to validate new queries, ETL routines, and performance tuning while insulating production operations from potential disruptions. You can deploy a sample warehouse using anonymized or synthetic data. For example, use a smaller, mirrored version of the production warehouse structure to experiment with SQL queries, develop new ETL pipelines, or train team members without impacting live data and processes. -https://github.com/user-attachments/assets/acaecdd1-e81c-4e3a-b14a-db054f700f3e + -## Structured Warehouse Implementation +## Structured Warehouse Implementation -> Build a robust, centralized data warehouse that organizes data into well-defined layers (often referred to as Bronze, Silver, and Gold). Layering the data warehouse ensures fast query performance, streamlined management, and strong governance. Leverage proper indexing, partitioning schemes, metadata tagging, and lineage tracking to support compliance and facilitate troubleshooting. +> Build a robust, centralized data warehouse that organizes data into well-defined layers (often referred to as Bronze, Silver, and Gold). Layering the data warehouse ensures fast query performance, streamlined management, and strong governance. Leverage proper indexing, partitioning schemes, metadata tagging, and lineage tracking to support compliance and facilitate troubleshooting. Create a warehouse solution that segments data as follows: + - Bronze Layer: Ingests raw, untransformed data maintaining source fidelity. - Silver Layer: Applies data cleansing, validation, and enrichment. - Gold Layer: Produces analytics-ready data using optimized storage formats like Parquet or Delta Lake, with partitioning by date or region. Integrate metadata catalogs and RBAC controls for added governance. @@ -55,11 +56,12 @@ Create a warehouse solution that segments data as follows: | --- | --- | | image | image | -## Interactive Notebooks for Data Warehousing +## Interactive Notebooks for Data Warehousing > Use interactive notebooks as exploratory and documentation tools for your warehouse operations. These notebooks serve as an effective interface for testing queries, performing data analysis, and capturing transformation logic. Rich markdown annotations, code segmentation, and version control increase collaboration while ensuring reproducibility across the team. Create notebooks that are segmented into distinct sections: + - Data Loading: Scripts to pull data from the warehouse. - Data Transformation: Blocks that illustrate cleaning and enrichment steps. - Analysis & Visualization: SQL queries and charts generated from warehouse data, supplemented with detailed markdown explanations and inline comments to clarify business logic. From 5d3b811cf155bd28efb38a52281eb07ce7a5678e Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 19:14:12 -0600 Subject: [PATCH 29/37] je wrong spelling --- Workloads-Specific/DataWarehouse/BestPractices.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Workloads-Specific/DataWarehouse/BestPractices.md b/Workloads-Specific/DataWarehouse/BestPractices.md index 5fdd2bd..c7b4580 100644 --- a/Workloads-Specific/DataWarehouse/BestPractices.md +++ b/Workloads-Specific/DataWarehouse/BestPractices.md @@ -50,7 +50,7 @@ Create a warehouse solution that segments data as follows: - Silver Layer: Applies data cleansing, validation, and enrichment. - Gold Layer: Produces analytics-ready data using optimized storage formats like Parquet or Delta Lake, with partitioning by date or region. Integrate metadata catalogs and RBAC controls for added governance. -> Here is a [reference of a medallion architecture using only Fabric](./Workloads-Specific/DataWarehouse/Medallion_Archuitecture/). If you need to handle `complex data transformations and large-scale data processing`, you can use our combined solution of **Fabric + Databricks**. This powerful combination leverages the strengths of both platforms to provide a robust data processing pipeline. This workshop on [Fabric with Databricks for Data Analytics](https://microsoft.github.io/TechExcel-Fabric-with-Databricks-for-Data-Analytics/) offers a comprehensive step-by-step guide on developing Medallion Architecture using Fabric and Databricks.
+> Here is a [reference of a medallion architecture using only Fabric](./Workloads-Specific/DataWarehouse/Medallion_Architecture/). If you need to handle `complex data transformations and large-scale data processing`, you can use our combined solution of **Fabric + Databricks**. This powerful combination leverages the strengths of both platforms to provide a robust data processing pipeline. This workshop on [Fabric with Databricks for Data Analytics](https://microsoft.github.io/TechExcel-Fabric-with-Databricks-for-Data-Analytics/) offers a comprehensive step-by-step guide on developing Medallion Architecture using Fabric and Databricks.
| Medallion Architecture using only Fabric | Medallion Architecture Fabric + Databricks | | --- | --- | From d6aaf8de574e742c3ae28ae739f5e5531993cd92 Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 19:15:16 -0600 Subject: [PATCH 30/37] + medallion arch --- .../Medallion_Architecture/README.md | 303 ++ .../docs/FabricMedallionArch.drawio | 112 + .../Medallion_Architecture/docs/README.md | 14 + .../sample_files/2020orders.csv | 2734 +++++++++++++++++ .../sample_files/products.csv | 296 ++ .../src/0_notebook_bronze_to_silver.ipynb | 1 + .../src/1_notebook_silver_to_gold.ipynb | 1 + 7 files changed, 3461 insertions(+) create mode 100644 Workloads-Specific/DataWarehouse/Medallion_Architecture/README.md create mode 100644 Workloads-Specific/DataWarehouse/Medallion_Architecture/docs/FabricMedallionArch.drawio create mode 100644 Workloads-Specific/DataWarehouse/Medallion_Architecture/docs/README.md create mode 100644 Workloads-Specific/DataWarehouse/Medallion_Architecture/sample_files/2020orders.csv create mode 100644 Workloads-Specific/DataWarehouse/Medallion_Architecture/sample_files/products.csv create mode 100644 Workloads-Specific/DataWarehouse/Medallion_Architecture/src/0_notebook_bronze_to_silver.ipynb create mode 100644 Workloads-Specific/DataWarehouse/Medallion_Architecture/src/1_notebook_silver_to_gold.ipynb diff --git a/Workloads-Specific/DataWarehouse/Medallion_Architecture/README.md b/Workloads-Specific/DataWarehouse/Medallion_Architecture/README.md new file mode 100644 index 0000000..beeacd3 --- /dev/null +++ b/Workloads-Specific/DataWarehouse/Medallion_Architecture/README.md @@ -0,0 +1,303 @@ +# Demostration: Medallion Architecture Overview + +Costa Rica + +[![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) +[brown9804](https://github.com/brown9804) + +Last updated: 2025-02-21 + +------------------------------------------ + +
+List of References (Click to expand) + +- [Fabric Draw.io icons](https://github.com/marclelijveld/Fabric-Icons/tree/main) +- [TechExcel: Microsoft Fabric with Azure Databricks for Data Analytics (lvl 300 / CSU) lab](https://github.com/microsoft/TechExcel-Fabric-with-Databricks-for-Data-Analytics/blob/main/index.md) - repo +- [TechExcel: Microsoft Fabric with Azure Databricks for Data Analytics (lvl 300 / CSU) lab](https://microsoft.github.io/TechExcel-Fabric-with-Databricks-for-Data-Analytics/) - guide + +
+ +
+Table of Contents (Click to expand) + +- [Overview](#overview) +- [Demo](#demo) + - [Step 1: Set Up Your Environment](#step-1-set-up-your-environment) + - [Step 2: Ingest Data into the Bronze Layer](#step-2-ingest-data-into-the-bronze-layer) + - [Step 3: Transform Data in the Silver Layer](#step-3-transform-data-in-the-silver-layer) + - [Step 4: Curate Data in the Gold Layer](#step-4-curate-data-in-the-gold-layer) + - [Step 5: Set Up Pipelines for Orchestration](#step-5-set-up-pipelines-for-orchestration) + - [Step 6: Enable Data Access for Reporting](#step-6-enable-data-access-for-reporting) + + +
+ +## Overview + +> The medallion architecture is a data design pattern used in data lakes and lakehouses to organize data at different levels of refinement. It's a best practice for managing the data lifecycle and ensuring data quality + +| Layer | Description | +|-------------|-------------| +| **Bronze Layer** | This layer contains the raw data ingested from various sources. The data is typically stored in its original format and is append-only. The Bronze layer acts as the landing zone for all incoming data. | +| **Silver Layer** | This layer contains cleaned and transformed data. The data in the Silver layer is often enriched with additional information and is structured in a way that makes it easier to query and analyze. This layer is also where data quality checks and transformations are applied. | +| **Gold Layer** | This layer contains curated and aggregated data that is ready for consumption by business intelligence and reporting tools. The data in the Gold layer is highly structured and optimized for performance. | + +> [!NOTE] +> This demo will be created step by step. Please note that Microsoft Fabric already assists by setting up the medallion flow for you. + +> [!IMPORTANT] +> If you are not able to see the `auto-create report` option neither `copilot` be aware you need to enable AI features in your tenant, click [here](https://github.com/brown9804/MicrosoftCloudEssentialsHub/blob/main/0_Azure/2_AzureAnalytics/0_Fabric/demos/6_PBiCopilot.md#tenant-configuration) to see how. + + +image + +image + +## Demo + +Implementing a medallion architecture provides several benefits: +- **Data Quality**: By organizing data into layers, you can apply quality checks and transformations in a structured manner, ensuring that the data in the Gold layer is reliable and ready for analysis. +- **Scalability**: The architecture allows you to scale your data processing pipelines independently for each layer, providing flexibility and efficiency. +- **Performance**: The Gold layer is optimized for performance, which means that your reporting and analytics queries will run faster. +- **Simplicity**: It simplifies the data pipeline by breaking it down into smaller, manageable steps, each with a clear purpose. +- **Auditability**: It provides a clear data lineage, making it easier to trace the origin of data and understand the transformations applied at each stage. + + image + +### Step 1: Set Up Your Environment + +> [!NOTE] +> If you need more visual help, check out the video that walks you through the steps. Below is a detailed step-by-step guide. + +1. **Create a Fabric Workspace**: This will be your central hub for all activities. + - Click on `Create a resource` and create your Fabric Capacity if you haven't done so already. + + image + + - Go to the [Fabric portal](https://app.fabric.microsoft.com/). + - Click on `Workspaces`, then select either your existing workspace or create a new one by clicking `New Workspace`: + - Provide a name and other required details, then create the workspace. + + + image + + - Now, assign the Fabric Capacity to your workspace by clicking on `Workspace settings` and selecting the fabric capacity under the license. + + image + +https://github.com/user-attachments/assets/c524741c-be91-4fe4-82bc-c841fae8c6c9 + +2. **Create Lakehouses**: Set up three lakehouses for the Bronze, Silver, and Gold layers. + + - In your Fabric workspace, create three lakehouses named `raw_Bronze`, `cleansed_Silver`, and `curated_Gold`. + + + + image + + image + +https://github.com/user-attachments/assets/fdb64dd2-a6ec-4da0-a385-e55f875c8f8e + +### Step 2: Ingest Data into the Bronze Layer +1. **Identify Data Sources**: + - Determine the sources from which you'll ingest data. + - List all the data sources such as databases, APIs, file systems, etc. + + > Let's suppose you have your data locally as csv, you can upload your data to the raw layer. Click [to access sample files in case you don't have any data at the moment](./sample_files) + + image + + > You need to load the data as tables, either to a new table or to a existing one: + + | Load information as table | To a new one or existing one | + | --- | --- | + | image | image | + +https://github.com/user-attachments/assets/56308a58-cf72-4f0f-bf3e-e9e1669fa0df + +> Suppose you need to extract data from your `sql database` + +image + +> [!NOTE] +> In case you don't have any data at the moment, please follow this video to create a sample: + +```sql +CREATE TABLE dbo.Employees ( + EmployeeID INT PRIMARY KEY, + FirstName VARCHAR(50), + LastName VARCHAR(50), + BirthDate DATE, + HireDate DATE, + JobTitle VARCHAR(50), + Salary DECIMAL(10, 4) +); + +INSERT INTO dbo.Employees (EmployeeID, FirstName, LastName, BirthDate, HireDate, JobTitle, Salary) +VALUES +(1, 'John', 'Doe', '1985-11-15', '2010-03-10', 'Software Engineer', 75000.0000), +(2, 'Jane', 'Smith', '1990-05-22', '2012-07-18', 'Project Manager', 85000.0000), +(3, 'Emily', 'Jones', '1988-04-17', '2014-06-25', 'Data Analyst', 65000.0000), +(4, 'Michael', 'Brown', '1982-06-21', '2008-09-15', 'HR Specialist', 55000.0000), +(5, 'Sarah', 'Davis', '1995-09-30', '2020-11-20', 'Marketing Specialist', 60000.0000); +``` + +https://github.com/user-attachments/assets/357184bf-cc49-4311-84d4-6369514b3366 + +> [!IMPORTANT] +> Besides using Data pipelines to bring your SQL information, you can also leverage Microsoft Fabric's mirrored SQL capability. This feature allows you to create a mirrored copy of your SQL database, improving data availability, reliability, and disaster recovery. By maintaining a synchronized copy of your database in a different location, it ensures that your data is always accessible, even in the event of a failure or outage. + +> [!NOTE] +> `The mirroring process can involve both inbound and outbound connections`. Inbound connections refer to data coming into Azure from external sources, such as an on-premises SQL database being mirrored in Azure. Outbound connections, on the other hand, refer to data going out from Azure to external destinations, like mirroring an Azure SQL database to Microsoft Fabric. This setup allows for seamless data flow and integration across different platforms, ensuring data consistency and availability.

+> `For example, both Azure SQL Database and Microsoft Fabric are Microsoft products. However, the concept of outbound connections still applies because the data is moving from one service (Azure SQL Database) to another service (Microsoft Fabric), even though they are both within the Microsoft ecosystem. This movement of data is considered outbound because it is leaving the Azure SQL Database environment and entering the Microsoft Fabric environment`.

+> Under the Zero Trust Architecture, both inbound and outbound connections are treated with the same level of scrutiny and security protocols. This means that whether the connection is inbound or outbound, it is subject to strict verification processes to ensure it is safe and authorized. Key principles of Zero Trust include verification of every access request, least privilege access, continuous monitoring, and micro-segmentation. By applying these principles, Azure ensures that both inbound and outbound connections are secure, reducing the risk of unauthorized access and data breaches. + + +https://github.com/user-attachments/assets/2a64762a-f120-4448-b0fb-7a49f4d1bedb + +2. **Create Dataflows or Pipelines**: Use Data Factory to create dataflows or pipelines that ingest data into the Bronze lakehouse. + - In Data Factory, create a new pipeline. + - Add activities to the pipeline to ingest data from the identified sources. + - **Configure Data Ingestion**: Set up the data ingestion process to load data into the Bronze layer in its raw format. + - Configure the source and destination settings in the pipeline activities. + - Ensure the data is being ingested into the `raw_Bronze` lakehouse. + + image + + image + + image + + image + + image + + image + + image + + image + +### Step 3: Transform Data in the Silver Layer +1. **Create Notebooks or Dataflows**: Use Fabric's notebooks or dataflows to read data from the Bronze layer. + - In the Fabric workspace, create a new notebook. + + image + + - Connect the notebook to the `raw_Bronze` lakehouse. +2. **Data Cleaning**: Apply data cleaning steps to handle missing values, remove duplicates, and correct data types. + - Write code in the notebook to clean the data. + - Use functions like `dropna()`, `dropDuplicates()`, and `withColumn()` to clean the data. +3. **Data Enrichment**: Enrich the data with additional information if needed. + - Join the data with reference tables or lookup values. + - Add new columns with enriched information. +4. **Write to Silver Layer**: Write the cleaned and transformed data to the Silver lakehouse. + - Use the `write.format("delta").save()` method to save the data to the `cleansed_Silver` lakehouse. + + > **PySpark Code to Move Data from Bronze to Silver**: + ```python + # Read data from the Bronze layer + bronze_df = spark.read.format("delta").load("abfss://@.dfs.core.windows.net/.Lakehouse/Tables/") + + # Perform transformations (if any) + silver_df = bronze_df # Assuming no transformations for simplicity + + # Write data to the Silver layer + silver_df.write.mode("overwrite").option("mergeSchema", "true").format("delta").save("abfss://@.dfs.core.windows.net/.Lakehouse/Tables/") + ``` + + image + + > If you want see more, click [here](./src/0_notebook_bronze_to_silver.ipynb) to see a sample of the notebook. + + image + +### Step 4: Curate Data in the Gold Layer +1. **Read Data from Silver Layer**: Use notebooks or dataflows to read data from the Silver lakehouse. + - In a new notebook, connect to the `cleansed_Silver` lakehouse. +2. **Apply Business Logic**: Apply any additional business logic or aggregations. + - Write code to perform aggregations and calculations. + - Use functions like `groupBy()`, `agg()`, and `sum()` to aggregate the data. +3. **Write to Gold Layer**: Write the curated data to the Gold lakehouse. + - Use the `write.format("delta").save()` method to save the data to the `curated_Gold` lakehouse. + + > Before any changes: + + image + + > Applying some transformations: If you want see more, click [here](./src/1_notebook_silver_to_gold.ipynb) to see a sample of the notebook. + + > **PySpark Code to Move Data from Silver to Gold**: + ```python + # Read data from the Silver layer + silver_df = spark.read.format("delta").load("abfss://@.dfs.core.windows.net/.Lakehouse/Tables/
") + + # Perform aggregations + gold_df = silver_df.groupBy("Name").agg( + sum("Count").alias("TotalCount"), + avg("price").alias("AveragePrice"), + avg("tax").alias("AverageTax") + ) + + # Write data to the Gold layer + gold_df.write.mode("overwrite").option("mergeSchema", "true").format("delta").save("abfss://@.dfs.core.windows.net/.Lakehouse/Tables/") + ``` + image + +### Step 5: Set Up Pipelines for Orchestration +1. **Create Pipelines**: Create pipelines to automate the movement of data from the Bronze layer to the Silver layer, and from the Silver layer to the Gold layer. + - In Data Factory, create a new pipeline. + - Add a copy activity to move data from the `raw_Bronze` lakehouse to the `cleansed_Silver` lakehouse. + - Add another copy activity to move data from the `cleansed_Silver` lakehouse to the `curated_Gold` lakehouse. +2. **Schedule Pipelines**: Schedule these pipelines to run at appropriate intervals. + - Set up triggers in Data Factory to run the pipelines on a schedule that aligns with your data freshness requirements. + - Consider the frequency of data updates and the latency that is acceptable for your use case. + +### Step 6: Enable Data Access for Reporting +1. **Configure SQL Analytics Endpoint**: + - Validate if you have the SQL Analytics Endpoint configured, you can review it from workspace view, primarly is required for Gold layer to be accessible to your reporting tools. + + image + +2. Create a semantic models with the required tables for the report. + + - Go to your gold layer. + + image + + - Create the semantic model: + + image + + image + +3. **Create Power BI Reports**: Use Power BI in Direct Lake Mode to create reports and dashboards from the data in the Gold layer. + - Connect to the `curated_Gold` lakehouse using the SQL analytics endpoint. + - Build reports and dashboards that provide insights into the data. + + image + + image + + > Create new report: + + image + + > If you click `auto-create report` Copilot will create a draft report for you: + + image + + > You can edit your report: + + image + + > Also, you can levarage AI capabilities with Copilot: + + image + +
+

Total Visitors

+ Visitor Count +
diff --git a/Workloads-Specific/DataWarehouse/Medallion_Architecture/docs/FabricMedallionArch.drawio b/Workloads-Specific/DataWarehouse/Medallion_Architecture/docs/FabricMedallionArch.drawio new file mode 100644 index 0000000..a637f69 --- /dev/null +++ b/Workloads-Specific/DataWarehouse/Medallion_Architecture/docs/FabricMedallionArch.drawio @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Workloads-Specific/DataWarehouse/Medallion_Architecture/docs/README.md b/Workloads-Specific/DataWarehouse/Medallion_Architecture/docs/README.md new file mode 100644 index 0000000..2bb6504 --- /dev/null +++ b/Workloads-Specific/DataWarehouse/Medallion_Architecture/docs/README.md @@ -0,0 +1,14 @@ +# Architecture Diagram + +Costa Rica + +[![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) +[brown9804](https://github.com/brown9804) + +Last updated: 2025-01-29 + +------------------------------------------ + +> You can use the [drawio template](./FabricMedallionArch.drawio) as guidance to create your solution diagram. + +image diff --git a/Workloads-Specific/DataWarehouse/Medallion_Architecture/sample_files/2020orders.csv b/Workloads-Specific/DataWarehouse/Medallion_Architecture/sample_files/2020orders.csv new file mode 100644 index 0000000..681e329 --- /dev/null +++ b/Workloads-Specific/DataWarehouse/Medallion_Architecture/sample_files/2020orders.csv @@ -0,0 +1,2734 @@ +ID,Count,Date,Name,Style,price,tax +SO45347,1,1/1/2020,Clarence Raji,"Road-650 Black, 52",699.0982,55.9279 +SO45345,1,1/1/2020,Bonnie Yuan,"Road-150 Red, 52",3578.27,286.2616 +SO45348,1,1/1/2020,Leah Guo,"Road-150 Red, 44",3578.27,286.2616 +SO45349,1,1/1/2020,Candice Sun,"Road-150 Red, 48",3578.27,286.2616 +SO45350,1,1/1/2020,Ruben Garcia,"Road-150 Red, 44",3578.27,286.2616 +SO45346,1,1/1/2020,Dylan Harris,"Road-150 Red, 48",3578.27,286.2616 +SO45353,1,1/2/2020,Jack Zimmerman,"Road-150 Red, 62",3578.27,286.2616 +SO45355,1,1/2/2020,Maurice Sharma,"Road-150 Red, 48",3578.27,286.2616 +SO45354,1,1/2/2020,Armando Dominguez,"Road-650 Black, 48",699.0982,55.9279 +SO45356,1,1/2/2020,Douglas Suri,"Road-150 Red, 52",3578.27,286.2616 +SO45352,1,1/2/2020,Daisy Munoz,"Road-150 Red, 52",3578.27,286.2616 +SO45351,1,1/2/2020,Seth Jackson,"Road-150 Red, 52",3578.27,286.2616 +SO45359,1,1/3/2020,Marshall Chavez,"Road-150 Red, 52",3578.27,286.2616 +SO45363,1,1/3/2020,Patricia Saunders,"Road-150 Red, 48",3578.27,286.2616 +SO45362,1,1/3/2020,Kristopher Fernandez,"Road-150 Red, 52",3578.27,286.2616 +SO45361,1,1/3/2020,Caitlin Richardson,"Road-150 Red, 48",3578.27,286.2616 +SO45358,1,1/3/2020,Alexandra Thomas,"Road-150 Red, 48",3578.27,286.2616 +SO45360,1,1/3/2020,Jonathan Gonzales,"Road-150 Red, 52",3578.27,286.2616 +SO45357,1,1/3/2020,Alfredo Dominguez,"Mountain-100 Black, 48",3374.99,269.9992 +SO45367,1,1/4/2020,Willie Liu,"Road-650 Red, 48",699.0982,55.9279 +SO45369,1,1/4/2020,Kathleen Navarro,"Road-150 Red, 56",3578.27,286.2616 +SO45370,1,1/4/2020,Shawn Shen,"Road-150 Red, 48",3578.27,286.2616 +SO45366,1,1/4/2020,Frank Gomez,"Road-650 Red, 52",699.0982,55.9279 +SO45365,1,1/4/2020,Jacob Wilson,"Road-150 Red, 52",3578.27,286.2616 +SO45368,1,1/4/2020,Trinity Cook,"Road-650 Red, 48",699.0982,55.9279 +SO45364,1,1/4/2020,Claudia Li,"Road-150 Red, 44",3578.27,286.2616 +SO45371,1,1/5/2020,Jaime Alonso,"Road-150 Red, 62",3578.27,286.2616 +SO45376,1,1/5/2020,Edgar Mehta,"Mountain-100 Silver, 38",3399.99,271.9992 +SO45375,1,1/5/2020,Allen Fernandez,"Road-150 Red, 52",3578.27,286.2616 +SO45374,1,1/5/2020,Jordan Henderson,"Road-150 Red, 48",3578.27,286.2616 +SO45372,1,1/5/2020,Jarred Gill,"Mountain-100 Black, 38",3374.99,269.9992 +SO45373,1,1/5/2020,Richard Garcia,"Mountain-100 Black, 42",3374.99,269.9992 +SO45379,1,1/6/2020,Savannah Travers,"Road-150 Red, 52",3578.27,286.2616 +SO45378,1,1/6/2020,Katherine James,"Road-150 Red, 62",3578.27,286.2616 +SO45384,1,1/6/2020,Chase Morris,"Road-650 Black, 44",699.0982,55.9279 +SO45386,1,1/6/2020,Troy Subram,"Road-150 Red, 48",3578.27,286.2616 +SO45381,1,1/6/2020,Jordan Long,"Mountain-100 Silver, 38",3399.99,271.9992 +SO45380,1,1/6/2020,Clarence Jai,"Road-650 Red, 62",699.0982,55.9279 +SO45382,1,1/6/2020,Julia Wright,"Road-150 Red, 52",3578.27,286.2616 +SO45377,1,1/6/2020,Dominique Lopez,"Road-150 Red, 52",3578.27,286.2616 +SO45383,1,1/6/2020,Kevin Edwards,"Road-650 Black, 58",699.0982,55.9279 +SO45385,1,1/6/2020,Maria Rogers,"Road-650 Black, 60",699.0982,55.9279 +SO45389,1,1/7/2020,Trevor Bryant,"Road-150 Red, 62",3578.27,286.2616 +SO45387,1,1/7/2020,Tiffany Li,"Road-150 Red, 62",3578.27,286.2616 +SO45392,1,1/7/2020,Randall Gomez,"Mountain-100 Silver, 38",3399.99,271.9992 +SO45391,1,1/7/2020,Raymond Raman,"Road-150 Red, 52",3578.27,286.2616 +SO45390,1,1/7/2020,Randall Martin,"Road-150 Red, 62",3578.27,286.2616 +SO45388,1,1/7/2020,Isabel Bryant,"Mountain-100 Black, 44",3374.99,269.9992 +SO45395,1,1/8/2020,Lydia Gonzalez,"Road-150 Red, 52",3578.27,286.2616 +SO45396,1,1/8/2020,Suzanne Liu,"Road-150 Red, 48",3578.27,286.2616 +SO45394,1,1/8/2020,Jaclyn Andersen,"Mountain-100 Black, 38",3374.99,269.9992 +SO45393,1,1/8/2020,Michele Lal,"Road-150 Red, 48",3578.27,286.2616 +SO45398,1,1/9/2020,Lisa Zhu,"Road-150 Red, 48",3578.27,286.2616 +SO45397,1,1/9/2020,Harold McDonald,"Road-150 Red, 52",3578.27,286.2616 +SO45399,1,1/9/2020,Kaitlyn Powell,"Road-150 Red, 44",3578.27,286.2616 +SO45409,1,1/10/2020,Marvin Sanz,"Road-150 Red, 48",3578.27,286.2616 +SO45405,1,1/10/2020,Lucas Lewis,"Road-150 Red, 48",3578.27,286.2616 +SO45403,1,1/10/2020,Caroline Washington,"Road-150 Red, 56",3578.27,286.2616 +SO45401,1,1/10/2020,Julio Suarez,"Road-150 Red, 62",3578.27,286.2616 +SO45400,1,1/10/2020,Brett Garcia,"Road-150 Red, 52",3578.27,286.2616 +SO45402,1,1/10/2020,Megan Stewart,"Mountain-100 Silver, 38",3399.99,271.9992 +SO45404,1,1/10/2020,Natalie Adams,"Road-150 Red, 62",3578.27,286.2616 +SO45407,1,1/10/2020,Thomas Adams,"Road-150 Red, 56",3578.27,286.2616 +SO45408,1,1/10/2020,Victoria Diaz,"Road-150 Red, 56",3578.27,286.2616 +SO45406,1,1/10/2020,Hunter Kumar,"Mountain-100 Black, 48",3374.99,269.9992 +SO45417,1,1/11/2020,Cole Richardson,"Road-150 Red, 62",3578.27,286.2616 +SO45415,1,1/11/2020,Morgan Hall,"Road-150 Red, 48",3578.27,286.2616 +SO45411,1,1/11/2020,Kayla Rodriguez,"Road-150 Red, 52",3578.27,286.2616 +SO45416,1,1/11/2020,Jessica Perry,"Road-150 Red, 62",3578.27,286.2616 +SO45413,1,1/11/2020,Kristi Perez,"Road-150 Red, 48",3578.27,286.2616 +SO45410,1,1/11/2020,Donald Srini,"Road-150 Red, 62",3578.27,286.2616 +SO45412,1,1/11/2020,Chloe Sanders,"Road-150 Red, 62",3578.27,286.2616 +SO45420,1,1/11/2020,Orlando Serrano,"Road-150 Red, 52",3578.27,286.2616 +SO45419,1,1/11/2020,Alejandro Liu,"Road-150 Red, 56",3578.27,286.2616 +SO45421,1,1/11/2020,Mackenzie Hill,"Road-150 Red, 52",3578.27,286.2616 +SO45418,1,1/11/2020,Kristopher Gonzalez,"Road-150 Red, 44",3578.27,286.2616 +SO45414,1,1/11/2020,Kelli Kumar,"Road-650 Red, 52",699.0982,55.9279 +SO45423,1,1/12/2020,Beth Gill,"Mountain-100 Black, 38",3374.99,269.9992 +SO45424,1,1/12/2020,Alexa Rivera,"Road-150 Red, 44",3578.27,286.2616 +SO45422,1,1/12/2020,Jared Moyer,"Road-150 Red, 62",3578.27,286.2616 +SO45431,1,1/13/2020,James Miller,"Road-150 Red, 44",3578.27,286.2616 +SO45430,1,1/13/2020,Natalie Roberts,"Road-150 Red, 48",3578.27,286.2616 +SO45429,1,1/13/2020,Justin Griffin,"Road-150 Red, 62",3578.27,286.2616 +SO45427,1,1/13/2020,Ivan Suri,"Mountain-100 Black, 42",3374.99,269.9992 +SO45426,1,1/13/2020,Kari Smith,"Road-150 Red, 48",3578.27,286.2616 +SO45425,1,1/13/2020,Jaime Suarez,"Road-150 Red, 62",3578.27,286.2616 +SO45428,1,1/13/2020,Ian Richardson,"Mountain-100 Silver, 44",3399.99,271.9992 +SO45434,1,1/14/2020,Nicholas Thompson,"Road-150 Red, 44",3578.27,286.2616 +SO45433,1,1/14/2020,Bradley Nara,"Road-150 Red, 62",3578.27,286.2616 +SO45432,1,1/14/2020,Pamela Subram,"Road-150 Red, 48",3578.27,286.2616 +SO45439,1,1/14/2020,Jaime Xie,"Road-650 Red, 44",699.0982,55.9279 +SO45435,1,1/14/2020,Jim Rodman,"Road-650 Black, 62",699.0982,55.9279 +SO45438,1,1/14/2020,Paige Howard,"Road-150 Red, 62",3578.27,286.2616 +SO45436,1,1/14/2020,Joshua Taylor,"Road-150 Red, 48",3578.27,286.2616 +SO45437,1,1/14/2020,Lucas Blue,"Road-150 Red, 48",3578.27,286.2616 +SO45442,1,1/15/2020,Justin Bryant,"Road-150 Red, 56",3578.27,286.2616 +SO45443,1,1/15/2020,Julia Thompson,"Road-150 Red, 52",3578.27,286.2616 +SO45444,1,1/15/2020,Claudia Ye,"Road-150 Red, 62",3578.27,286.2616 +SO45445,1,1/15/2020,Stacy Dominguez,"Road-150 Red, 62",3578.27,286.2616 +SO45440,1,1/15/2020,Daisy Romero,"Road-150 Red, 48",3578.27,286.2616 +SO45441,1,1/15/2020,Jasmine Torres,"Road-150 Red, 48",3578.27,286.2616 +SO45447,1,1/16/2020,Gloria Ortega,"Road-150 Red, 52",3578.27,286.2616 +SO45448,1,1/16/2020,Terrance Martinez,"Road-650 Red, 62",699.0982,55.9279 +SO45446,1,1/16/2020,Jenna Parker,"Mountain-100 Silver, 42",3399.99,271.9992 +SO45451,1,1/17/2020,Hailey Turner,"Road-150 Red, 44",3578.27,286.2616 +SO45450,1,1/17/2020,Carson Jenkins,"Road-150 Red, 48",3578.27,286.2616 +SO45452,1,1/17/2020,Cedric Cai,"Road-150 Red, 56",3578.27,286.2616 +SO45449,1,1/17/2020,Krista Martin,"Road-150 Red, 62",3578.27,286.2616 +SO45453,1,1/18/2020,Donna Xie,"Road-150 Red, 44",3578.27,286.2616 +SO45454,1,1/18/2020,Megan Flores,"Road-150 Red, 48",3578.27,286.2616 +SO45456,1,1/19/2020,Elijah Powell,"Road-150 Red, 48",3578.27,286.2616 +SO45460,1,1/19/2020,Julio Navarro,"Road-650 Black, 60",699.0982,55.9279 +SO45459,1,1/19/2020,Brad Shan,"Road-150 Red, 62",3578.27,286.2616 +SO45458,1,1/19/2020,Alvin Jai,"Road-150 Red, 44",3578.27,286.2616 +SO45455,1,1/19/2020,Ebony Garcia,"Road-150 Red, 62",3578.27,286.2616 +SO45457,1,1/19/2020,Christian Butler,"Road-150 Red, 52",3578.27,286.2616 +SO45461,1,1/20/2020,Alexis Moore,"Road-150 Red, 44",3578.27,286.2616 +SO45462,1,1/20/2020,Hannah Foster,"Road-150 Red, 62",3578.27,286.2616 +SO45463,1,1/20/2020,Jonathan Hill,"Road-150 Red, 48",3578.27,286.2616 +SO45464,1,1/20/2020,Alvin Sharma,"Road-150 Red, 56",3578.27,286.2616 +SO45465,1,1/20/2020,Carlos Morgan,"Road-650 Black, 52",699.0982,55.9279 +SO45466,1,1/21/2020,Meagan Prasad,"Road-150 Red, 44",3578.27,286.2616 +SO45476,1,1/22/2020,Wyatt Williams,"Road-150 Red, 56",3578.27,286.2616 +SO45475,1,1/22/2020,Alfredo Suarez,"Road-150 Red, 52",3578.27,286.2616 +SO45474,1,1/22/2020,Carl Raji,"Road-150 Red, 62",3578.27,286.2616 +SO45469,1,1/22/2020,Ethan Thompson,"Mountain-100 Black, 44",3374.99,269.9992 +SO45473,1,1/22/2020,Tara Xu,"Road-150 Red, 62",3578.27,286.2616 +SO45472,1,1/22/2020,Meredith Martinez,"Road-150 Red, 52",3578.27,286.2616 +SO45468,1,1/22/2020,Kyle Bryant,"Road-150 Red, 44",3578.27,286.2616 +SO45467,1,1/22/2020,Dustin Deng,"Mountain-100 Silver, 42",3399.99,271.9992 +SO45471,1,1/22/2020,Erin Cook,"Road-150 Red, 52",3578.27,286.2616 +SO45470,1,1/22/2020,Cameron Henderson,"Road-150 Red, 48",3578.27,286.2616 +SO45478,1,1/23/2020,Isaiah Edwards,"Road-150 Red, 52",3578.27,286.2616 +SO45477,1,1/23/2020,Brittney Hu,"Road-150 Red, 52",3578.27,286.2616 +SO45479,1,1/23/2020,Sheena Deng,"Road-150 Red, 52",3578.27,286.2616 +SO45481,1,1/23/2020,Robin Moreno,"Road-150 Red, 52",3578.27,286.2616 +SO45480,1,1/23/2020,Lawrence Gutierrez,"Road-150 Red, 52",3578.27,286.2616 +SO45488,1,1/24/2020,Martin Perez,"Road-150 Red, 44",3578.27,286.2616 +SO45487,1,1/24/2020,Shawna Andersen,"Road-150 Red, 52",3578.27,286.2616 +SO45489,1,1/24/2020,Stanley Madan,"Road-150 Red, 62",3578.27,286.2616 +SO45484,1,1/24/2020,Juan James,"Road-150 Red, 52",3578.27,286.2616 +SO45490,1,1/24/2020,Eric Foster,"Road-150 Red, 52",3578.27,286.2616 +SO45483,1,1/24/2020,Adriana Chandra,"Road-150 Red, 56",3578.27,286.2616 +SO45486,1,1/24/2020,Dominic Srini,"Road-650 Red, 62",699.0982,55.9279 +SO45485,1,1/24/2020,Jacqueline Powell,"Road-150 Red, 48",3578.27,286.2616 +SO45482,1,1/24/2020,Brandy Sanchez,"Road-150 Red, 62",3578.27,286.2616 +SO45493,1,1/25/2020,Seth Brown,"Road-650 Red, 58",699.0982,55.9279 +SO45495,1,1/25/2020,Krystal Gao,"Road-650 Black, 52",699.0982,55.9279 +SO45494,1,1/25/2020,Kari Martinez,"Road-150 Red, 62",3578.27,286.2616 +SO45492,1,1/25/2020,Jared Kelly,"Road-650 Red, 52",699.0982,55.9279 +SO45491,1,1/25/2020,Justin Brown,"Road-150 Red, 44",3578.27,286.2616 +SO45502,1,1/26/2020,Timothy Young,"Road-150 Red, 56",3578.27,286.2616 +SO45497,1,1/26/2020,Ian Wilson,"Road-150 Red, 44",3578.27,286.2616 +SO45498,1,1/26/2020,Kayla Flores,"Road-150 Red, 48",3578.27,286.2616 +SO45496,1,1/26/2020,Rachel Cox,"Road-150 Red, 56",3578.27,286.2616 +SO45499,1,1/26/2020,Bailey Hernandez,"Road-150 Red, 56",3578.27,286.2616 +SO45501,1,1/26/2020,Heidi Chandra,"Mountain-100 Black, 44",3374.99,269.9992 +SO45505,1,1/26/2020,Carla Rana,"Road-150 Red, 52",3578.27,286.2616 +SO45506,1,1/26/2020,Franklin Sun,"Road-150 Red, 44",3578.27,286.2616 +SO45507,1,1/26/2020,Stefanie Rana,"Road-150 Red, 56",3578.27,286.2616 +SO45503,1,1/26/2020,Isabella Bryant,"Road-150 Red, 56",3578.27,286.2616 +SO45504,1,1/26/2020,Jerry Ferrier,"Road-650 Black, 48",699.0982,55.9279 +SO45500,1,1/26/2020,Lawrence Blanco,"Road-150 Red, 48",3578.27,286.2616 +SO45508,1,1/27/2020,Roberto Sanz,"Road-150 Red, 62",3578.27,286.2616 +SO45509,1,1/27/2020,Shaun Sharma,"Road-150 Red, 62",3578.27,286.2616 +SO45510,1,1/27/2020,Lauren Washington,"Road-150 Red, 62",3578.27,286.2616 +SO45515,1,1/28/2020,Bridget She,"Road-150 Red, 62",3578.27,286.2616 +SO45511,1,1/28/2020,Steve Wagner,"Road-150 Red, 44",3578.27,286.2616 +SO45512,1,1/28/2020,Luis Wang,"Road-150 Red, 48",3578.27,286.2616 +SO45513,1,1/28/2020,Faith Murphy,"Mountain-100 Black, 38",3374.99,269.9992 +SO45514,1,1/28/2020,Thomas Young,"Road-150 Red, 56",3578.27,286.2616 +SO45582,1,1/29/2020,Lucas Murphy,"Road-150 Red, 48",3578.27,286.2616 +SO45581,1,1/29/2020,Trinity Richardson,"Road-150 Red, 52",3578.27,286.2616 +SO45583,1,1/29/2020,Kyle Foster,"Road-150 Red, 44",3578.27,286.2616 +SO45585,1,1/29/2020,Isaiah Ramirez,"Mountain-100 Black, 48",3374.99,269.9992 +SO45580,1,1/29/2020,Cassie Andersen,"Road-150 Red, 62",3578.27,286.2616 +SO45584,1,1/29/2020,Ronald Madan,"Road-650 Black, 62",699.0982,55.9279 +SO45591,1,1/30/2020,Sebastian Torres,"Road-650 Red, 44",699.0982,55.9279 +SO45590,1,1/30/2020,Roger Lu,"Road-150 Red, 44",3578.27,286.2616 +SO45589,1,1/30/2020,Christy Liu,"Road-150 Red, 56",3578.27,286.2616 +SO45592,1,1/30/2020,Orlando Ashe,"Mountain-100 Silver, 42",3399.99,271.9992 +SO45588,1,1/30/2020,Jenny Rai,"Road-150 Red, 52",3578.27,286.2616 +SO45587,1,1/30/2020,Nina Yuan,"Road-150 Red, 62",3578.27,286.2616 +SO45586,1,1/30/2020,Joel Prasad,"Road-150 Red, 44",3578.27,286.2616 +SO45595,1,1/31/2020,Shannon Huang,"Road-150 Red, 56",3578.27,286.2616 +SO45594,1,1/31/2020,Christian Thomas,"Road-150 Red, 48",3578.27,286.2616 +SO45601,1,1/31/2020,Orlando Carlson,"Mountain-100 Black, 38",3374.99,269.9992 +SO45593,1,1/31/2020,Nelson Ortega,"Road-150 Red, 62",3578.27,286.2616 +SO45597,1,1/31/2020,Jenna Scott,"Road-650 Red, 48",699.0982,55.9279 +SO45598,1,1/31/2020,Elijah Yang,"Road-650 Black, 48",699.0982,55.9279 +SO45600,1,1/31/2020,Holly Martinez,"Road-150 Red, 52",3578.27,286.2616 +SO45599,1,1/31/2020,Danny Ortega,"Road-150 Red, 48",3578.27,286.2616 +SO45596,1,1/31/2020,Jessie Gao,"Road-650 Black, 58",699.0982,55.9279 +SO45607,1,2/1/2020,Louis Nath,"Road-650 Red, 52",699.0982,55.9279 +SO45606,1,2/1/2020,Devon Deng,"Road-150 Red, 48",3578.27,286.2616 +SO45609,1,2/1/2020,Max Ferrier,"Road-150 Red, 44",3578.27,286.2616 +SO45608,1,2/1/2020,Frank Carlson,"Mountain-100 Black, 42",3374.99,269.9992 +SO45603,1,2/1/2020,Haley Richardson,"Road-150 Red, 48",3578.27,286.2616 +SO45604,1,2/1/2020,Victoria Russell,"Road-150 Red, 56",3578.27,286.2616 +SO45605,1,2/1/2020,Destiny Rogers,"Road-150 Red, 44",3578.27,286.2616 +SO45602,1,2/1/2020,Tamara Zhu,"Road-150 Red, 48",3578.27,286.2616 +SO45611,1,2/2/2020,Devin Nelson,"Road-150 Red, 62",3578.27,286.2616 +SO45610,1,2/2/2020,Julia Coleman,"Road-150 Red, 62",3578.27,286.2616 +SO45612,1,2/2/2020,Crystal Gao,"Road-150 Red, 48",3578.27,286.2616 +SO45616,1,2/3/2020,Abby Arthur,"Road-150 Red, 56",3578.27,286.2616 +SO45613,1,2/3/2020,Christian Hughes,"Road-150 Red, 56",3578.27,286.2616 +SO45621,1,2/3/2020,Clayton Nara,"Mountain-100 Silver, 44",3399.99,271.9992 +SO45618,1,2/3/2020,Dawn Lal,"Road-150 Red, 44",3578.27,286.2616 +SO45620,1,2/3/2020,Roy Moreno,"Road-150 Red, 56",3578.27,286.2616 +SO45619,1,2/3/2020,Alex Hill,"Road-150 Red, 44",3578.27,286.2616 +SO45615,1,2/3/2020,Gabriel Kumar,"Road-650 Black, 52",699.0982,55.9279 +SO45617,1,2/3/2020,Corey Kumar,"Road-150 Red, 44",3578.27,286.2616 +SO45614,1,2/3/2020,Isaac Brooks,"Road-150 Red, 48",3578.27,286.2616 +SO45627,1,2/4/2020,Logan Clark,"Road-650 Red, 62",699.0982,55.9279 +SO45628,1,2/4/2020,Casey Navarro,"Road-150 Red, 56",3578.27,286.2616 +SO45630,1,2/4/2020,Brenda Perez,"Mountain-100 Black, 48",3374.99,269.9992 +SO45629,1,2/4/2020,Julio Ortega,"Mountain-100 Silver, 48",3399.99,271.9992 +SO45625,1,2/4/2020,Hunter Rodriguez,"Road-150 Red, 56",3578.27,286.2616 +SO45624,1,2/4/2020,Jenna Wright,"Road-150 Red, 52",3578.27,286.2616 +SO45626,1,2/4/2020,Victoria Stewart,"Road-150 Red, 62",3578.27,286.2616 +SO45623,1,2/4/2020,Jessica Powell,"Road-150 Red, 44",3578.27,286.2616 +SO45622,1,2/4/2020,Tamara Tang,"Mountain-100 Silver, 38",3399.99,271.9992 +SO45633,1,2/5/2020,Daisuke Yanagishima,"Mountain-100 Black, 48",3374.99,269.9992 +SO45632,1,2/5/2020,Bonnie Xie,"Road-150 Red, 56",3578.27,286.2616 +SO45631,1,2/5/2020,Clarence Anand,"Mountain-100 Black, 44",3374.99,269.9992 +SO45634,1,2/5/2020,Edwin Lin,"Road-150 Red, 56",3578.27,286.2616 +SO45639,1,2/6/2020,Derek Shan,"Road-150 Red, 44",3578.27,286.2616 +SO45640,1,2/6/2020,Gloria Alonso,"Road-150 Red, 44",3578.27,286.2616 +SO45635,1,2/6/2020,Lucas Sanchez,"Road-150 Red, 52",3578.27,286.2616 +SO45636,1,2/6/2020,Spencer Russell,"Road-150 Red, 44",3578.27,286.2616 +SO45637,1,2/6/2020,Ariana Cook,"Road-150 Red, 56",3578.27,286.2616 +SO45638,1,2/6/2020,Courtney Nelson,"Road-650 Red, 62",699.0982,55.9279 +SO45642,1,2/7/2020,Angela Perry,"Road-150 Red, 52",3578.27,286.2616 +SO45641,1,2/7/2020,Byron Ortega,"Road-150 Red, 44",3578.27,286.2616 +SO45648,1,2/8/2020,Warren Zhou,"Road-150 Red, 48",3578.27,286.2616 +SO45645,1,2/8/2020,Adrienne Torres,"Mountain-100 Black, 48",3374.99,269.9992 +SO45646,1,2/8/2020,Maria Carter,"Road-150 Red, 48",3578.27,286.2616 +SO45643,1,2/8/2020,Douglas Kapoor,"Road-150 Red, 62",3578.27,286.2616 +SO45647,1,2/8/2020,Katherine Wright,"Mountain-100 Silver, 48",3399.99,271.9992 +SO45644,1,2/8/2020,Casey She,"Mountain-100 Black, 44",3374.99,269.9992 +SO45650,1,2/9/2020,Mariah Murphy,"Road-150 Red, 48",3578.27,286.2616 +SO45649,1,2/9/2020,Jade Bailey,"Road-150 Red, 62",3578.27,286.2616 +SO45653,1,2/9/2020,Jessie Ramos,"Mountain-100 Silver, 48",3399.99,271.9992 +SO45651,1,2/9/2020,Tasha Jai,"Road-150 Red, 44",3578.27,286.2616 +SO45652,1,2/9/2020,Nathaniel Watson,"Road-650 Black, 60",699.0982,55.9279 +SO45661,1,2/10/2020,Karla Nara,"Road-650 Black, 52",699.0982,55.9279 +SO45660,1,2/10/2020,Clarence Liu,"Road-150 Red, 48",3578.27,286.2616 +SO45656,1,2/10/2020,Sean Brooks,"Road-150 Red, 52",3578.27,286.2616 +SO45655,1,2/10/2020,Jose Patterson,"Road-150 Red, 48",3578.27,286.2616 +SO45657,1,2/10/2020,Taylor Howard,"Road-150 Red, 44",3578.27,286.2616 +SO45658,1,2/10/2020,Robert Lee,"Road-150 Red, 48",3578.27,286.2616 +SO45663,1,2/10/2020,Stacy Alvarez,"Mountain-100 Silver, 48",3399.99,271.9992 +SO45662,1,2/10/2020,Gabriella Sanders,"Mountain-100 Black, 44",3374.99,269.9992 +SO45654,1,2/10/2020,Riley Long,"Mountain-100 Black, 38",3374.99,269.9992 +SO45659,1,2/10/2020,Denise Subram,"Mountain-100 Black, 42",3374.99,269.9992 +SO45665,1,2/11/2020,Arthur Washington,"Mountain-100 Silver, 44",3399.99,271.9992 +SO45664,1,2/11/2020,Jon Ye,"Road-150 Red, 48",3578.27,286.2616 +SO45666,1,2/11/2020,Ethan Garcia,"Road-650 Red, 44",699.0982,55.9279 +SO45667,1,2/11/2020,Arthur Mehta,"Road-150 Red, 56",3578.27,286.2616 +SO45673,1,2/12/2020,Amy Wu,"Road-150 Red, 48",3578.27,286.2616 +SO45674,1,2/12/2020,Lacey Hu,"Road-150 Red, 56",3578.27,286.2616 +SO45672,1,2/12/2020,Shannon Hu,"Road-650 Black, 48",699.0982,55.9279 +SO45675,1,2/12/2020,Toni Patel,"Road-650 Black, 48",699.0982,55.9279 +SO45677,1,2/12/2020,Dustin Chander,"Mountain-100 Black, 38",3374.99,269.9992 +SO45668,1,2/12/2020,Jon Luo,"Road-150 Red, 48",3578.27,286.2616 +SO45671,1,2/12/2020,Mariah Wood,"Road-150 Red, 48",3578.27,286.2616 +SO45676,1,2/12/2020,Marc Torres,"Mountain-100 Black, 42",3374.99,269.9992 +SO45669,1,2/12/2020,Joan Washington,"Road-150 Red, 56",3578.27,286.2616 +SO45670,1,2/12/2020,Aidan Ross,"Road-150 Red, 62",3578.27,286.2616 +SO45679,1,2/13/2020,Alberto Navarro,"Road-150 Red, 56",3578.27,286.2616 +SO45678,1,2/13/2020,Megan Barnes,"Road-150 Red, 52",3578.27,286.2616 +SO45680,1,2/13/2020,Haley Torres,"Road-150 Red, 62",3578.27,286.2616 +SO45681,1,2/13/2020,Gloria Munoz,"Road-150 Red, 56",3578.27,286.2616 +SO45682,1,2/13/2020,Ronnie Lu,"Road-150 Red, 48",3578.27,286.2616 +SO45690,1,2/14/2020,Erika Romero,"Road-150 Red, 62",3578.27,286.2616 +SO45689,1,2/14/2020,Ricky Gutierrez,"Road-150 Red, 48",3578.27,286.2616 +SO45685,1,2/14/2020,Adrienne Blanco,"Road-650 Red, 60",699.0982,55.9279 +SO45684,1,2/14/2020,Donald Chandra,"Mountain-100 Silver, 42",3399.99,271.9992 +SO45691,1,2/14/2020,Angela Henderson,"Mountain-100 Silver, 38",3399.99,271.9992 +SO45683,1,2/14/2020,Ian Martin,"Road-150 Red, 44",3578.27,286.2616 +SO45688,1,2/14/2020,Emma Cooper,"Road-650 Red, 58",699.0982,55.9279 +SO45687,1,2/14/2020,Elizabeth Clark,"Mountain-100 Silver, 38",3399.99,271.9992 +SO45686,1,2/14/2020,Richard Rivera,"Mountain-100 Silver, 44",3399.99,271.9992 +SO45698,1,2/15/2020,Aidan Wood,"Road-650 Red, 44",699.0982,55.9279 +SO45699,1,2/15/2020,Mary Green,"Road-650 Black, 62",699.0982,55.9279 +SO45693,1,2/15/2020,Teresa Gutierrez,"Road-150 Red, 52",3578.27,286.2616 +SO45694,1,2/15/2020,Morgan Bennett,"Road-150 Red, 48",3578.27,286.2616 +SO45692,1,2/15/2020,Victor Carlson,"Road-150 Red, 52",3578.27,286.2616 +SO45696,1,2/15/2020,Rafael Xie,"Road-150 Red, 56",3578.27,286.2616 +SO45695,1,2/15/2020,Seth Phillips,"Road-150 Red, 44",3578.27,286.2616 +SO45697,1,2/15/2020,Mya Gonzales,"Road-150 Red, 56",3578.27,286.2616 +SO45701,1,2/16/2020,Nicole Taylor,"Road-150 Red, 44",3578.27,286.2616 +SO45700,1,2/16/2020,Jonathan Phillips,"Road-150 Red, 62",3578.27,286.2616 +SO45702,1,2/16/2020,Ann Malhotra,"Road-650 Red, 58",699.0982,55.9279 +SO45703,1,2/16/2020,Darryl Liu,"Road-150 Red, 62",3578.27,286.2616 +SO45709,1,2/17/2020,Tina Smith,"Road-150 Red, 52",3578.27,286.2616 +SO45710,1,2/17/2020,Geoffrey Fernandez,"Road-150 Red, 62",3578.27,286.2616 +SO45708,1,2/17/2020,Ruben Patel,"Road-150 Red, 52",3578.27,286.2616 +SO45711,1,2/17/2020,Mariah Barnes,"Road-150 Red, 52",3578.27,286.2616 +SO45705,1,2/17/2020,Jackson Phillips,"Road-150 Red, 44",3578.27,286.2616 +SO45706,1,2/17/2020,David Diaz,"Road-150 Red, 52",3578.27,286.2616 +SO45712,1,2/17/2020,Meagan Madan,"Mountain-100 Silver, 44",3399.99,271.9992 +SO45707,1,2/17/2020,Kaylee Cook,"Mountain-100 Silver, 42",3399.99,271.9992 +SO45704,1,2/17/2020,Stacy Torres,"Road-150 Red, 48",3578.27,286.2616 +SO45713,1,2/18/2020,Colleen Cai,"Road-150 Red, 56",3578.27,286.2616 +SO45714,1,2/18/2020,Cameron Lewis,"Road-150 Red, 48",3578.27,286.2616 +SO45715,1,2/18/2020,Rosa Liang,"Road-150 Red, 62",3578.27,286.2616 +SO45716,1,2/18/2020,Tony Kumar,"Road-150 Red, 62",3578.27,286.2616 +SO45720,1,2/19/2020,Tina Gonzalez,"Road-150 Red, 52",3578.27,286.2616 +SO45719,1,2/19/2020,Elijah Diaz,"Mountain-100 Black, 44",3374.99,269.9992 +SO45721,1,2/19/2020,Candace Raman,"Mountain-100 Silver, 42",3399.99,271.9992 +SO45718,1,2/19/2020,Lauren Martinez,"Road-150 Red, 44",3578.27,286.2616 +SO45717,1,2/19/2020,Elijah Ross,"Road-150 Red, 62",3578.27,286.2616 +SO45722,1,2/19/2020,Rafael Tang,"Mountain-100 Black, 48",3374.99,269.9992 +SO45727,1,2/20/2020,Nichole She,"Mountain-100 Black, 44",3374.99,269.9992 +SO45723,1,2/20/2020,Katelyn Sanchez,"Road-150 Red, 44",3578.27,286.2616 +SO45724,1,2/20/2020,Maurice Lal,"Road-150 Red, 48",3578.27,286.2616 +SO45726,1,2/20/2020,Lance Gill,"Road-150 Red, 52",3578.27,286.2616 +SO45725,1,2/20/2020,Rosa Zhang,"Road-150 Red, 48",3578.27,286.2616 +SO45728,1,2/21/2020,Madison Hughes,"Road-150 Red, 52",3578.27,286.2616 +SO45731,1,2/21/2020,Hunter Griffin,"Road-150 Red, 62",3578.27,286.2616 +SO45734,1,2/21/2020,Haley Powell,"Road-150 Red, 56",3578.27,286.2616 +SO45733,1,2/21/2020,Ryan Smith,"Road-150 Red, 44",3578.27,286.2616 +SO45732,1,2/21/2020,Dakota Ross,"Road-150 Red, 44",3578.27,286.2616 +SO45739,1,2/21/2020,Kate Raji,"Mountain-100 Black, 38",3374.99,269.9992 +SO45738,1,2/21/2020,Byron Carlson,"Mountain-100 Silver, 44",3399.99,271.9992 +SO45736,1,2/21/2020,Phil Spencer,"Road-150 Red, 62",3578.27,286.2616 +SO45737,1,2/21/2020,Jay Lopez,"Road-150 Red, 44",3578.27,286.2616 +SO45735,1,2/21/2020,Cristina Nara,"Road-150 Red, 56",3578.27,286.2616 +SO45729,1,2/21/2020,Robin Sanz,"Road-150 Red, 52",3578.27,286.2616 +SO45730,1,2/21/2020,Phillip Sullivan,"Mountain-100 Black, 44",3374.99,269.9992 +SO45740,1,2/22/2020,Robin Carlson,"Road-150 Red, 56",3578.27,286.2616 +SO45741,1,2/22/2020,Kristen Hu,"Road-150 Red, 56",3578.27,286.2616 +SO45743,1,2/22/2020,Timothy Scott,"Road-150 Red, 52",3578.27,286.2616 +SO45742,1,2/22/2020,Andy Vazquez,"Road-150 Red, 48",3578.27,286.2616 +SO45744,1,2/22/2020,Ann Gonzalez,"Mountain-100 Black, 48",3374.99,269.9992 +SO45747,1,2/23/2020,Justin Washington,"Road-150 Red, 56",3578.27,286.2616 +SO45751,1,2/23/2020,Charles Gonzalez,"Road-650 Black, 48",699.0982,55.9279 +SO45749,1,2/23/2020,Steve Gao,"Road-150 Red, 44",3578.27,286.2616 +SO45745,1,2/23/2020,Martin Prasad,"Road-150 Red, 48",3578.27,286.2616 +SO45752,1,2/23/2020,Hector Vazquez,"Road-150 Red, 56",3578.27,286.2616 +SO45753,1,2/23/2020,Abby Sanchez,"Road-150 Red, 44",3578.27,286.2616 +SO45748,1,2/23/2020,Terry Jai,"Road-650 Black, 58",699.0982,55.9279 +SO45746,1,2/23/2020,Zachary Flores,"Road-150 Red, 48",3578.27,286.2616 +SO45750,1,2/23/2020,Nicholas Lee,"Mountain-100 Silver, 42",3399.99,271.9992 +SO45755,1,2/24/2020,Logan Chow,"Road-150 Red, 56",3578.27,286.2616 +SO45754,1,2/24/2020,Austin Bryant,"Road-150 Red, 44",3578.27,286.2616 +SO45756,1,2/24/2020,Zachary Moore,"Road-150 Red, 52",3578.27,286.2616 +SO45761,1,2/25/2020,Isaiah Wright,"Road-150 Red, 56",3578.27,286.2616 +SO45759,1,2/25/2020,Taylor Lewis,"Road-150 Red, 52",3578.27,286.2616 +SO45760,1,2/25/2020,Andy Alvarez,"Road-150 Red, 44",3578.27,286.2616 +SO45762,1,2/25/2020,Barry Martinez,"Road-150 Red, 48",3578.27,286.2616 +SO45757,1,2/25/2020,Trisha Lin,"Road-150 Red, 48",3578.27,286.2616 +SO45758,1,2/25/2020,Shannon Navarro,"Road-150 Red, 48",3578.27,286.2616 +SO45763,1,2/25/2020,Tabitha Moreno,"Road-150 Red, 56",3578.27,286.2616 +SO45764,1,2/25/2020,Douglas Rodriguez,"Road-150 Red, 62",3578.27,286.2616 +SO45770,1,2/26/2020,Susan She,"Road-150 Red, 44",3578.27,286.2616 +SO45769,1,2/26/2020,Jaime Moreno,"Road-150 Red, 56",3578.27,286.2616 +SO45767,1,2/26/2020,Orlando Vazquez,"Road-150 Red, 62",3578.27,286.2616 +SO45768,1,2/26/2020,Zachary Anderson,"Road-150 Red, 62",3578.27,286.2616 +SO45766,1,2/26/2020,Noah Coleman,"Road-150 Red, 48",3578.27,286.2616 +SO45765,1,2/26/2020,Ricky Vazquez,"Mountain-100 Black, 44",3374.99,269.9992 +SO45774,1,2/27/2020,Stephanie Collins,"Road-150 Red, 48",3578.27,286.2616 +SO45771,1,2/27/2020,Danielle Reed,"Road-150 Red, 56",3578.27,286.2616 +SO45773,1,2/27/2020,Ni�ia Anand,"Road-150 Red, 44",3578.27,286.2616 +SO45772,1,2/27/2020,Olivia Ramirez,"Road-150 Red, 52",3578.27,286.2616 +SO45776,1,2/28/2020,Megan Harris,"Road-150 Red, 52",3578.27,286.2616 +SO45777,1,2/28/2020,Sarah Garcia,"Mountain-100 Silver, 44",3399.99,271.9992 +SO45775,1,2/28/2020,Jos� Saraiva,"Road-150 Red, 56",3578.27,286.2616 +SO45778,1,2/28/2020,Samuel Walker,"Mountain-100 Black, 48",3374.99,269.9992 +SO45817,1,3/1/2020,Riley Simmons,"Road-150 Red, 44",3578.27,286.2616 +SO45818,1,3/1/2020,Ariana Morgan,"Road-650 Red, 48",699.0982,55.9279 +SO45816,1,3/1/2020,Taylor Garcia,"Road-150 Red, 52",3578.27,286.2616 +SO45820,1,3/1/2020,Shawn Tang,"Road-650 Black, 48",699.0982,55.9279 +SO45819,1,3/1/2020,George Garcia,"Road-150 Red, 48",3578.27,286.2616 +SO45822,1,3/2/2020,Mindy Xu,"Road-150 Red, 48",3578.27,286.2616 +SO45823,1,3/2/2020,Veronica Kapoor,"Road-150 Red, 44",3578.27,286.2616 +SO45821,1,3/2/2020,Gloria Torres,"Mountain-100 Silver, 44",3399.99,271.9992 +SO45829,1,3/3/2020,Darren Malhotra,"Road-150 Red, 62",3578.27,286.2616 +SO45830,1,3/3/2020,Jamie Guo,"Road-150 Red, 56",3578.27,286.2616 +SO45831,1,3/3/2020,Rodney Blanco,"Road-150 Red, 52",3578.27,286.2616 +SO45827,1,3/3/2020,Jon Pal,"Road-150 Red, 48",3578.27,286.2616 +SO45825,1,3/3/2020,Dennis Ware,"Road-150 Red, 56",3578.27,286.2616 +SO45826,1,3/3/2020,Jonathan Powell,"Road-150 Red, 62",3578.27,286.2616 +SO45832,1,3/3/2020,Joe Rana,"Mountain-100 Black, 48",3374.99,269.9992 +SO45824,1,3/3/2020,Mackenzie Campbell,"Road-150 Red, 48",3578.27,286.2616 +SO45828,1,3/3/2020,Austin Foster,"Road-650 Red, 52",699.0982,55.9279 +SO45836,1,3/4/2020,Nelson Harrison,"Road-150 Red, 44",3578.27,286.2616 +SO45835,1,3/4/2020,Victoria Morris,"Road-150 Red, 52",3578.27,286.2616 +SO45839,1,3/4/2020,Philip Carlson,"Mountain-100 Black, 42",3374.99,269.9992 +SO45833,1,3/4/2020,Hannah Patterson,"Road-150 Red, 52",3578.27,286.2616 +SO45834,1,3/4/2020,Joe Torres,"Road-150 Red, 48",3578.27,286.2616 +SO45838,1,3/4/2020,Gina Dominguez,"Road-150 Red, 44",3578.27,286.2616 +SO45837,1,3/4/2020,Clarence Ye,"Mountain-100 Black, 38",3374.99,269.9992 +SO45844,1,3/5/2020,Andrew Rodriguez,"Road-150 Red, 48",3578.27,286.2616 +SO45843,1,3/5/2020,Sierra Roberts,"Road-150 Red, 48",3578.27,286.2616 +SO45842,1,3/5/2020,Edward Lewis,"Road-150 Red, 56",3578.27,286.2616 +SO45840,1,3/5/2020,Latasha Rubio,"Mountain-100 Black, 42",3374.99,269.9992 +SO45841,1,3/5/2020,Jaclyn Chander,"Road-150 Red, 44",3578.27,286.2616 +SO45848,1,3/6/2020,Adam Gonzalez,"Road-650 Black, 48",699.0982,55.9279 +SO45849,1,3/6/2020,Raul Luo,"Road-150 Red, 48",3578.27,286.2616 +SO45845,1,3/6/2020,Benjamin Shan,"Road-150 Red, 44",3578.27,286.2616 +SO45846,1,3/6/2020,Joseph Jackson,"Road-150 Red, 56",3578.27,286.2616 +SO45847,1,3/6/2020,Gabriel Chow,"Mountain-100 Silver, 42",3399.99,271.9992 +SO45856,1,3/7/2020,Kristina Lopez,"Road-150 Red, 44",3578.27,286.2616 +SO45852,1,3/7/2020,Chad Shen,"Road-650 Black, 48",699.0982,55.9279 +SO45853,1,3/7/2020,Isabelle Barnes,"Road-150 Red, 52",3578.27,286.2616 +SO45854,1,3/7/2020,Dominique Subram,"Road-150 Red, 48",3578.27,286.2616 +SO45855,1,3/7/2020,Grant Pal,"Road-650 Black, 44",699.0982,55.9279 +SO45851,1,3/7/2020,Greg Taylor,"Road-150 Red, 48",3578.27,286.2616 +SO45850,1,3/7/2020,Seth Mitchell,"Road-150 Red, 62",3578.27,286.2616 +SO45857,1,3/7/2020,Warren Andersen,"Mountain-100 Black, 48",3374.99,269.9992 +SO45858,1,3/7/2020,Dorothy Robinson,"Mountain-100 Black, 44",3374.99,269.9992 +SO45859,1,3/8/2020,Lindsey Deng,"Road-150 Red, 56",3578.27,286.2616 +SO45861,1,3/8/2020,Aaron Wright,"Road-150 Red, 44",3578.27,286.2616 +SO45860,1,3/8/2020,Anthony Rodriguez,"Road-150 Red, 48",3578.27,286.2616 +SO45866,1,3/9/2020,Kelli Wu,"Road-150 Red, 62",3578.27,286.2616 +SO45865,1,3/9/2020,Riley Reed,"Road-150 Red, 48",3578.27,286.2616 +SO45864,1,3/9/2020,Katrina Chande,"Road-150 Red, 44",3578.27,286.2616 +SO45863,1,3/9/2020,Ryan Zhang,"Road-150 Red, 56",3578.27,286.2616 +SO45862,1,3/9/2020,Ernest Xu,"Road-150 Red, 48",3578.27,286.2616 +SO45868,1,3/10/2020,Dana Ruiz,"Road-150 Red, 62",3578.27,286.2616 +SO45869,1,3/10/2020,Jessica Martin,"Road-150 Red, 62",3578.27,286.2616 +SO45867,1,3/10/2020,Cameron Moore,"Road-150 Red, 48",3578.27,286.2616 +SO45871,1,3/10/2020,Dana Ramos,"Road-650 Red, 44",699.0982,55.9279 +SO45870,1,3/10/2020,Mark Bebbington,"Mountain-100 Black, 42",3374.99,269.9992 +SO45876,1,3/11/2020,Brittney Zhang,"Road-150 Red, 56",3578.27,286.2616 +SO45874,1,3/11/2020,Ashley Alexander,"Mountain-100 Black, 48",3374.99,269.9992 +SO45875,1,3/11/2020,Christopher Thomas,"Road-150 Red, 62",3578.27,286.2616 +SO45873,1,3/11/2020,Ashlee Jai,"Road-150 Red, 56",3578.27,286.2616 +SO45877,1,3/11/2020,Jaclyn Zheng,"Mountain-100 Black, 48",3374.99,269.9992 +SO45872,1,3/11/2020,Cindy Patel,"Mountain-100 Silver, 48",3399.99,271.9992 +SO45884,1,3/12/2020,Johnny Chavez,"Road-150 Red, 52",3578.27,286.2616 +SO45882,1,3/12/2020,Allison Gonzalez,"Road-150 Red, 48",3578.27,286.2616 +SO45880,1,3/12/2020,Natalie Cook,"Road-150 Red, 52",3578.27,286.2616 +SO45889,1,3/12/2020,Adrienne Gomez,"Mountain-100 Black, 44",3374.99,269.9992 +SO45883,1,3/12/2020,Jessie Wang,"Road-150 Red, 52",3578.27,286.2616 +SO45885,1,3/12/2020,Larry Vazquez,"Road-150 Red, 52",3578.27,286.2616 +SO45878,1,3/12/2020,Teresa Vazquez,"Road-150 Red, 62",3578.27,286.2616 +SO45887,1,3/12/2020,Jessica Ross,"Road-650 Red, 52",699.0982,55.9279 +SO45888,1,3/12/2020,Valerie Wang,"Road-150 Red, 62",3578.27,286.2616 +SO45879,1,3/12/2020,Dominic Raman,"Road-650 Black, 44",699.0982,55.9279 +SO45881,1,3/12/2020,Isabelle Bryant,"Road-150 Red, 62",3578.27,286.2616 +SO45886,1,3/12/2020,Devin Griffin,"Mountain-100 Black, 38",3374.99,269.9992 +SO45893,1,3/13/2020,Connor Bryant,"Road-150 Red, 52",3578.27,286.2616 +SO45892,1,3/13/2020,Valerie She,"Road-150 Red, 48",3578.27,286.2616 +SO45890,1,3/13/2020,Frank Navarro,"Mountain-100 Black, 42",3374.99,269.9992 +SO45891,1,3/13/2020,Mitchell Kumar,"Mountain-100 Silver, 44",3399.99,271.9992 +SO45895,1,3/14/2020,Benjamin Taylor,"Road-150 Red, 44",3578.27,286.2616 +SO45896,1,3/14/2020,Bonnie Nath,"Road-150 Red, 44",3578.27,286.2616 +SO45894,1,3/14/2020,Keith Lal,"Road-650 Black, 58",699.0982,55.9279 +SO45904,1,3/15/2020,Cesar Mehta,"Road-150 Red, 44",3578.27,286.2616 +SO45907,1,3/15/2020,Trisha Liu,"Road-150 Red, 62",3578.27,286.2616 +SO45906,1,3/15/2020,Ernest Zhu,"Road-150 Red, 48",3578.27,286.2616 +SO45905,1,3/15/2020,Rafael She,"Road-150 Red, 44",3578.27,286.2616 +SO45902,1,3/15/2020,Faith Simmons,"Road-150 Red, 56",3578.27,286.2616 +SO45903,1,3/15/2020,Levi Subram,"Road-150 Red, 62",3578.27,286.2616 +SO45898,1,3/15/2020,Cameron White,"Road-150 Red, 62",3578.27,286.2616 +SO45901,1,3/15/2020,Janet Dominguez,"Road-150 Red, 48",3578.27,286.2616 +SO45899,1,3/15/2020,Morgan Miller,"Road-150 Red, 62",3578.27,286.2616 +SO45900,1,3/15/2020,Haley Alexander,"Road-150 Red, 48",3578.27,286.2616 +SO45897,1,3/15/2020,Mathew Rubio,"Road-150 Red, 52",3578.27,286.2616 +SO45908,1,3/15/2020,Kaylee Hill,"Mountain-100 Silver, 48",3399.99,271.9992 +SO45909,1,3/15/2020,Jenny Zheng,"Mountain-100 Black, 42",3374.99,269.9992 +SO45916,1,3/16/2020,Sharon Salavaria,"Mountain-100 Silver, 44",3399.99,271.9992 +SO45914,1,3/16/2020,Virginia Gonzalez,"Mountain-100 Black, 42",3374.99,269.9992 +SO45915,1,3/16/2020,Jaclyn Nara,"Mountain-100 Silver, 48",3399.99,271.9992 +SO45911,1,3/16/2020,Devin Coleman,"Road-150 Red, 56",3578.27,286.2616 +SO45910,1,3/16/2020,Miranda Long,"Road-150 Red, 44",3578.27,286.2616 +SO45912,1,3/16/2020,Vanessa Washington,"Road-150 Red, 48",3578.27,286.2616 +SO45913,1,3/16/2020,Olivia Torres,"Mountain-100 Silver, 38",3399.99,271.9992 +SO45920,1,3/17/2020,Morgan Rodriguez,"Road-150 Red, 44",3578.27,286.2616 +SO45922,1,3/17/2020,Jose Thompson,"Road-150 Red, 56",3578.27,286.2616 +SO45921,1,3/17/2020,Brendan Chande,"Road-150 Red, 48",3578.27,286.2616 +SO45919,1,3/17/2020,Jessica Alexander,"Road-150 Red, 48",3578.27,286.2616 +SO45923,1,3/17/2020,Abigail Brooks,"Road-150 Red, 52",3578.27,286.2616 +SO45925,1,3/17/2020,George Gonzalez,"Mountain-100 Silver, 48",3399.99,271.9992 +SO45918,1,3/17/2020,Tamara Chander,"Road-150 Red, 52",3578.27,286.2616 +SO45917,1,3/17/2020,Deanna Ramos,"Mountain-100 Silver, 44",3399.99,271.9992 +SO45924,1,3/17/2020,Stacy Martin,"Road-150 Red, 62",3578.27,286.2616 +SO45928,1,3/18/2020,Mary Patterson,"Road-150 Red, 52",3578.27,286.2616 +SO45929,1,3/18/2020,Aimee She,"Road-150 Red, 62",3578.27,286.2616 +SO45927,1,3/18/2020,Isabel Jenkins,"Road-150 Red, 48",3578.27,286.2616 +SO45926,1,3/18/2020,Benjamin Coleman,"Road-150 Red, 44",3578.27,286.2616 +SO45931,1,3/18/2020,Tasha Kumar,"Road-150 Red, 62",3578.27,286.2616 +SO45932,1,3/18/2020,Scott Rodgers,"Road-150 Red, 62",3578.27,286.2616 +SO45930,1,3/18/2020,Jaclyn Huang,"Road-650 Red, 48",699.0982,55.9279 +SO45935,1,3/19/2020,Franklin Xu,"Road-650 Red, 44",699.0982,55.9279 +SO45933,1,3/19/2020,Sarah Jackson,"Road-150 Red, 52",3578.27,286.2616 +SO45934,1,3/19/2020,Angel Baker,"Road-150 Red, 52",3578.27,286.2616 +SO45936,1,3/19/2020,Fernando King,"Mountain-100 Black, 42",3374.99,269.9992 +SO45938,1,3/20/2020,Ariana Sanchez,"Road-150 Red, 44",3578.27,286.2616 +SO45946,1,3/20/2020,Meagan Rana,"Mountain-100 Black, 44",3374.99,269.9992 +SO45947,1,3/20/2020,Dawn Huang,"Mountain-100 Black, 48",3374.99,269.9992 +SO45939,1,3/20/2020,Elizabeth Garcia,"Road-650 Black, 60",699.0982,55.9279 +SO45937,1,3/20/2020,Miguel Baker,"Road-150 Red, 48",3578.27,286.2616 +SO45943,1,3/20/2020,Kaylee Sanders,"Road-150 Red, 62",3578.27,286.2616 +SO45944,1,3/20/2020,Sharon Rai,"Road-150 Red, 48",3578.27,286.2616 +SO45940,1,3/20/2020,Dawn Raji,"Road-150 Red, 52",3578.27,286.2616 +SO45941,1,3/20/2020,Marshall Yuan,"Road-150 Red, 62",3578.27,286.2616 +SO45942,1,3/20/2020,Colleen Harrison,"Road-150 Red, 48",3578.27,286.2616 +SO45945,1,3/20/2020,Orlando Gutierrez,"Road-650 Red, 62",699.0982,55.9279 +SO45950,1,3/21/2020,George Fernandez,"Road-150 Red, 48",3578.27,286.2616 +SO45949,1,3/21/2020,Tanya Jimenez,"Road-150 Red, 62",3578.27,286.2616 +SO45948,1,3/21/2020,Andrea Richardson,"Road-650 Black, 52",699.0982,55.9279 +SO45951,1,3/21/2020,Rachael Rodriguez,"Mountain-100 Black, 38",3374.99,269.9992 +SO45952,1,3/21/2020,Randy Xu,"Mountain-100 Silver, 48",3399.99,271.9992 +SO45954,1,3/22/2020,Antonio Washington,"Road-150 Red, 56",3578.27,286.2616 +SO45956,1,3/22/2020,Janet Browning,"Road-150 Red, 48",3578.27,286.2616 +SO45953,1,3/22/2020,Megan Anderson,"Road-150 Red, 56",3578.27,286.2616 +SO45955,1,3/22/2020,Ethan Foster,"Mountain-100 Silver, 38",3399.99,271.9992 +SO45965,1,3/23/2020,Colin Shan,"Road-650 Red, 58",699.0982,55.9279 +SO45964,1,3/23/2020,Ioannis Xylaras,"Road-150 Red, 62",3578.27,286.2616 +SO45962,1,3/23/2020,Louis Zhang,"Road-150 Red, 62",3578.27,286.2616 +SO45963,1,3/23/2020,Anna Watson,"Road-150 Red, 62",3578.27,286.2616 +SO45957,1,3/23/2020,Juan Gray,"Road-150 Red, 48",3578.27,286.2616 +SO45958,1,3/23/2020,Daniel Garcia,"Road-150 Red, 44",3578.27,286.2616 +SO45959,1,3/23/2020,Faith Patterson,"Road-150 Red, 44",3578.27,286.2616 +SO45966,1,3/23/2020,Brandy Saunders,"Mountain-100 Silver, 42",3399.99,271.9992 +SO45960,1,3/23/2020,Jessica Brown,"Road-150 Red, 56",3578.27,286.2616 +SO45961,1,3/23/2020,Hannah Wood,"Road-150 Red, 48",3578.27,286.2616 +SO45970,1,3/24/2020,Antonio Patterson,"Mountain-100 Black, 38",3374.99,269.9992 +SO45968,1,3/24/2020,Fernando Flores,"Road-150 Red, 44",3578.27,286.2616 +SO45969,1,3/24/2020,Jay Madan,"Road-150 Red, 62",3578.27,286.2616 +SO45967,1,3/24/2020,Roger Sharma,"Road-650 Red, 44",699.0982,55.9279 +SO45972,1,3/25/2020,Heidi Sara,"Road-650 Red, 62",699.0982,55.9279 +SO45977,1,3/25/2020,Shawn Chander,"Road-150 Red, 52",3578.27,286.2616 +SO45976,1,3/25/2020,Jill Ortega,"Road-150 Red, 56",3578.27,286.2616 +SO45973,1,3/25/2020,Gavin Diaz,"Road-150 Red, 52",3578.27,286.2616 +SO45978,1,3/25/2020,Latasha Munoz,"Mountain-100 Black, 44",3374.99,269.9992 +SO45971,1,3/25/2020,Carla Raman,"Mountain-100 Silver, 42",3399.99,271.9992 +SO45975,1,3/25/2020,Robert Davis,"Road-650 Red, 62",699.0982,55.9279 +SO45974,1,3/25/2020,Zachary Thompson,"Mountain-100 Silver, 48",3399.99,271.9992 +SO45981,1,3/26/2020,Marvin Moreno,"Road-150 Red, 62",3578.27,286.2616 +SO45982,1,3/26/2020,Kristine Gill,"Road-150 Red, 62",3578.27,286.2616 +SO45979,1,3/26/2020,Nichole Tang,"Road-150 Red, 44",3578.27,286.2616 +SO45980,1,3/26/2020,Clayton Andersen,"Road-150 Red, 48",3578.27,286.2616 +SO45990,1,3/27/2020,Heather Zheng,"Road-150 Red, 56",3578.27,286.2616 +SO45989,1,3/27/2020,Clarence Gao,"Road-150 Red, 44",3578.27,286.2616 +SO45988,1,3/27/2020,Devin Martinez,"Road-150 Red, 56",3578.27,286.2616 +SO45985,1,3/27/2020,Elizabeth Weisman,"Road-150 Red, 56",3578.27,286.2616 +SO45984,1,3/27/2020,Caroline Butler,"Road-150 Red, 52",3578.27,286.2616 +SO45986,1,3/27/2020,Chase Kelly,"Road-150 Red, 56",3578.27,286.2616 +SO45991,1,3/27/2020,Audrey Ramos,"Mountain-100 Black, 48",3374.99,269.9992 +SO45987,1,3/27/2020,Jason Mitchell,"Road-150 Red, 62",3578.27,286.2616 +SO45983,1,3/27/2020,Isabella Ward,"Road-150 Red, 56",3578.27,286.2616 +SO45997,1,3/28/2020,Charles Reed,"Road-650 Red, 62",699.0982,55.9279 +SO45996,1,3/28/2020,Tyler Brown,"Road-150 Red, 48",3578.27,286.2616 +SO45994,1,3/28/2020,Emma Sanchez,"Road-150 Red, 44",3578.27,286.2616 +SO45993,1,3/28/2020,Ian Long,"Road-150 Red, 52",3578.27,286.2616 +SO45992,1,3/28/2020,Pedro Sara,"Road-650 Black, 60",699.0982,55.9279 +SO45998,1,3/28/2020,Carly Anand,"Road-650 Black, 52",699.0982,55.9279 +SO45995,1,3/28/2020,Aidan Diaz,"Road-150 Red, 62",3578.27,286.2616 +SO46001,1,3/29/2020,Olivia Foster,"Road-150 Red, 62",3578.27,286.2616 +SO45999,1,3/29/2020,Brianna Martin,"Road-150 Red, 44",3578.27,286.2616 +SO46006,1,3/29/2020,Cesar Chandra,"Road-150 Red, 52",3578.27,286.2616 +SO46007,1,3/29/2020,Wendy Carlson,"Road-150 Red, 48",3578.27,286.2616 +SO46009,1,3/29/2020,Roy Sanz,"Mountain-100 Silver, 38",3399.99,271.9992 +SO46008,1,3/29/2020,Rachael Sai,"Mountain-100 Black, 38",3374.99,269.9992 +SO46000,1,3/29/2020,Haley Henderson,"Road-150 Red, 62",3578.27,286.2616 +SO46003,1,3/29/2020,Christian Ross,"Road-150 Red, 48",3578.27,286.2616 +SO46002,1,3/29/2020,Jessie Alonso,"Road-150 Red, 62",3578.27,286.2616 +SO46004,1,3/29/2020,Alyssa Morgan,"Road-150 Red, 44",3578.27,286.2616 +SO46005,1,3/29/2020,Miguel Lee,"Road-150 Red, 48",3578.27,286.2616 +SO46018,1,3/30/2020,Seth Williams,"Road-150 Red, 48",3578.27,286.2616 +SO46013,1,3/30/2020,Brooke Richardson,"Road-150 Red, 44",3578.27,286.2616 +SO46010,1,3/30/2020,Jermaine Lopez,"Mountain-100 Black, 38",3374.99,269.9992 +SO46011,1,3/30/2020,Deborah Goel,"Mountain-100 Black, 48",3374.99,269.9992 +SO46016,1,3/30/2020,Kurt Sharma,"Road-150 Red, 48",3578.27,286.2616 +SO46017,1,3/30/2020,Katelyn Parker,"Road-150 Red, 56",3578.27,286.2616 +SO46022,1,3/30/2020,Kelsey Becker,"Mountain-100 Silver, 44",3399.99,271.9992 +SO46019,1,3/30/2020,Seth Turner,"Road-650 Black, 48",699.0982,55.9279 +SO46020,1,3/30/2020,Raymond Arthur,"Road-150 Red, 52",3578.27,286.2616 +SO46021,1,3/30/2020,Jeffery Lu,"Road-150 Red, 56",3578.27,286.2616 +SO46012,1,3/30/2020,Veronica Rana,"Road-650 Red, 52",699.0982,55.9279 +SO46015,1,3/30/2020,Joshua Rodriguez,"Road-150 Red, 52",3578.27,286.2616 +SO46014,1,3/30/2020,Kaitlyn Long,"Road-150 Red, 52",3578.27,286.2616 +SO46119,1,3/31/2020,Tiffany Guo,"Road-650 Red, 44",699.0982,55.9279 +SO46117,1,3/31/2020,Clayton Rai,"Road-150 Red, 62",3578.27,286.2616 +SO46118,1,3/31/2020,Carla Sullivan,"Road-150 Red, 56",3578.27,286.2616 +SO46116,1,3/31/2020,Emma Taylor,"Road-650 Black, 58",699.0982,55.9279 +SO46113,1,3/31/2020,Gabriel Green,"Road-150 Red, 62",3578.27,286.2616 +SO46112,1,3/31/2020,Dennis Huang,"Road-150 Red, 48",3578.27,286.2616 +SO46108,1,3/31/2020,Devin Henderson,"Road-150 Red, 62",3578.27,286.2616 +SO46114,1,3/31/2020,Cedric Gao,"Road-150 Red, 52",3578.27,286.2616 +SO46111,1,3/31/2020,Devin Perez,"Road-150 Red, 44",3578.27,286.2616 +SO46115,1,3/31/2020,Mariah Ross,"Road-150 Red, 48",3578.27,286.2616 +SO46109,1,3/31/2020,Sebastian Stewart,"Road-150 Red, 48",3578.27,286.2616 +SO46110,1,3/31/2020,Abigail Howard,"Road-150 Red, 44",3578.27,286.2616 +SO46123,1,4/1/2020,Adrian Ramirez,"Road-150 Red, 48",3578.27,286.2616 +SO46121,1,4/1/2020,Garrett Kelly,"Road-150 Red, 48",3578.27,286.2616 +SO46120,1,4/1/2020,Fernando Johnson,"Road-150 Red, 52",3578.27,286.2616 +SO46124,1,4/1/2020,Jodi Goel,"Road-150 Red, 44",3578.27,286.2616 +SO46122,1,4/1/2020,Melissa Sanders,"Road-150 Red, 52",3578.27,286.2616 +SO46129,1,4/2/2020,Evelyn Mehta,"Road-150 Red, 52",3578.27,286.2616 +SO46125,1,4/2/2020,Alexandria Sandberg,"Road-150 Red, 62",3578.27,286.2616 +SO46128,1,4/2/2020,Samantha Lewis,"Road-150 Red, 56",3578.27,286.2616 +SO46126,1,4/2/2020,Gabrielle Barnes,"Road-650 Black, 60",699.0982,55.9279 +SO46127,1,4/2/2020,Connor Hernandez,"Road-650 Black, 60",699.0982,55.9279 +SO46138,1,4/3/2020,Ethan Bryant,"Road-150 Red, 44",3578.27,286.2616 +SO46139,1,4/3/2020,Bonnie Jai,"Mountain-100 Silver, 48",3399.99,271.9992 +SO46131,1,4/3/2020,Joseph Garcia,"Road-150 Red, 48",3578.27,286.2616 +SO46140,1,4/3/2020,Frederick Martinez,"Mountain-100 Black, 44",3374.99,269.9992 +SO46133,1,4/3/2020,Abigail Foster,"Road-150 Red, 48",3578.27,286.2616 +SO46130,1,4/3/2020,Alyssa Cooper,"Road-150 Red, 44",3578.27,286.2616 +SO46135,1,4/3/2020,Dale Goel,"Road-150 Red, 52",3578.27,286.2616 +SO46136,1,4/3/2020,Johnathan Perez,"Road-150 Red, 48",3578.27,286.2616 +SO46134,1,4/3/2020,Jenny Andersen,"Road-150 Red, 48",3578.27,286.2616 +SO46132,1,4/3/2020,Lori Sanz,"Road-150 Red, 56",3578.27,286.2616 +SO46137,1,4/3/2020,Dennis Hu,"Road-150 Red, 52",3578.27,286.2616 +SO46142,1,4/4/2020,Gabrielle Peterson,"Road-150 Red, 44",3578.27,286.2616 +SO46141,1,4/4/2020,Allison Edwards,"Road-650 Red, 58",699.0982,55.9279 +SO46145,1,4/4/2020,Eric Griffin,"Road-650 Black, 48",699.0982,55.9279 +SO46143,1,4/4/2020,Mathew Moreno,"Mountain-100 Silver, 48",3399.99,271.9992 +SO46144,1,4/4/2020,Sarah Butler,"Mountain-100 Black, 44",3374.99,269.9992 +SO46151,1,4/5/2020,Christian Johnson,"Mountain-100 Black, 48",3374.99,269.9992 +SO46149,1,4/5/2020,Xavier Simmons,"Road-150 Red, 44",3578.27,286.2616 +SO46154,1,4/5/2020,Kara Anand,"Mountain-100 Black, 42",3374.99,269.9992 +SO46148,1,4/5/2020,Makayla Ward,"Road-150 Red, 62",3578.27,286.2616 +SO46146,1,4/5/2020,Amy Sun,"Mountain-100 Silver, 42",3399.99,271.9992 +SO46147,1,4/5/2020,Sarah Anderson,"Road-650 Red, 58",699.0982,55.9279 +SO46152,1,4/5/2020,Marie Romero,"Road-150 Red, 56",3578.27,286.2616 +SO46153,1,4/5/2020,Mario Sharma,"Road-650 Red, 62",699.0982,55.9279 +SO46150,1,4/5/2020,Patricia Patel,"Road-650 Black, 62",699.0982,55.9279 +SO46158,1,4/6/2020,Larry Gutierrez,"Road-650 Red, 58",699.0982,55.9279 +SO46155,1,4/6/2020,Chloe Washington,"Road-150 Red, 62",3578.27,286.2616 +SO46159,1,4/6/2020,Veronica Srini,"Mountain-100 Black, 48",3374.99,269.9992 +SO46156,1,4/6/2020,Miguel Sanchez,"Road-150 Red, 56",3578.27,286.2616 +SO46157,1,4/6/2020,Karen Zeng,"Mountain-100 Silver, 42",3399.99,271.9992 +SO46169,1,4/7/2020,Bailey Bailey,"Road-150 Red, 52",3578.27,286.2616 +SO46165,1,4/7/2020,Kaitlyn Lee,"Road-150 Red, 62",3578.27,286.2616 +SO46162,1,4/7/2020,Aaron Wang,"Road-150 Red, 52",3578.27,286.2616 +SO46161,1,4/7/2020,Nicolas Chander,"Road-150 Red, 44",3578.27,286.2616 +SO46167,1,4/7/2020,Kristina Kapoor,"Mountain-100 Silver, 48",3399.99,271.9992 +SO46164,1,4/7/2020,Nathaniel Cooper,"Road-150 Red, 48",3578.27,286.2616 +SO46163,1,4/7/2020,Alex Carter,"Road-150 Red, 48",3578.27,286.2616 +SO46160,1,4/7/2020,Sydney Bryant,"Mountain-100 Black, 48",3374.99,269.9992 +SO46168,1,4/7/2020,Deanna Schmidt,"Road-650 Black, 60",699.0982,55.9279 +SO46166,1,4/7/2020,Marcus Hayes,"Road-150 Red, 52",3578.27,286.2616 +SO46173,1,4/8/2020,Katie Shen,"Road-150 Red, 44",3578.27,286.2616 +SO46171,1,4/8/2020,Evan Campbell,"Road-150 Red, 62",3578.27,286.2616 +SO46174,1,4/8/2020,Cara Hu,"Road-150 Red, 44",3578.27,286.2616 +SO46172,1,4/8/2020,Ana Washington,"Road-150 Red, 62",3578.27,286.2616 +SO46175,1,4/8/2020,Audrey Munoz,"Mountain-100 Black, 42",3374.99,269.9992 +SO46170,1,4/8/2020,Bonnie Raji,"Road-150 Red, 48",3578.27,286.2616 +SO46177,1,4/9/2020,Devin Simmons,"Road-150 Red, 48",3578.27,286.2616 +SO46176,1,4/9/2020,Andre Perez,"Mountain-100 Black, 42",3374.99,269.9992 +SO46178,1,4/9/2020,Jon Yuan,"Road-650 Black, 60",699.0982,55.9279 +SO46181,1,4/10/2020,Jarrod Suri,"Mountain-100 Black, 38",3374.99,269.9992 +SO46180,1,4/10/2020,Aidan Perry,"Road-150 Red, 62",3578.27,286.2616 +SO46182,1,4/10/2020,Kelvin Carson,"Mountain-100 Silver, 44",3399.99,271.9992 +SO46179,1,4/10/2020,Cheryl Ortega,"Road-150 Red, 52",3578.27,286.2616 +SO46186,1,4/11/2020,Seth Martin,"Road-150 Red, 62",3578.27,286.2616 +SO46191,1,4/11/2020,Krista Romero,"Road-150 Red, 62",3578.27,286.2616 +SO46184,1,4/11/2020,Ebony Jimenez,"Road-150 Red, 44",3578.27,286.2616 +SO46187,1,4/11/2020,Jill Martinez,"Road-150 Red, 52",3578.27,286.2616 +SO46189,1,4/11/2020,Jocelyn Coleman,"Road-150 Red, 48",3578.27,286.2616 +SO46188,1,4/11/2020,Maurice Ashe,"Road-150 Red, 62",3578.27,286.2616 +SO46190,1,4/11/2020,Gerald Madan,"Road-150 Red, 48",3578.27,286.2616 +SO46185,1,4/11/2020,Gloria Carlson,"Road-150 Red, 56",3578.27,286.2616 +SO46183,1,4/11/2020,Bethany Tang,"Mountain-100 Black, 48",3374.99,269.9992 +SO46198,1,4/12/2020,Terry Rai,"Mountain-100 Silver, 38",3399.99,271.9992 +SO46197,1,4/12/2020,Connor Butler,"Mountain-100 Silver, 48",3399.99,271.9992 +SO46200,1,4/12/2020,Ethan Martinez,"Road-150 Red, 62",3578.27,286.2616 +SO46199,1,4/12/2020,Javier Serrano,"Road-150 Red, 56",3578.27,286.2616 +SO46193,1,4/12/2020,Veronica Arun,"Road-650 Black, 52",699.0982,55.9279 +SO46201,1,4/12/2020,Jessie Zhou,"Road-150 Red, 56",3578.27,286.2616 +SO46202,1,4/12/2020,April Tang,"Road-650 Red, 58",699.0982,55.9279 +SO46195,1,4/12/2020,Haley Wood,"Road-150 Red, 56",3578.27,286.2616 +SO46204,1,4/12/2020,Kathryn Chapman,"Mountain-100 Black, 38",3374.99,269.9992 +SO46203,1,4/12/2020,Johnny Shan,"Mountain-100 Silver, 44",3399.99,271.9992 +SO46194,1,4/12/2020,Kevin Washington,"Road-150 Red, 52",3578.27,286.2616 +SO46196,1,4/12/2020,Morgan Foster,"Road-150 Red, 62",3578.27,286.2616 +SO46192,1,4/12/2020,Russell Raje,"Road-150 Red, 56",3578.27,286.2616 +SO46209,1,4/13/2020,Adam Baker,"Road-150 Red, 48",3578.27,286.2616 +SO46210,1,4/13/2020,Janelle Fernandez,"Road-150 Red, 52",3578.27,286.2616 +SO46205,1,4/13/2020,Luke Mitchell,"Road-150 Red, 52",3578.27,286.2616 +SO46208,1,4/13/2020,Deanna Ashe,"Road-150 Red, 44",3578.27,286.2616 +SO46206,1,4/13/2020,Edward Hughes,"Mountain-100 Black, 38",3374.99,269.9992 +SO46207,1,4/13/2020,Chloe Bennett,"Mountain-100 Black, 38",3374.99,269.9992 +SO46211,1,4/14/2020,Gabriel Zhang,"Road-650 Red, 48",699.0982,55.9279 +SO46217,1,4/14/2020,Gregory Shan,"Road-150 Red, 56",3578.27,286.2616 +SO46215,1,4/14/2020,Curtis Gao,"Road-150 Red, 62",3578.27,286.2616 +SO46216,1,4/14/2020,Alfredo Ramos,"Road-150 Red, 56",3578.27,286.2616 +SO46212,1,4/14/2020,Dalton Edwards,"Road-150 Red, 48",3578.27,286.2616 +SO46213,1,4/14/2020,Aaron Young,"Road-150 Red, 56",3578.27,286.2616 +SO46214,1,4/14/2020,Tristan Ross,"Road-150 Red, 44",3578.27,286.2616 +SO46227,1,4/15/2020,Joanna Vazquez,"Mountain-100 Black, 48",3374.99,269.9992 +SO46228,1,4/15/2020,Rosa Wang,"Mountain-100 Black, 42",3374.99,269.9992 +SO46218,1,4/15/2020,Derek Tang,"Road-150 Red, 52",3578.27,286.2616 +SO46224,1,4/15/2020,Arianna Diaz,"Road-650 Red, 48",699.0982,55.9279 +SO46222,1,4/15/2020,Kyle Hayes,"Road-650 Black, 62",699.0982,55.9279 +SO46223,1,4/15/2020,Savannah Sanders,"Road-650 Red, 44",699.0982,55.9279 +SO46226,1,4/15/2020,Kate Anand,"Road-150 Red, 52",3578.27,286.2616 +SO46220,1,4/15/2020,Wayne Chander,"Road-150 Red, 52",3578.27,286.2616 +SO46219,1,4/15/2020,Abigail Thompson,"Road-150 Red, 52",3578.27,286.2616 +SO46221,1,4/15/2020,Xavier Flores,"Road-150 Red, 56",3578.27,286.2616 +SO46225,1,4/15/2020,Mariah Rivera,"Road-150 Red, 52",3578.27,286.2616 +SO46233,1,4/16/2020,Sarah Henderson,"Road-150 Red, 56",3578.27,286.2616 +SO46237,1,4/16/2020,Summer Smith,"Road-150 Red, 48",3578.27,286.2616 +SO46235,1,4/16/2020,Steven Kelly,"Road-150 Red, 48",3578.27,286.2616 +SO46234,1,4/16/2020,Bianca Guo,"Road-150 Red, 48",3578.27,286.2616 +SO46236,1,4/16/2020,Shannon Yang,"Mountain-100 Black, 44",3374.99,269.9992 +SO46232,1,4/16/2020,Chloe Nelson,"Road-150 Red, 44",3578.27,286.2616 +SO46231,1,4/16/2020,Meredith Serrano,"Road-150 Red, 62",3578.27,286.2616 +SO46230,1,4/16/2020,Dawn Wu,"Mountain-100 Silver, 38",3399.99,271.9992 +SO46229,1,4/16/2020,Beth Gutierrez,"Mountain-100 Silver, 38",3399.99,271.9992 +SO46244,1,4/17/2020,Beth Alonso,"Road-150 Red, 62",3578.27,286.2616 +SO46239,1,4/17/2020,Chelsea Martinez,"Road-150 Red, 48",3578.27,286.2616 +SO46238,1,4/17/2020,Darren Alvarez,"Road-150 Red, 44",3578.27,286.2616 +SO46245,1,4/17/2020,Bridget Xu,"Road-150 Red, 56",3578.27,286.2616 +SO46240,1,4/17/2020,Abigail Coleman,"Road-150 Red, 56",3578.27,286.2616 +SO46243,1,4/17/2020,Lindsay Raje,"Road-150 Red, 44",3578.27,286.2616 +SO46242,1,4/17/2020,Alicia Goel,"Road-150 Red, 56",3578.27,286.2616 +SO46241,1,4/17/2020,Wyatt Turner,"Mountain-100 Silver, 42",3399.99,271.9992 +SO46250,1,4/18/2020,Carmen Rana,"Road-150 Red, 52",3578.27,286.2616 +SO46248,1,4/18/2020,Alexia Flores,"Road-650 Red, 62",699.0982,55.9279 +SO46247,1,4/18/2020,Kathryn Nara,"Road-650 Black, 60",699.0982,55.9279 +SO46249,1,4/18/2020,Ashley Russell,"Mountain-100 Silver, 48",3399.99,271.9992 +SO46251,1,4/18/2020,Donna Sharma,"Mountain-100 Black, 44",3374.99,269.9992 +SO46246,1,4/18/2020,Logan Turner,"Road-150 Red, 56",3578.27,286.2616 +SO46254,1,4/19/2020,Caitlin Brooks,"Road-150 Red, 62",3578.27,286.2616 +SO46257,1,4/19/2020,Tonya Chande,"Mountain-100 Silver, 44",3399.99,271.9992 +SO46253,1,4/19/2020,Lauren Sanchez,"Road-150 Red, 44",3578.27,286.2616 +SO46252,1,4/19/2020,Cory Kapoor,"Road-150 Red, 52",3578.27,286.2616 +SO46256,1,4/19/2020,Barbara Wang,"Road-150 Red, 56",3578.27,286.2616 +SO46255,1,4/19/2020,Kelli Anand,"Road-150 Red, 48",3578.27,286.2616 +SO46262,1,4/20/2020,Barbara Deng,"Road-150 Red, 52",3578.27,286.2616 +SO46259,1,4/20/2020,Logan Diaz,"Road-150 Red, 52",3578.27,286.2616 +SO46260,1,4/20/2020,James Walker,"Road-150 Red, 62",3578.27,286.2616 +SO46258,1,4/20/2020,Jaclyn Zhang,"Road-150 Red, 52",3578.27,286.2616 +SO46263,1,4/20/2020,Kelsey Xie,"Road-150 Red, 62",3578.27,286.2616 +SO46261,1,4/20/2020,Jessica Walker,"Mountain-100 Black, 38",3374.99,269.9992 +SO46264,1,4/21/2020,Cassie Jai,"Mountain-100 Black, 44",3374.99,269.9992 +SO46265,1,4/21/2020,Justin Shan,"Road-150 Red, 48",3578.27,286.2616 +SO46267,1,4/21/2020,J�sus Blanco,"Road-150 Red, 56",3578.27,286.2616 +SO46268,1,4/21/2020,Laura Wu,"Road-150 Red, 44",3578.27,286.2616 +SO46269,1,4/21/2020,Rosa He,"Road-150 Red, 48",3578.27,286.2616 +SO46266,1,4/21/2020,Sabrina Torres,"Road-150 Red, 56",3578.27,286.2616 +SO46276,1,4/22/2020,Colin Yang,"Road-150 Red, 44",3578.27,286.2616 +SO46275,1,4/22/2020,Edwin Tang,"Road-150 Red, 52",3578.27,286.2616 +SO46270,1,4/22/2020,Ethan Williams,"Road-150 Red, 48",3578.27,286.2616 +SO46272,1,4/22/2020,Amanda Gray,"Road-150 Red, 44",3578.27,286.2616 +SO46271,1,4/22/2020,Eduardo Alexander,"Road-150 Red, 52",3578.27,286.2616 +SO46273,1,4/22/2020,Kyle Edwards,"Mountain-100 Black, 48",3374.99,269.9992 +SO46274,1,4/22/2020,Elijah Patterson,"Mountain-100 Black, 44",3374.99,269.9992 +SO46281,1,4/23/2020,Barry Subram,"Mountain-100 Silver, 48",3399.99,271.9992 +SO46282,1,4/23/2020,Faith Stewart,"Mountain-100 Silver, 42",3399.99,271.9992 +SO46283,1,4/23/2020,Nicole Washington,"Mountain-100 Black, 48",3374.99,269.9992 +SO46280,1,4/23/2020,Logan Wilson,"Road-150 Red, 44",3578.27,286.2616 +SO46279,1,4/23/2020,Gabriella Lopez,"Road-150 Red, 48",3578.27,286.2616 +SO46285,1,4/23/2020,Gilbert Shen,"Mountain-100 Silver, 44",3399.99,271.9992 +SO46284,1,4/23/2020,Jasmine Russell,"Road-650 Red, 48",699.0982,55.9279 +SO46277,1,4/23/2020,Andy Ortega,"Road-650 Red, 60",699.0982,55.9279 +SO46278,1,4/23/2020,Edgar Subram,"Road-650 Red, 44",699.0982,55.9279 +SO46286,1,4/24/2020,Carrie Hernandez,"Road-650 Black, 44",699.0982,55.9279 +SO46292,1,4/24/2020,Joe Vazquez,"Road-150 Red, 52",3578.27,286.2616 +SO46291,1,4/24/2020,Katelyn Ward,"Road-150 Red, 52",3578.27,286.2616 +SO46293,1,4/24/2020,Katie Rai,"Road-150 Red, 44",3578.27,286.2616 +SO46287,1,4/24/2020,Lucas Flores,"Road-150 Red, 48",3578.27,286.2616 +SO46289,1,4/24/2020,Cameron Griffin,"Road-150 Red, 52",3578.27,286.2616 +SO46288,1,4/24/2020,Jason Jenkins,"Road-150 Red, 44",3578.27,286.2616 +SO46294,1,4/24/2020,Max Alvarez,"Mountain-100 Silver, 42",3399.99,271.9992 +SO46290,1,4/24/2020,Elizabeth Martinez,"Mountain-100 Black, 48",3374.99,269.9992 +SO46298,1,4/25/2020,Robert Robinson,"Road-150 Red, 56",3578.27,286.2616 +SO46297,1,4/25/2020,Kristen Guo,"Road-150 Red, 52",3578.27,286.2616 +SO46296,1,4/25/2020,Sara Reed,"Road-150 Red, 56",3578.27,286.2616 +SO46299,1,4/25/2020,Jay Carlson,"Road-150 Red, 56",3578.27,286.2616 +SO46300,1,4/25/2020,Kelli Xie,"Road-150 Red, 56",3578.27,286.2616 +SO46295,1,4/25/2020,Nicolas Anand,"Road-650 Red, 52",699.0982,55.9279 +SO46303,1,4/26/2020,Veronica Malhotra,"Road-650 Black, 48",699.0982,55.9279 +SO46301,1,4/26/2020,Theodore Suarez,"Road-150 Red, 52",3578.27,286.2616 +SO46302,1,4/26/2020,Kayla Alexander,"Road-150 Red, 62",3578.27,286.2616 +SO46304,1,4/26/2020,Adriana Lopez,"Mountain-100 Black, 44",3374.99,269.9992 +SO46305,1,4/26/2020,Holly Srini,"Road-150 Red, 44",3578.27,286.2616 +SO46309,1,4/27/2020,Leah Hu,"Mountain-100 Black, 44",3374.99,269.9992 +SO46306,1,4/27/2020,Noah Butler,"Road-150 Red, 44",3578.27,286.2616 +SO46310,1,4/27/2020,Marvin Gutierrez,"Road-650 Black, 62",699.0982,55.9279 +SO46308,1,4/27/2020,Fernando Bryant,"Road-150 Red, 62",3578.27,286.2616 +SO46307,1,4/27/2020,Mario Raje,"Road-150 Red, 56",3578.27,286.2616 +SO46311,1,4/28/2020,Yolanda Xie,"Road-150 Red, 56",3578.27,286.2616 +SO46312,1,4/29/2020,Kaitlyn Bailey,"Road-150 Red, 56",3578.27,286.2616 +SO46315,1,4/29/2020,Gabriella Torres,"Road-150 Red, 44",3578.27,286.2616 +SO46314,1,4/29/2020,Arianna Henderson,"Road-150 Red, 48",3578.27,286.2616 +SO46313,1,4/29/2020,Jose Edwards,"Road-150 Red, 52",3578.27,286.2616 +SO46317,1,4/29/2020,Kristi Torres,"Road-650 Black, 60",699.0982,55.9279 +SO46318,1,4/29/2020,Cara Zeng,"Road-150 Red, 48",3578.27,286.2616 +SO46316,1,4/29/2020,Alyssa Smith,"Mountain-100 Black, 48",3374.99,269.9992 +SO46320,1,4/30/2020,Luke Jenkins,"Mountain-100 Black, 48",3374.99,269.9992 +SO46321,1,4/30/2020,James Baker,"Road-650 Red, 52",699.0982,55.9279 +SO46319,1,4/30/2020,Chloe White,"Road-150 Red, 44",3578.27,286.2616 +SO46390,1,5/1/2020,Francisco Chandra,"Road-150 Red, 52",3578.27,286.2616 +SO46392,1,5/1/2020,Jill Moreno,"Road-150 Red, 52",3578.27,286.2616 +SO46391,1,5/1/2020,Danny Suarez,"Road-150 Red, 48",3578.27,286.2616 +SO46393,1,5/1/2020,Bruce Gomez,"Road-150 Red, 56",3578.27,286.2616 +SO46404,1,5/2/2020,Ryan Garcia,"Road-150 Red, 48",3578.27,286.2616 +SO46400,1,5/2/2020,Marshall Zeng,"Road-150 Red, 56",3578.27,286.2616 +SO46398,1,5/2/2020,Julio Serrano,"Road-150 Red, 44",3578.27,286.2616 +SO46401,1,5/2/2020,Mitchell Xie,"Road-150 Red, 62",3578.27,286.2616 +SO46405,1,5/2/2020,Autumn Ma,"Road-150 Red, 62",3578.27,286.2616 +SO46399,1,5/2/2020,Kathleen Rubio,"Road-150 Red, 56",3578.27,286.2616 +SO46402,1,5/2/2020,Kristi Serrano,"Road-150 Red, 52",3578.27,286.2616 +SO46403,1,5/2/2020,Nelson Ramos,"Road-150 Red, 56",3578.27,286.2616 +SO46394,1,5/2/2020,Patrick Torres,"Road-150 Red, 56",3578.27,286.2616 +SO46396,1,5/2/2020,Allison Richardson,"Road-150 Red, 44",3578.27,286.2616 +SO46395,1,5/2/2020,Gary Ortega,"Mountain-100 Silver, 44",3399.99,271.9992 +SO46397,1,5/2/2020,Luke Hughes,"Road-650 Red, 48",699.0982,55.9279 +SO46407,1,5/3/2020,Jonathan Perry,"Road-650 Black, 52",699.0982,55.9279 +SO46408,1,5/3/2020,Morgan Johnson,"Mountain-100 Black, 48",3374.99,269.9992 +SO46406,1,5/3/2020,Mason Rogers,"Road-150 Red, 48",3578.27,286.2616 +SO46410,1,5/4/2020,Raymond Sanchez,"Mountain-100 Black, 38",3374.99,269.9992 +SO46414,1,5/4/2020,Grace Jackson,"Road-650 Black, 44",699.0982,55.9279 +SO46409,1,5/4/2020,Tasha Chander,"Road-150 Red, 52",3578.27,286.2616 +SO46415,1,5/4/2020,Raymond Madan,"Road-150 Red, 62",3578.27,286.2616 +SO46411,1,5/4/2020,Madison Jones,"Road-150 Red, 56",3578.27,286.2616 +SO46412,1,5/4/2020,Seth Bennett,"Road-150 Red, 44",3578.27,286.2616 +SO46413,1,5/4/2020,Aaron Allen,"Mountain-100 Silver, 44",3399.99,271.9992 +SO46418,1,5/5/2020,Anna Martin,"Road-150 Red, 48",3578.27,286.2616 +SO46420,1,5/5/2020,Ernest Liu,"Road-150 Red, 52",3578.27,286.2616 +SO46419,1,5/5/2020,Deborah Yuan,"Mountain-100 Silver, 38",3399.99,271.9992 +SO46417,1,5/5/2020,Trevor Simmons,"Road-150 Red, 56",3578.27,286.2616 +SO46416,1,5/5/2020,Katelyn Sanders,"Road-150 Red, 52",3578.27,286.2616 +SO46421,1,5/5/2020,Summer Raman,"Road-650 Black, 62",699.0982,55.9279 +SO46426,1,5/6/2020,Alexis Thomas,"Mountain-100 Silver, 38",3399.99,271.9992 +SO46423,1,5/6/2020,Thomas Harrison,"Road-150 Red, 52",3578.27,286.2616 +SO46424,1,5/6/2020,Christy Zhou,"Road-150 Red, 48",3578.27,286.2616 +SO46422,1,5/6/2020,Megan Williams,"Road-150 Red, 44",3578.27,286.2616 +SO46428,1,5/6/2020,Bonnie Raje,"Road-150 Red, 44",3578.27,286.2616 +SO46425,1,5/6/2020,Katelyn Mitchell,"Road-150 Red, 52",3578.27,286.2616 +SO46427,1,5/6/2020,Isabelle Price,"Mountain-100 Black, 44",3374.99,269.9992 +SO46434,1,5/7/2020,Keith Shan,"Road-150 Red, 52",3578.27,286.2616 +SO46433,1,5/7/2020,Frederick Sai,"Road-150 Red, 48",3578.27,286.2616 +SO46431,1,5/7/2020,Robert Adams,"Road-150 Red, 62",3578.27,286.2616 +SO46436,1,5/7/2020,Dustin Goldstein,"Mountain-100 Silver, 48",3399.99,271.9992 +SO46435,1,5/7/2020,Troy Suri,"Mountain-100 Black, 38",3374.99,269.9992 +SO46429,1,5/7/2020,Deanna Perez,"Mountain-100 Silver, 42",3399.99,271.9992 +SO46430,1,5/7/2020,Sabrina Blanco,"Road-150 Red, 56",3578.27,286.2616 +SO46432,1,5/7/2020,Daniel Clark,"Road-650 Black, 52",699.0982,55.9279 +SO46442,1,5/8/2020,Angel Cooper,"Road-150 Red, 56",3578.27,286.2616 +SO46437,1,5/8/2020,Roger Anand,"Road-150 Red, 52",3578.27,286.2616 +SO46444,1,5/8/2020,Shawn Luo,"Mountain-100 Black, 48",3374.99,269.9992 +SO46438,1,5/8/2020,Charles Phillips,"Road-150 Red, 52",3578.27,286.2616 +SO46439,1,5/8/2020,Geoffrey Rodriguez,"Road-150 Red, 52",3578.27,286.2616 +SO46440,1,5/8/2020,Meredith Alonso,"Road-150 Red, 48",3578.27,286.2616 +SO46441,1,5/8/2020,Brandon Robinson,"Road-150 Red, 48",3578.27,286.2616 +SO46443,1,5/8/2020,Megan Richardson,"Road-150 Red, 56",3578.27,286.2616 +SO46447,1,5/9/2020,Sabrina Rubio,"Road-150 Red, 48",3578.27,286.2616 +SO46448,1,5/9/2020,Andrea Collins,"Mountain-100 Silver, 38",3399.99,271.9992 +SO46446,1,5/9/2020,Joseph Anderson,"Road-150 Red, 48",3578.27,286.2616 +SO46445,1,5/9/2020,Abigail Clark,"Road-150 Red, 48",3578.27,286.2616 +SO46449,1,5/9/2020,Shannon Sun,"Mountain-100 Silver, 42",3399.99,271.9992 +SO46456,1,5/10/2020,Devin Sanders,"Mountain-100 Silver, 44",3399.99,271.9992 +SO46451,1,5/10/2020,Ian Rodriguez,"Road-150 Red, 62",3578.27,286.2616 +SO46450,1,5/10/2020,Jasmine Hall,"Road-150 Red, 56",3578.27,286.2616 +SO46454,1,5/10/2020,Preston Prasad,"Road-150 Red, 62",3578.27,286.2616 +SO46453,1,5/10/2020,Jarrod Sara,"Road-150 Red, 52",3578.27,286.2616 +SO46457,1,5/10/2020,Sam Wilson,"Road-650 Red, 62",699.0982,55.9279 +SO46455,1,5/10/2020,Paul Suurs,"Road-150 Red, 56",3578.27,286.2616 +SO46452,1,5/10/2020,Luke Perry,"Mountain-100 Black, 42",3374.99,269.9992 +SO46461,1,5/11/2020,Hany Morcos,"Road-150 Red, 44",3578.27,286.2616 +SO46460,1,5/11/2020,Bailey Rogers,"Road-150 Red, 48",3578.27,286.2616 +SO46458,1,5/11/2020,Morgan Thomas,"Road-150 Red, 62",3578.27,286.2616 +SO46459,1,5/11/2020,Justin Gonzales,"Road-150 Red, 52",3578.27,286.2616 +SO46462,1,5/11/2020,Kayla Lewis,"Mountain-100 Silver, 42",3399.99,271.9992 +SO46463,1,5/12/2020,Jasmine Stewart,"Mountain-100 Black, 38",3374.99,269.9992 +SO46467,1,5/12/2020,Holly Mehta,"Road-150 Red, 56",3578.27,286.2616 +SO46472,1,5/12/2020,Devin Taylor,"Mountain-100 Silver, 38",3399.99,271.9992 +SO46464,1,5/12/2020,Jonathan Anderson,"Road-150 Red, 62",3578.27,286.2616 +SO46465,1,5/12/2020,Madeline Campbell,"Road-150 Red, 44",3578.27,286.2616 +SO46466,1,5/12/2020,Kaitlyn Alexander,"Road-150 Red, 44",3578.27,286.2616 +SO46471,1,5/12/2020,Rodney Serrano,"Road-150 Red, 62",3578.27,286.2616 +SO46473,1,5/12/2020,Julio Vazquez,"Road-150 Red, 44",3578.27,286.2616 +SO46470,1,5/12/2020,Katherine Howard,"Road-650 Red, 60",699.0982,55.9279 +SO46474,1,5/12/2020,Ronald Perez,"Road-650 Black, 52",699.0982,55.9279 +SO46468,1,5/12/2020,Abigail Morgan,"Road-150 Red, 44",3578.27,286.2616 +SO46469,1,5/12/2020,Omar Lin,"Road-650 Black, 58",699.0982,55.9279 +SO46478,1,5/13/2020,Willie Tang,"Road-650 Red, 44",699.0982,55.9279 +SO46475,1,5/13/2020,Stacey Cai,"Road-650 Red, 60",699.0982,55.9279 +SO46477,1,5/13/2020,Ann Martinez,"Mountain-100 Silver, 44",3399.99,271.9992 +SO46476,1,5/13/2020,James Alexander,"Mountain-100 Black, 44",3374.99,269.9992 +SO46480,1,5/14/2020,Isaac Peterson,"Mountain-100 Silver, 48",3399.99,271.9992 +SO46479,1,5/14/2020,Johnathan Chapman,"Road-150 Red, 62",3578.27,286.2616 +SO46482,1,5/14/2020,Francisco Gonzalez,"Mountain-100 Silver, 44",3399.99,271.9992 +SO46481,1,5/14/2020,Ruth Garcia,"Road-150 Red, 52",3578.27,286.2616 +SO46488,1,5/15/2020,Rodney Gutierrez,"Road-150 Red, 48",3578.27,286.2616 +SO46486,1,5/15/2020,Ronald Sara,"Road-650 Black, 58",699.0982,55.9279 +SO46484,1,5/15/2020,Jeremy Young,"Road-150 Red, 48",3578.27,286.2616 +SO46485,1,5/15/2020,Chloe Hughes,"Road-150 Red, 52",3578.27,286.2616 +SO46483,1,5/15/2020,Stephanie Bailey,"Road-150 Red, 48",3578.27,286.2616 +SO46487,1,5/15/2020,Chloe Roberts,"Road-650 Black, 44",699.0982,55.9279 +SO46490,1,5/16/2020,Sophia Wright,"Road-150 Red, 52",3578.27,286.2616 +SO46489,1,5/16/2020,Hannah Martinez,"Road-150 Red, 52",3578.27,286.2616 +SO46491,1,5/17/2020,Brooke Stewart,"Road-150 Red, 56",3578.27,286.2616 +SO46496,1,5/17/2020,Theresa Navarro,"Road-150 Red, 48",3578.27,286.2616 +SO46495,1,5/17/2020,Cassandra Sara,"Road-150 Red, 44",3578.27,286.2616 +SO46494,1,5/17/2020,Meredith Vance,"Road-150 Red, 52",3578.27,286.2616 +SO46492,1,5/17/2020,Noah Scott,"Road-150 Red, 48",3578.27,286.2616 +SO46493,1,5/17/2020,Juan Watson,"Road-650 Red, 48",699.0982,55.9279 +SO46504,1,5/18/2020,Adrian Cooper,"Road-650 Black, 52",699.0982,55.9279 +SO46497,1,5/18/2020,Karen Lu,"Road-150 Red, 62",3578.27,286.2616 +SO46499,1,5/18/2020,Alexis Jones,"Road-150 Red, 62",3578.27,286.2616 +SO46500,1,5/18/2020,Dominique Sanchez,"Road-150 Red, 56",3578.27,286.2616 +SO46505,1,5/18/2020,Kristine Sandberg,"Mountain-100 Silver, 48",3399.99,271.9992 +SO46506,1,5/18/2020,Gilbert Liang,"Mountain-100 Black, 42",3374.99,269.9992 +SO46498,1,5/18/2020,Isabella Edwards,"Road-150 Red, 52",3578.27,286.2616 +SO46503,1,5/18/2020,Alexandra Harris,"Road-150 Red, 62",3578.27,286.2616 +SO46507,1,5/18/2020,Molly Perez,"Road-650 Red, 58",699.0982,55.9279 +SO46502,1,5/18/2020,Taylor Henderson,"Road-650 Red, 48",699.0982,55.9279 +SO46501,1,5/18/2020,Clifford Arun,"Road-650 Red, 48",699.0982,55.9279 +SO46514,1,5/19/2020,Cedric Wang,"Road-650 Black, 52",699.0982,55.9279 +SO46515,1,5/19/2020,Jasmine Gray,"Road-650 Black, 48",699.0982,55.9279 +SO46519,1,5/19/2020,April Jai,"Road-150 Red, 62",3578.27,286.2616 +SO46520,1,5/19/2020,Kaitlyn Russell,"Road-150 Red, 48",3578.27,286.2616 +SO46510,1,5/19/2020,Isabella Walker,"Road-150 Red, 44",3578.27,286.2616 +SO46511,1,5/19/2020,Molly Prasad,"Road-150 Red, 52",3578.27,286.2616 +SO46513,1,5/19/2020,Brandon Garcia,"Road-150 Red, 52",3578.27,286.2616 +SO46518,1,5/19/2020,Margaret Lu,"Road-150 Red, 56",3578.27,286.2616 +SO46517,1,5/19/2020,Deborah Shan,"Road-150 Red, 52",3578.27,286.2616 +SO46509,1,5/19/2020,Jocelyn Long,"Road-150 Red, 62",3578.27,286.2616 +SO46512,1,5/19/2020,Mindy Jai,"Road-150 Red, 44",3578.27,286.2616 +SO46516,1,5/19/2020,Ashley Martin,"Mountain-100 Black, 48",3374.99,269.9992 +SO46508,1,5/19/2020,Reginald Gomez,"Mountain-100 Black, 42",3374.99,269.9992 +SO46524,1,5/20/2020,Sarah Coleman,"Mountain-100 Black, 48",3374.99,269.9992 +SO46526,1,5/20/2020,Jenny Sun,"Mountain-100 Silver, 48",3399.99,271.9992 +SO46522,1,5/20/2020,Eduardo Allen,"Road-150 Red, 48",3578.27,286.2616 +SO46521,1,5/20/2020,Charles Evans,"Road-150 Red, 62",3578.27,286.2616 +SO46523,1,5/20/2020,Antonio Butler,"Road-150 Red, 52",3578.27,286.2616 +SO46525,1,5/20/2020,Connor Ross,"Road-150 Red, 56",3578.27,286.2616 +SO46527,1,5/20/2020,Gerald Arun,"Road-650 Black, 60",699.0982,55.9279 +SO46530,1,5/21/2020,Christian Perry,"Road-150 Red, 52",3578.27,286.2616 +SO46535,1,5/21/2020,Tracy Andersen,"Road-150 Red, 62",3578.27,286.2616 +SO46534,1,5/21/2020,Victoria Cook,"Road-150 Red, 48",3578.27,286.2616 +SO46532,1,5/21/2020,Autumn Zheng,"Road-650 Black, 44",699.0982,55.9279 +SO46529,1,5/21/2020,Jonathan Campbell,"Road-150 Red, 56",3578.27,286.2616 +SO46531,1,5/21/2020,Sarah Thompson,"Road-150 Red, 62",3578.27,286.2616 +SO46536,1,5/21/2020,Alisha Nath,"Road-150 Red, 44",3578.27,286.2616 +SO46528,1,5/21/2020,Kari Malhotra,"Road-150 Red, 44",3578.27,286.2616 +SO46533,1,5/21/2020,Connor King,"Mountain-100 Black, 38",3374.99,269.9992 +SO46539,1,5/22/2020,Rafael Sharma,"Road-150 Red, 56",3578.27,286.2616 +SO46538,1,5/22/2020,Kristen Gao,"Road-150 Red, 62",3578.27,286.2616 +SO46537,1,5/22/2020,Desiree Dominguez,"Mountain-100 Silver, 38",3399.99,271.9992 +SO46541,1,5/22/2020,Chloe Johnson,"Road-150 Red, 62",3578.27,286.2616 +SO46540,1,5/22/2020,Shannon Ruiz,"Road-150 Red, 56",3578.27,286.2616 +SO46554,1,5/23/2020,Mayra Raman,"Road-150 Red, 52",3578.27,286.2616 +SO46553,1,5/23/2020,Autumn Liu,"Road-150 Red, 48",3578.27,286.2616 +SO46545,1,5/23/2020,Juan Murphy,"Road-150 Red, 62",3578.27,286.2616 +SO46556,1,5/23/2020,Christine Stone,"Road-650 Red, 44",699.0982,55.9279 +SO46542,1,5/23/2020,Bryant Garcia,"Mountain-100 Silver, 48",3399.99,271.9992 +SO46543,1,5/23/2020,Crystal Liang,"Mountain-100 Silver, 42",3399.99,271.9992 +SO46555,1,5/23/2020,Max Serrano,"Mountain-100 Black, 48",3374.99,269.9992 +SO46546,1,5/23/2020,Jeremy Richardson,"Road-150 Red, 62",3578.27,286.2616 +SO46544,1,5/23/2020,Jordyn Bryant,"Road-150 Red, 44",3578.27,286.2616 +SO46547,1,5/23/2020,Vanessa Russell,"Road-150 Red, 52",3578.27,286.2616 +SO46549,1,5/23/2020,Sean Sanchez,"Road-150 Red, 52",3578.27,286.2616 +SO46548,1,5/23/2020,Robert Hernandez,"Road-150 Red, 62",3578.27,286.2616 +SO46552,1,5/23/2020,Amanda Ramirez,"Road-650 Red, 48",699.0982,55.9279 +SO46551,1,5/23/2020,Arianna Gray,"Road-650 Red, 52",699.0982,55.9279 +SO46550,1,5/23/2020,Robert Flores,"Mountain-100 Black, 44",3374.99,269.9992 +SO46560,1,5/24/2020,Kevin Wright,"Mountain-100 Silver, 38",3399.99,271.9992 +SO46562,1,5/24/2020,Jamie Ortega,"Road-150 Red, 44",3578.27,286.2616 +SO46558,1,5/24/2020,Isaiah Perez,"Road-150 Red, 56",3578.27,286.2616 +SO46557,1,5/24/2020,Thomas Jai,"Road-150 Red, 62",3578.27,286.2616 +SO46559,1,5/24/2020,Jonathan Smith,"Road-150 Red, 62",3578.27,286.2616 +SO46563,1,5/24/2020,Brent Guo,"Road-650 Red, 58",699.0982,55.9279 +SO46561,1,5/24/2020,Rafael Yuan,"Road-150 Red, 48",3578.27,286.2616 +SO46565,1,5/25/2020,Thomas Zhang,"Road-150 Red, 44",3578.27,286.2616 +SO46566,1,5/25/2020,Jamie Zeng,"Road-150 Red, 44",3578.27,286.2616 +SO46568,1,5/25/2020,Alexandra Richardson,"Road-150 Red, 48",3578.27,286.2616 +SO46567,1,5/25/2020,Ian Lewis,"Road-150 Red, 52",3578.27,286.2616 +SO46564,1,5/25/2020,Jimmy Gutierrez,"Mountain-100 Silver, 48",3399.99,271.9992 +SO46569,1,5/26/2020,Cody Cook,"Road-150 Red, 48",3578.27,286.2616 +SO46575,1,5/26/2020,Monica Vance,"Mountain-100 Black, 48",3374.99,269.9992 +SO46574,1,5/26/2020,Kristy Rubio,"Mountain-100 Black, 38",3374.99,269.9992 +SO46570,1,5/26/2020,Arianna Ward,"Road-150 Red, 52",3578.27,286.2616 +SO46572,1,5/26/2020,Trevor Hughes,"Road-150 Red, 56",3578.27,286.2616 +SO46573,1,5/26/2020,Tammy Smith,"Road-150 Red, 56",3578.27,286.2616 +SO46571,1,5/26/2020,Erick Fernandez,"Road-150 Red, 52",3578.27,286.2616 +SO46583,1,5/27/2020,Jerome Suarez,"Road-150 Red, 62",3578.27,286.2616 +SO46576,1,5/27/2020,Alisha She,"Road-150 Red, 62",3578.27,286.2616 +SO46584,1,5/27/2020,Omar Liu,"Mountain-100 Black, 38",3374.99,269.9992 +SO46579,1,5/27/2020,Bryant Srini,"Road-150 Red, 44",3578.27,286.2616 +SO46580,1,5/27/2020,Ruben Subram,"Road-150 Red, 62",3578.27,286.2616 +SO46581,1,5/27/2020,Ashley Thomas,"Road-150 Red, 56",3578.27,286.2616 +SO46578,1,5/27/2020,Ethan Shan,"Road-150 Red, 56",3578.27,286.2616 +SO46582,1,5/27/2020,Samuel Hill,"Road-150 Red, 56",3578.27,286.2616 +SO46577,1,5/27/2020,Benjamin Moore,"Road-150 Red, 44",3578.27,286.2616 +SO46587,1,5/28/2020,Hailey Cox,"Road-150 Red, 56",3578.27,286.2616 +SO46586,1,5/28/2020,Erin Rogers,"Road-150 Red, 52",3578.27,286.2616 +SO46585,1,5/28/2020,Joshua Miller,"Road-150 Red, 56",3578.27,286.2616 +SO46589,1,5/28/2020,Britta Simon,"Road-650 Red, 44",699.0982,55.9279 +SO46588,1,5/28/2020,Cesar Fernandez,"Mountain-100 Black, 48",3374.99,269.9992 +SO46595,1,5/29/2020,Julian Henderson,"Road-150 Red, 48",3578.27,286.2616 +SO46592,1,5/29/2020,Ian Washington,"Road-150 Red, 52",3578.27,286.2616 +SO46590,1,5/29/2020,Victoria Garcia,"Road-150 Red, 48",3578.27,286.2616 +SO46594,1,5/29/2020,Rachel Powell,"Road-150 Red, 56",3578.27,286.2616 +SO46593,1,5/29/2020,Brianna Morris,"Road-150 Red, 56",3578.27,286.2616 +SO46591,1,5/29/2020,Samantha Taylor,"Road-150 Red, 62",3578.27,286.2616 +SO46596,1,5/29/2020,Patricia Chapman,"Mountain-100 Black, 42",3374.99,269.9992 +SO46597,1,5/29/2020,Ricardo Nath,"Mountain-100 Black, 38",3374.99,269.9992 +SO46603,1,5/30/2020,Clayton Sharma,"Mountain-100 Silver, 42",3399.99,271.9992 +SO46599,1,5/30/2020,Sierra Parker,"Road-150 Red, 62",3578.27,286.2616 +SO46598,1,5/30/2020,Evelyn Chandra,"Road-150 Red, 44",3578.27,286.2616 +SO46602,1,5/30/2020,Troy Martinez,"Road-150 Red, 48",3578.27,286.2616 +SO46600,1,5/30/2020,Mayra Madan,"Road-650 Black, 60",699.0982,55.9279 +SO46601,1,5/30/2020,Daniel Lee,"Mountain-100 Silver, 42",3399.99,271.9992 +SO46676,1,5/31/2020,Latasha Alvarez,"Road-550-W Yellow, 42",1000.4375,80.035 +SO46678,1,5/31/2020,Tony Tang,"Road-650 Red, 52",782.99,62.6392 +SO46677,1,5/31/2020,Bethany Nara,"Road-250 Red, 58",2181.5625,174.525 +SO46680,1,5/31/2020,Philip Hernandez,"Road-250 Red, 58",2181.5625,174.525 +SO46679,1,5/31/2020,Eduardo Williams,"Road-250 Black, 44",2181.5625,174.525 +SO46682,1,5/31/2020,Monique Ortega,"Mountain-200 Black, 38",2049.0982,163.9279 +SO46681,1,5/31/2020,Lacey Yuan,"Mountain-200 Black, 46",2049.0982,163.9279 +SO46683,1,5/31/2020,Jennifer Green,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO46685,1,6/1/2020,Isaiah Sanchez,"Road-250 Black, 52",2181.5625,174.525 +SO46686,1,6/1/2020,Sheila Romero,"Road-650 Red, 62",782.99,62.6392 +SO46684,1,6/1/2020,Leah Cai,"Road-550-W Yellow, 38",1000.4375,80.035 +SO46695,1,6/2/2020,Austin Hayes,"Mountain-200 Black, 38",2049.0982,163.9279 +SO46687,1,6/2/2020,Adriana Martinez,"Road-250 Black, 58",2181.5625,174.525 +SO46697,1,6/2/2020,Chad Yuan,"Road-250 Red, 58",2181.5625,174.525 +SO46696,1,6/2/2020,Tamara Yuan,"Road-250 Red, 52",2443.35,195.468 +SO46698,1,6/2/2020,Roberto Moreno,"Road-250 Black, 52",2181.5625,174.525 +SO46689,1,6/2/2020,Kevin Baker,"Road-250 Red, 48",2443.35,195.468 +SO46690,1,6/2/2020,Trisha Ma,"Road-250 Red, 44",2443.35,195.468 +SO46692,1,6/2/2020,Cassidy Bryant,"Road-250 Red, 48",2443.35,195.468 +SO46693,1,6/2/2020,Ethan Simmons,"Road-250 Black, 44",2181.5625,174.525 +SO46694,1,6/2/2020,Isabella Hernandez,"Road-250 Black, 44",2181.5625,174.525 +SO46691,1,6/2/2020,Xavier Moore,"Road-250 Red, 44",2443.35,195.468 +SO46688,1,6/2/2020,Vanessa Bryant,"Road-250 Red, 48",2443.35,195.468 +SO46699,1,6/2/2020,Ricardo Goel,"Road-650 Red, 48",782.99,62.6392 +SO46704,1,6/3/2020,Keith Deng,"Road-250 Red, 52",2443.35,195.468 +SO46705,1,6/3/2020,Daniel Harris,"Road-250 Red, 52",2443.35,195.468 +SO46701,1,6/3/2020,Erika Munoz,"Road-250 Black, 48",2181.5625,174.525 +SO46702,1,6/3/2020,Mackenzie Ramirez,"Road-250 Red, 48",2443.35,195.468 +SO46707,1,6/3/2020,Joe Jordan,"Road-650 Black, 62",782.99,62.6392 +SO46708,1,6/3/2020,Alison Kumar,"Road-250 Black, 52",2181.5625,174.525 +SO46703,1,6/3/2020,Johnathan Kapoor,"Road-650 Black, 62",782.99,62.6392 +SO46700,1,6/3/2020,Kaitlyn Bennett,"Road-550-W Yellow, 38",1000.4375,80.035 +SO46706,1,6/3/2020,Connor Li,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO46709,1,6/4/2020,Calvin Luo,"Road-550-W Yellow, 44",1000.4375,80.035 +SO46713,1,6/4/2020,Sean Baker,"Road-250 Red, 58",2181.5625,174.525 +SO46715,1,6/4/2020,Stephanie Cooper,"Road-250 Black, 48",2181.5625,174.525 +SO46716,1,6/4/2020,Caleb Long,"Road-250 Black, 48",2181.5625,174.525 +SO46717,1,6/4/2020,Yolanda Sharma,"Road-250 Red, 44",2443.35,195.468 +SO46712,1,6/4/2020,Manuel Garcia,"Road-250 Black, 44",2181.5625,174.525 +SO46714,1,6/4/2020,Michelle James,"Road-250 Red, 44",2443.35,195.468 +SO46711,1,6/4/2020,Gabriella Collins,"Road-250 Red, 48",2443.35,195.468 +SO46718,1,6/4/2020,Casey Munoz,"Mountain-200 Black, 42",2049.0982,163.9279 +SO46710,1,6/4/2020,Erick Sai,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO46719,1,6/5/2020,Edgar Sanchez,"Mountain-200 Black, 46",2049.0982,163.9279 +SO46723,1,6/5/2020,Brooke Murphy,"Road-250 Red, 44",2443.35,195.468 +SO46728,1,6/5/2020,Lance Ortega,"Mountain-200 Black, 38",2049.0982,163.9279 +SO46720,1,6/5/2020,Andres Deng,"Road-250 Red, 58",2181.5625,174.525 +SO46726,1,6/5/2020,Carolyn Garcia,"Road-250 Black, 44",2181.5625,174.525 +SO46727,1,6/5/2020,Carolyn Rodriguez,"Road-250 Red, 52",2443.35,195.468 +SO46725,1,6/5/2020,Willie Lu,"Road-250 Red, 48",2443.35,195.468 +SO46722,1,6/5/2020,Logan Garcia,"Road-550-W Yellow, 42",1000.4375,80.035 +SO46721,1,6/5/2020,Robyn Gomez,"Road-250 Red, 52",2443.35,195.468 +SO46729,1,6/5/2020,Luis Allen,"Road-650 Red, 58",782.99,62.6392 +SO46724,1,6/5/2020,Marcus Coleman,"Road-250 Red, 44",2443.35,195.468 +SO46733,1,6/6/2020,Carmen Garcia,"Road-250 Black, 48",2181.5625,174.525 +SO46734,1,6/6/2020,Eugene Zhu,"Road-250 Black, 48",2181.5625,174.525 +SO46735,1,6/6/2020,Jenna Mitchell,"Road-250 Red, 58",2181.5625,174.525 +SO46732,1,6/6/2020,Gregory Xie,"Road-550-W Yellow, 42",1000.4375,80.035 +SO46730,1,6/6/2020,Brenda Chandra,"Road-250 Black, 58",2181.5625,174.525 +SO46731,1,6/6/2020,Shawn Shan,"Road-250 Red, 58",2181.5625,174.525 +SO46736,1,6/6/2020,Katie Kumar,"Mountain-200 Black, 42",2049.0982,163.9279 +SO46737,1,6/6/2020,Wesley Gao,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO46738,1,6/6/2020,Walter Dominguez,"Mountain-200 Black, 46",2049.0982,163.9279 +SO46740,1,6/7/2020,Max Moyer,"Road-250 Black, 58",2181.5625,174.525 +SO46743,1,6/7/2020,Hector Moreno,"Road-250 Black, 44",2181.5625,174.525 +SO46744,1,6/7/2020,Ruth Raman,"Road-250 Red, 52",2443.35,195.468 +SO46739,1,6/7/2020,Jonathon Hernandez,"Road-250 Black, 44",2181.5625,174.525 +SO46742,1,6/7/2020,Olivia Murphy,"Mountain-200 Black, 38",2049.0982,163.9279 +SO46741,1,6/7/2020,Joe Alonso,"Road-250 Red, 52",2443.35,195.468 +SO46747,1,6/8/2020,Terry Chander,"Mountain-200 Black, 42",2049.0982,163.9279 +SO46748,1,6/8/2020,Morgan Garcia,"Mountain-200 Black, 42",2049.0982,163.9279 +SO46745,1,6/8/2020,Morgan Blue,"Road-250 Red, 48",2443.35,195.468 +SO46746,1,6/8/2020,Destiny Powell,"Road-250 Red, 44",2443.35,195.468 +SO46749,1,6/8/2020,Logan Hernandez,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO46751,1,6/9/2020,Jason Foster,"Road-250 Black, 52",2181.5625,174.525 +SO46756,1,6/9/2020,Zachary Patterson,"Road-550-W Yellow, 40",1000.4375,80.035 +SO46752,1,6/9/2020,Darryl Xu,"Road-650 Black, 52",782.99,62.6392 +SO46750,1,6/9/2020,Hector Ortega,"Road-250 Black, 52",2181.5625,174.525 +SO46753,1,6/9/2020,Tiffany Yang,"Road-250 Black, 58",2181.5625,174.525 +SO46755,1,6/9/2020,Crystal Huang,"Road-650 Black, 52",782.99,62.6392 +SO46754,1,6/9/2020,Alfredo Ortega,"Road-650 Red, 58",782.99,62.6392 +SO46768,1,6/10/2020,Barry Lopez,"Road-650 Black, 44",782.99,62.6392 +SO46764,1,6/10/2020,Julia Foster,"Mountain-200 Black, 42",2049.0982,163.9279 +SO46757,1,6/10/2020,Isaac Adams,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO46766,1,6/10/2020,Larry Blanco,"Road-250 Red, 48",2443.35,195.468 +SO46759,1,6/10/2020,Erica Lin,"Road-250 Black, 44",2181.5625,174.525 +SO46761,1,6/10/2020,Douglas Perez,"Road-650 Red, 62",782.99,62.6392 +SO46758,1,6/10/2020,Kaitlyn Mitchell,"Road-550-W Yellow, 44",1000.4375,80.035 +SO46760,1,6/10/2020,Chloe Anderson,"Road-550-W Yellow, 44",1000.4375,80.035 +SO46765,1,6/10/2020,Andres Kumar,"Road-650 Black, 58",782.99,62.6392 +SO46762,1,6/10/2020,Jessica Johnson,"Road-250 Red, 44",2443.35,195.468 +SO46763,1,6/10/2020,Natasha Romero,"Road-250 Black, 48",2181.5625,174.525 +SO46767,1,6/10/2020,Grant Rai,"Mountain-200 Black, 46",2049.0982,163.9279 +SO46776,1,6/11/2020,Julia Wood,"Mountain-200 Black, 42",2049.0982,163.9279 +SO46773,1,6/11/2020,Dalton Brooks,"Road-250 Red, 58",2181.5625,174.525 +SO46772,1,6/11/2020,Jose Moore,"Road-250 Black, 48",2181.5625,174.525 +SO46774,1,6/11/2020,J�sus Suarez,"Road-250 Black, 48",2181.5625,174.525 +SO46771,1,6/11/2020,Alexandria Morris,"Road-250 Black, 52",2181.5625,174.525 +SO46769,1,6/11/2020,Ruth Mehta,"Road-250 Black, 52",2181.5625,174.525 +SO46770,1,6/11/2020,Craig Navarro,"Road-250 Red, 52",2443.35,195.468 +SO46775,1,6/11/2020,Thomas Ross,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO46786,1,6/12/2020,Dalton Watson,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO46779,1,6/12/2020,Karla Raji,"Road-250 Black, 52",2181.5625,174.525 +SO46783,1,6/12/2020,Thomas Hall,"Road-650 Black, 62",782.99,62.6392 +SO46781,1,6/12/2020,Morgan Rivera,"Road-250 Black, 58",2181.5625,174.525 +SO46782,1,6/12/2020,Marcus Wilson,"Road-250 Red, 58",2181.5625,174.525 +SO46785,1,6/12/2020,Jonathan Diaz,"Road-250 Black, 44",2181.5625,174.525 +SO46784,1,6/12/2020,Megan Gray,"Road-250 Black, 48",2181.5625,174.525 +SO46787,1,6/12/2020,Edwin Huang,"Road-650 Black, 58",782.99,62.6392 +SO46788,1,6/12/2020,Morgan Young,"Mountain-200 Black, 38",2049.0982,163.9279 +SO46780,1,6/12/2020,Morgan Harris,"Road-250 Black, 58",2181.5625,174.525 +SO46778,1,6/12/2020,Blake Collins,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO46777,1,6/12/2020,Alexia Foster,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO46790,1,6/13/2020,Grace Harris,"Road-250 Black, 58",2181.5625,174.525 +SO46793,1,6/13/2020,Elijah Adams,"Road-250 Black, 48",2181.5625,174.525 +SO46791,1,6/13/2020,Antonio Bryant,"Road-250 Red, 48",2443.35,195.468 +SO46792,1,6/13/2020,Jordyn Butler,"Road-250 Black, 44",2181.5625,174.525 +SO46797,1,6/13/2020,Sheena Pal,"Road-250 Red, 58",2181.5625,174.525 +SO46798,1,6/13/2020,Anna Rogers,"Road-250 Red, 44",2443.35,195.468 +SO46794,1,6/13/2020,Sophia Green,"Road-250 Black, 44",2181.5625,174.525 +SO46795,1,6/13/2020,Antonio Perry,"Mountain-200 Black, 46",2049.0982,163.9279 +SO46796,1,6/13/2020,Sophia Turner,"Mountain-200 Black, 42",2049.0982,163.9279 +SO46789,1,6/13/2020,Ruth Schmidt,"Mountain-200 Black, 38",2049.0982,163.9279 +SO46801,1,6/14/2020,Charles Thomas,"Road-250 Red, 44",2443.35,195.468 +SO46800,1,6/14/2020,Destiny Murphy,"Road-250 Red, 52",2443.35,195.468 +SO46799,1,6/14/2020,Miguel Roberts,"Road-250 Red, 58",2181.5625,174.525 +SO46802,1,6/14/2020,Isaac Watson,"Road-650 Black, 62",782.99,62.6392 +SO46803,1,6/15/2020,Cole Stewart,"Road-250 Black, 58",2181.5625,174.525 +SO46805,1,6/15/2020,Patrick Gray,"Road-250 Black, 44",2181.5625,174.525 +SO46808,1,6/15/2020,Summer Madan,"Mountain-200 Black, 42",2049.0982,163.9279 +SO46807,1,6/15/2020,Clayton Jai,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO46806,1,6/15/2020,Rafael Xu,"Road-250 Red, 52",2443.35,195.468 +SO46804,1,6/15/2020,Kristi Kapoor,"Road-650 Red, 60",782.99,62.6392 +SO46810,1,6/16/2020,Yvonne Schleger,"Road-250 Red, 52",2443.35,195.468 +SO46818,1,6/16/2020,Louis He,"Road-250 Red, 48",2443.35,195.468 +SO46819,1,6/16/2020,Clinton Gutierrez,"Road-250 Red, 44",2443.35,195.468 +SO46815,1,6/16/2020,Madison Griffin,"Road-250 Black, 48",2181.5625,174.525 +SO46811,1,6/16/2020,Maria Morgan,"Road-250 Red, 48",2443.35,195.468 +SO46812,1,6/16/2020,Adam Green,"Road-250 Red, 58",2181.5625,174.525 +SO46816,1,6/16/2020,Chloe Bryant,"Road-250 Red, 52",2443.35,195.468 +SO46814,1,6/16/2020,Wyatt Walker,"Road-250 Red, 58",2181.5625,174.525 +SO46813,1,6/16/2020,Gabrielle Butler,"Road-250 Black, 58",2181.5625,174.525 +SO46809,1,6/16/2020,Joe Gill,"Road-250 Red, 58",2181.5625,174.525 +SO46817,1,6/16/2020,Madeline Nelson,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO46820,1,6/17/2020,Gregory Andersen,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO46823,1,6/17/2020,Samuel King,"Road-650 Red, 60",782.99,62.6392 +SO46822,1,6/17/2020,Jamie Harrison,"Road-650 Red, 62",782.99,62.6392 +SO46825,1,6/17/2020,Derek Raje,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO46826,1,6/17/2020,Jaclyn Shen,"Mountain-200 Black, 42",2049.0982,163.9279 +SO46821,1,6/17/2020,Alexandria Wood,"Road-250 Black, 52",2181.5625,174.525 +SO46824,1,6/17/2020,Katrina Nara,"Road-550-W Yellow, 42",1000.4375,80.035 +SO46829,1,6/18/2020,Haley Adams,"Road-250 Red, 48",2443.35,195.468 +SO46830,1,6/18/2020,Orlando Rubio,"Road-650 Black, 62",782.99,62.6392 +SO46832,1,6/18/2020,Kimberly Watson,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO46834,1,6/18/2020,Fernando Wright,"Road-250 Black, 58",2181.5625,174.525 +SO46833,1,6/18/2020,Mario Goel,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO46827,1,6/18/2020,Bryan Bailey,"Road-250 Black, 44",2181.5625,174.525 +SO46828,1,6/18/2020,Stephanie Wood,"Road-550-W Yellow, 42",1000.4375,80.035 +SO46831,1,6/18/2020,Carson Perry,"Road-250 Red, 48",2443.35,195.468 +SO46840,1,6/19/2020,Ramon Huang,"Road-250 Red, 48",2443.35,195.468 +SO46841,1,6/19/2020,Gabriella Morris,"Road-250 Red, 58",2181.5625,174.525 +SO46837,1,6/19/2020,Angel Ramirez,"Road-550-W Yellow, 38",1000.4375,80.035 +SO46835,1,6/19/2020,Ross Munoz,"Road-250 Red, 58",2181.5625,174.525 +SO46836,1,6/19/2020,Brendan Kumar,"Road-250 Black, 52",2181.5625,174.525 +SO46842,1,6/19/2020,Nina Goel,"Road-650 Red, 58",782.99,62.6392 +SO46844,1,6/19/2020,Gloria Ruiz,"Mountain-200 Black, 38",2049.0982,163.9279 +SO46838,1,6/19/2020,Jennifer Sanders,"Road-250 Black, 48",2181.5625,174.525 +SO46839,1,6/19/2020,Victoria Richardson,"Road-250 Black, 48",2181.5625,174.525 +SO46843,1,6/19/2020,Clifford Chapman,"Road-250 Black, 48",2181.5625,174.525 +SO46853,1,6/20/2020,Regina Sai,"Road-250 Red, 44",2443.35,195.468 +SO46854,1,6/20/2020,Joanna Ashe,"Road-250 Black, 48",2181.5625,174.525 +SO46849,1,6/20/2020,Brianna Gray,"Road-250 Red, 52",2443.35,195.468 +SO46851,1,6/20/2020,Andrea Turner,"Mountain-200 Black, 42",2049.0982,163.9279 +SO46848,1,6/20/2020,Ross Martin,"Road-250 Red, 58",2181.5625,174.525 +SO46845,1,6/20/2020,Geoffrey Gonzalez,"Mountain-200 Black, 38",2049.0982,163.9279 +SO46852,1,6/20/2020,Erik Suarez,"Road-650 Black, 58",782.99,62.6392 +SO46847,1,6/20/2020,Jason Gonzales,"Road-250 Red, 58",2181.5625,174.525 +SO46850,1,6/20/2020,Madeline Hall,"Road-250 Red, 52",2443.35,195.468 +SO46846,1,6/20/2020,Alicia Shen,"Road-250 Black, 44",2181.5625,174.525 +SO46859,1,6/21/2020,Jerome Torres,"Road-250 Red, 52",2443.35,195.468 +SO46858,1,6/21/2020,Olivia Garcia,"Road-250 Red, 52",2443.35,195.468 +SO46857,1,6/21/2020,Dalton Parker,"Road-250 Red, 58",2181.5625,174.525 +SO46855,1,6/21/2020,Dana Dominguez,"Road-250 Black, 58",2181.5625,174.525 +SO46856,1,6/21/2020,Robert Hill,"Road-250 Red, 52",2443.35,195.468 +SO46861,1,6/21/2020,Corey She,"Road-250 Black, 52",2181.5625,174.525 +SO46860,1,6/21/2020,Katherine Flores,"Road-250 Red, 58",2181.5625,174.525 +SO46864,1,6/22/2020,Evelyn Sara,"Road-250 Black, 44",2181.5625,174.525 +SO46865,1,6/22/2020,Donald Suri,"Road-250 Black, 48",2181.5625,174.525 +SO46863,1,6/22/2020,Jackson Campbell,"Mountain-200 Black, 46",2049.0982,163.9279 +SO46862,1,6/22/2020,Deb Torres,"Mountain-200 Black, 46",2049.0982,163.9279 +SO46867,1,6/22/2020,Jennifer Foster,"Road-250 Black, 52",2181.5625,174.525 +SO46866,1,6/22/2020,Joe Sanz,"Road-250 Red, 48",2443.35,195.468 +SO46868,1,6/22/2020,Gloria Romero,"Road-250 Red, 48",2443.35,195.468 +SO46869,1,6/23/2020,Theodore Torres,"Road-250 Black, 58",2181.5625,174.525 +SO46870,1,6/23/2020,Gerrit Straatsma,"Road-250 Red, 44",2443.35,195.468 +SO46871,1,6/23/2020,Logan Li,"Road-250 Red, 52",2443.35,195.468 +SO46872,1,6/23/2020,Bob Garcia,"Road-550-W Yellow, 42",1000.4375,80.035 +SO46873,1,6/23/2020,Kara Becker,"Road-250 Black, 52",2181.5625,174.525 +SO46874,1,6/23/2020,Cassie Nath,"Road-550-W Yellow, 38",1000.4375,80.035 +SO46878,1,6/24/2020,Julia Hughes,"Road-250 Red, 48",2443.35,195.468 +SO46880,1,6/24/2020,Sara Hernandez,"Road-650 Black, 60",782.99,62.6392 +SO46876,1,6/24/2020,Adrienne Serrano,"Road-250 Black, 48",2181.5625,174.525 +SO46879,1,6/24/2020,Amanda Brooks,"Road-250 Black, 58",2181.5625,174.525 +SO46875,1,6/24/2020,Jay Suarez,"Mountain-200 Black, 46",2049.0982,163.9279 +SO46877,1,6/24/2020,Sara Murphy,"Road-250 Red, 52",2443.35,195.468 +SO46881,1,6/24/2020,Alisha Chander,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO46882,1,6/24/2020,Willie Cai,"Road-650 Black, 52",782.99,62.6392 +SO46883,1,6/24/2020,James Lal,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO46888,1,6/25/2020,Meghan Gutierrez,"Road-650 Red, 62",782.99,62.6392 +SO46886,1,6/25/2020,Jordan Carter,"Road-250 Black, 52",2181.5625,174.525 +SO46887,1,6/25/2020,Stacy Diaz,"Mountain-200 Black, 46",2049.0982,163.9279 +SO46884,1,6/25/2020,Tiffany Zhao,"Road-250 Red, 44",2443.35,195.468 +SO46885,1,6/25/2020,Clinton Dominguez,"Road-250 Black, 44",2181.5625,174.525 +SO46889,1,6/26/2020,Kelli Lal,"Road-550-W Yellow, 40",1000.4375,80.035 +SO46897,1,6/26/2020,Jaclyn Zhou,"Road-250 Red, 44",2443.35,195.468 +SO46898,1,6/26/2020,Denise Vance,"Road-250 Red, 48",2443.35,195.468 +SO46891,1,6/26/2020,Jorge Liu,"Road-650 Red, 62",782.99,62.6392 +SO46892,1,6/26/2020,Blake Nelson,"Road-250 Red, 52",2443.35,195.468 +SO46896,1,6/26/2020,Kayla Russell,"Road-650 Black, 58",782.99,62.6392 +SO46890,1,6/26/2020,Wyatt Lee,"Road-250 Red, 44",2443.35,195.468 +SO46893,1,6/26/2020,Vanessa Simmons,"Road-250 Red, 48",2443.35,195.468 +SO46894,1,6/26/2020,Miguel Lewis,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO46895,1,6/26/2020,Allen Arthur,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO46903,1,6/27/2020,Joe Ramos,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO46899,1,6/27/2020,Elijah Gonzales,"Road-550-W Yellow, 38",1000.4375,80.035 +SO46902,1,6/27/2020,Geoffrey Perez,"Road-250 Black, 48",2181.5625,174.525 +SO46901,1,6/27/2020,Mary Allen,"Road-250 Black, 48",2181.5625,174.525 +SO46900,1,6/27/2020,Tara Nara,"Road-250 Black, 48",2181.5625,174.525 +SO46908,1,6/28/2020,Desiree Rubio,"Road-250 Red, 52",2443.35,195.468 +SO46909,1,6/28/2020,Eugene She,"Road-250 Black, 58",2181.5625,174.525 +SO46905,1,6/28/2020,Frederick Perez,"Road-250 Black, 48",2181.5625,174.525 +SO46904,1,6/28/2020,Katelyn Peterson,"Road-550-W Yellow, 44",1000.4375,80.035 +SO46907,1,6/28/2020,Jeremy Collins,"Road-250 Red, 44",2443.35,195.468 +SO46906,1,6/28/2020,Mary Adams,"Road-250 Red, 44",2443.35,195.468 +SO46913,1,6/29/2020,Logan Phillips,"Road-250 Black, 48",2181.5625,174.525 +SO46912,1,6/29/2020,Taylor Rogers,"Road-250 Black, 52",2181.5625,174.525 +SO46916,1,6/29/2020,Isaiah Reed,"Road-650 Red, 48",782.99,62.6392 +SO46919,1,6/29/2020,Erica Hu,"Mountain-200 Black, 46",2049.0982,163.9279 +SO46910,1,6/29/2020,Andres Raje,"Road-650 Red, 52",782.99,62.6392 +SO46917,1,6/29/2020,Theresa Torres,"Road-250 Red, 58",2181.5625,174.525 +SO46911,1,6/29/2020,Morgan Martin,"Road-250 Black, 52",2181.5625,174.525 +SO46914,1,6/29/2020,Devin Murphy,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO46915,1,6/29/2020,Heather Huang,"Mountain-200 Black, 46",2049.0982,163.9279 +SO46918,1,6/29/2020,Jamie Gao,"Road-650 Black, 52",782.99,62.6392 +SO46926,1,6/30/2020,Nancy Arun,"Road-250 Black, 52",2181.5625,174.525 +SO46925,1,6/30/2020,Sheila Gomez,"Road-250 Black, 44",2181.5625,174.525 +SO46921,1,6/30/2020,Ian Bennett,"Road-250 Red, 58",2181.5625,174.525 +SO46920,1,6/30/2020,Eugene Ye,"Mountain-200 Black, 46",2049.0982,163.9279 +SO46927,1,6/30/2020,Jimmy Vazquez,"Mountain-200 Black, 46",2049.0982,163.9279 +SO46928,1,6/30/2020,Lacey Raje,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO46923,1,6/30/2020,Kurt Chander,"Road-250 Red, 48",2443.35,195.468 +SO46924,1,6/30/2020,Bailey Bell,"Road-250 Black, 48",2181.5625,174.525 +SO46922,1,6/30/2020,Megan Powell,"Road-250 Red, 44",2443.35,195.468 +SO47068,1,7/1/2020,Hailey Perez,"Road-250 Red, 52",2443.35,195.468 +SO47069,1,7/1/2020,Chloe Rodriguez,"Road-550-W Yellow, 40",1000.4375,80.035 +SO47070,1,7/1/2020,Robert Alexander,"Road-550-W Yellow, 44",1000.4375,80.035 +SO47076,1,7/1/2020,Tracy Chande,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47075,1,7/1/2020,Jaclyn Xu,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47071,1,7/1/2020,Hector Ramos,"Road-250 Red, 48",2443.35,195.468 +SO47072,1,7/1/2020,Russell Carson,"Road-650 Black, 48",782.99,62.6392 +SO47073,1,7/1/2020,Paige Sanders,"Road-250 Red, 48",2443.35,195.468 +SO47074,1,7/1/2020,Casey Carlson,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47080,1,7/2/2020,James Jackson,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47084,1,7/2/2020,Albert Navarro,"Road-250 Red, 52",2443.35,195.468 +SO47082,1,7/2/2020,Carla Chapman,"Road-650 Red, 60",782.99,62.6392 +SO47081,1,7/2/2020,David Lewis,"Road-650 Black, 48",782.99,62.6392 +SO47083,1,7/2/2020,Logan Perry,"Road-650 Red, 48",782.99,62.6392 +SO47077,1,7/2/2020,Jamie Ye,"Road-250 Red, 48",2443.35,195.468 +SO47078,1,7/2/2020,Isabella Martinez,"Road-250 Black, 48",2181.5625,174.525 +SO47079,1,7/2/2020,Ian Wood,"Road-250 Black, 48",2181.5625,174.525 +SO47086,1,7/3/2020,Alexandra Bailey,"Road-250 Black, 44",2181.5625,174.525 +SO47087,1,7/3/2020,Natalie Wright,"Road-250 Black, 52",2181.5625,174.525 +SO47088,1,7/3/2020,Joshua Lee,"Road-250 Red, 48",2443.35,195.468 +SO47085,1,7/3/2020,Carl Beck,"Road-250 Black, 58",2181.5625,174.525 +SO47089,1,7/3/2020,Jay Prasad,"Road-650 Black, 48",782.99,62.6392 +SO47090,1,7/3/2020,Gabriella Parker,"Road-250 Black, 52",2181.5625,174.525 +SO47097,1,7/4/2020,Evelyn Subram,"Road-250 Red, 52",2443.35,195.468 +SO47095,1,7/4/2020,Adam Jai,"Road-250 Red, 52",2443.35,195.468 +SO47094,1,7/4/2020,Jill Vazquez,"Road-250 Black, 52",2181.5625,174.525 +SO47093,1,7/4/2020,Katherine Scott,"Road-250 Red, 48",2443.35,195.468 +SO47098,1,7/4/2020,Maria Wood,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47096,1,7/4/2020,Jeremiah Diaz,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47099,1,7/4/2020,Bridget Goel,"Road-650 Red, 62",782.99,62.6392 +SO47092,1,7/4/2020,Allison Nelson,"Road-250 Red, 48",2443.35,195.468 +SO47091,1,7/4/2020,Tony Xie,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47100,1,7/5/2020,Keith Andersen,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47102,1,7/5/2020,Jasmine Thomas,"Road-250 Red, 52",2443.35,195.468 +SO47105,1,7/5/2020,Charles Howard,"Road-250 Red, 58",2181.5625,174.525 +SO47103,1,7/5/2020,Mariah Henderson,"Road-250 Red, 44",2443.35,195.468 +SO47104,1,7/5/2020,Rachel Howard,"Road-250 Black, 58",2181.5625,174.525 +SO47101,1,7/5/2020,Gina Schmidt,"Road-250 Red, 58",2181.5625,174.525 +SO47106,1,7/5/2020,Haley Ross,"Road-250 Red, 48",2443.35,195.468 +SO47111,1,7/6/2020,Kristen Huang,"Road-250 Red, 48",2443.35,195.468 +SO47116,1,7/6/2020,Pedro Suarez,"Road-550-W Yellow, 44",1000.4375,80.035 +SO47114,1,7/6/2020,Nelson Diaz,"Road-250 Black, 44",2181.5625,174.525 +SO47115,1,7/6/2020,Candace Arun,"Road-250 Red, 52",2443.35,195.468 +SO47113,1,7/6/2020,Evan Collins,"Road-650 Black, 52",782.99,62.6392 +SO47112,1,7/6/2020,Amanda Turner,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47108,1,7/6/2020,Manuel Madan,"Road-250 Red, 48",2443.35,195.468 +SO47107,1,7/6/2020,Casey Nath,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47117,1,7/6/2020,Kellie Hernandez,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47118,1,7/6/2020,Isabella Perez,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47109,1,7/6/2020,Grace Bennett,"Road-250 Black, 48",2181.5625,174.525 +SO47110,1,7/6/2020,Nelson Hernandez,"Road-250 Red, 52",2443.35,195.468 +SO47121,1,7/7/2020,Joseph Rodriguez,"Road-250 Black, 48",2181.5625,174.525 +SO47129,1,7/7/2020,Cedric Liu,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47120,1,7/7/2020,Brianna Walker,"Road-550-W Yellow, 38",1000.4375,80.035 +SO47125,1,7/7/2020,Marcus Wright,"Road-250 Black, 48",2181.5625,174.525 +SO47126,1,7/7/2020,Bob Fernandez,"Road-250 Red, 58",2181.5625,174.525 +SO47122,1,7/7/2020,Destiny Morgan,"Road-250 Red, 58",2181.5625,174.525 +SO47124,1,7/7/2020,Mario Ashe,"Road-250 Red, 58",2181.5625,174.525 +SO47119,1,7/7/2020,Deborah McDonald,"Road-250 Red, 44",2443.35,195.468 +SO47127,1,7/7/2020,Alfredo Serrano,"Road-250 Red, 58",2181.5625,174.525 +SO47128,1,7/7/2020,Gloria Serrano,"Road-250 Red, 44",2443.35,195.468 +SO47123,1,7/7/2020,Karen Zhao,"Road-250 Red, 58",2181.5625,174.525 +SO47136,1,7/8/2020,Jamie Sun,"Road-250 Black, 58",2181.5625,174.525 +SO47130,1,7/8/2020,Dakota Henderson,"Road-250 Black, 48",2181.5625,174.525 +SO47131,1,7/8/2020,Alyssa Davis,"Road-250 Red, 58",2181.5625,174.525 +SO47133,1,7/8/2020,Blake Gonzales,"Road-250 Black, 58",2181.5625,174.525 +SO47137,1,7/8/2020,Noah Young,"Road-250 Red, 58",2181.5625,174.525 +SO47132,1,7/8/2020,Dakota Griffin,"Road-250 Black, 48",2181.5625,174.525 +SO47135,1,7/8/2020,Jennifer White,"Road-650 Black, 52",782.99,62.6392 +SO47134,1,7/8/2020,Grace Simmons,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47140,1,7/9/2020,Noah Chen,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47145,1,7/9/2020,Lawrence Suarez,"Road-650 Black, 44",782.99,62.6392 +SO47144,1,7/9/2020,Danny Vazquez,"Road-650 Black, 52",782.99,62.6392 +SO47139,1,7/9/2020,John Williams,"Road-250 Black, 48",2181.5625,174.525 +SO47143,1,7/9/2020,Shaun Shen,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47138,1,7/9/2020,Sheena Chander,"Road-250 Black, 58",2181.5625,174.525 +SO47142,1,7/9/2020,Carla Rodriguez,"Road-250 Red, 48",2443.35,195.468 +SO47141,1,7/9/2020,Michele Jai,"Road-250 Red, 58",2181.5625,174.525 +SO47148,1,7/10/2020,Curtis Cai,"Road-250 Black, 52",2181.5625,174.525 +SO47146,1,7/10/2020,Karen Smith,"Road-550-W Yellow, 48",1000.4375,80.035 +SO47149,1,7/10/2020,Irving Schmidt,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47147,1,7/10/2020,Florian Stiller,"Road-250 Black, 48",2181.5625,174.525 +SO47150,1,7/11/2020,Clinton Alvarez,"Road-250 Red, 52",2443.35,195.468 +SO47151,1,7/11/2020,Alexandria Gray,"Road-250 Red, 52",2443.35,195.468 +SO47154,1,7/11/2020,Jesse Hall,"Road-650 Black, 60",782.99,62.6392 +SO47153,1,7/11/2020,Jill Gutierrez,"Road-650 Red, 58",782.99,62.6392 +SO47152,1,7/11/2020,April Shen,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47156,1,7/12/2020,Victoria Rodriguez,"Road-250 Black, 44",2181.5625,174.525 +SO47159,1,7/12/2020,Audrey Ortega,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47158,1,7/12/2020,Jackson Jenkins,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47157,1,7/12/2020,Petr Lazecky,"Road-250 Red, 48",2443.35,195.468 +SO47160,1,7/12/2020,Lisa Roy,"Road-250 Red, 48",2443.35,195.468 +SO47161,1,7/12/2020,Autumn Chen,"Road-250 Black, 48",2181.5625,174.525 +SO47162,1,7/12/2020,Alicia Chapman,"Road-250 Red, 58",2181.5625,174.525 +SO47155,1,7/12/2020,Colleen Andersen,"Road-250 Red, 52",2443.35,195.468 +SO47163,1,7/12/2020,Alan Huang,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47173,1,7/13/2020,Holly Fernandez,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47172,1,7/13/2020,Melissa Patterson,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47174,1,7/13/2020,Brittney Ma,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47164,1,7/13/2020,Wesley Liang,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47175,1,7/13/2020,Joanna Munoz,"Road-250 Red, 44",2443.35,195.468 +SO47167,1,7/13/2020,Lauren Coleman,"Road-250 Black, 48",2181.5625,174.525 +SO47168,1,7/13/2020,Hannah Rodriguez,"Road-250 Black, 52",2181.5625,174.525 +SO47171,1,7/13/2020,Francis Alvarez,"Road-250 Black, 44",2181.5625,174.525 +SO47170,1,7/13/2020,Cassidy Henderson,"Road-250 Black, 52",2181.5625,174.525 +SO47165,1,7/13/2020,Melinda Jimenez,"Road-250 Red, 52",2443.35,195.468 +SO47166,1,7/13/2020,Darryl Zhao,"Road-250 Red, 44",2443.35,195.468 +SO47169,1,7/13/2020,Ian Alexander,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47182,1,7/14/2020,Jasmine Peterson,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47179,1,7/14/2020,Justin Butler,"Road-250 Black, 52",2181.5625,174.525 +SO47184,1,7/14/2020,Candace Sara,"Road-250 Black, 58",2181.5625,174.525 +SO47180,1,7/14/2020,Brandon Rodriguez,"Road-250 Red, 52",2443.35,195.468 +SO47181,1,7/14/2020,Jake Wang,"Road-250 Red, 44",2443.35,195.468 +SO47178,1,7/14/2020,Chloe Butler,"Road-550-W Yellow, 40",1000.4375,80.035 +SO47177,1,7/14/2020,Taylor Lee,"Road-550-W Yellow, 38",1000.4375,80.035 +SO47183,1,7/14/2020,Mindy Simpson,"Road-650 Black, 60",782.99,62.6392 +SO47185,1,7/14/2020,Colleen Xie,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47176,1,7/14/2020,Terrence Chander,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47186,1,7/15/2020,Bryant Mehta,"Road-250 Red, 58",2181.5625,174.525 +SO47195,1,7/15/2020,Jackson Jai,"Road-250 Red, 58",2181.5625,174.525 +SO47191,1,7/15/2020,Richard Rogers,"Road-250 Black, 58",2181.5625,174.525 +SO47194,1,7/15/2020,Rachel Martin,"Road-250 Black, 52",2181.5625,174.525 +SO47197,1,7/15/2020,Wyatt Rodriguez,"Road-250 Black, 52",2181.5625,174.525 +SO47190,1,7/15/2020,Stephanie Price,"Road-250 Red, 48",2443.35,195.468 +SO47192,1,7/15/2020,Maurice Rai,"Road-250 Red, 58",2181.5625,174.525 +SO47187,1,7/15/2020,Melody Romero,"Road-550-W Yellow, 42",1000.4375,80.035 +SO47188,1,7/15/2020,Gabrielle Ross,"Road-550-W Yellow, 48",1000.4375,80.035 +SO47193,1,7/15/2020,Kelsey Nath,"Road-650 Red, 48",782.99,62.6392 +SO47189,1,7/15/2020,Dwayne Hernandez,"Road-250 Black, 44",2181.5625,174.525 +SO47196,1,7/15/2020,Evan Phillips,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47202,1,7/16/2020,Kayla Hayes,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47201,1,7/16/2020,Jacqueline Hughes,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47199,1,7/16/2020,Linda Dominguez,"Road-650 Red, 60",782.99,62.6392 +SO47200,1,7/16/2020,Zachary Chen,"Road-250 Black, 44",2181.5625,174.525 +SO47198,1,7/16/2020,Carmen Martinez,"Road-250 Red, 52",2443.35,195.468 +SO47212,1,7/17/2020,Cedric She,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47211,1,7/17/2020,Gavin Perry,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47206,1,7/17/2020,Dalton Ramirez,"Road-650 Black, 58",782.99,62.6392 +SO47203,1,7/17/2020,Luis Carter,"Road-250 Red, 52",2443.35,195.468 +SO47204,1,7/17/2020,Renee Gomez,"Road-250 Black, 52",2181.5625,174.525 +SO47210,1,7/17/2020,Jenny Zhang,"Road-550-W Yellow, 48",1000.4375,80.035 +SO47209,1,7/17/2020,Colleen Huang,"Road-250 Red, 52",2443.35,195.468 +SO47208,1,7/17/2020,Johnny Luo,"Road-250 Red, 48",2443.35,195.468 +SO47205,1,7/17/2020,Isaiah Hall,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47207,1,7/17/2020,Dalton Murphy,"Road-650 Black, 62",782.99,62.6392 +SO47215,1,7/18/2020,Lauren Cook,"Road-250 Red, 44",2443.35,195.468 +SO47216,1,7/18/2020,Y. Yong,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47218,1,7/18/2020,Ricky Romero,"Road-250 Red, 48",2443.35,195.468 +SO47217,1,7/18/2020,Kelvin Xu,"Road-250 Black, 48",2181.5625,174.525 +SO47213,1,7/18/2020,Laura Xu,"Road-250 Black, 52",2181.5625,174.525 +SO47214,1,7/18/2020,Darren Romero,"Road-550-W Yellow, 48",1000.4375,80.035 +SO47220,1,7/18/2020,Lydia Sanchez,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47219,1,7/18/2020,Francis Sanz,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47231,1,7/19/2020,Jorge Liang,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47221,1,7/19/2020,Margaret Zheng,"Road-250 Red, 52",2443.35,195.468 +SO47228,1,7/19/2020,Devin Stewart,"Road-250 Black, 48",2181.5625,174.525 +SO47225,1,7/19/2020,Nathan Brown,"Road-250 Black, 48",2181.5625,174.525 +SO47226,1,7/19/2020,Jordan Hernandez,"Road-250 Red, 44",2443.35,195.468 +SO47224,1,7/19/2020,Angela Rivera,"Road-250 Red, 48",2443.35,195.468 +SO47230,1,7/19/2020,Meghan Torres,"Road-250 Red, 58",2181.5625,174.525 +SO47227,1,7/19/2020,Jordyn Flores,"Road-250 Black, 48",2181.5625,174.525 +SO47223,1,7/19/2020,Jocelyn Price,"Road-250 Red, 52",2443.35,195.468 +SO47229,1,7/19/2020,Toni Kapoor,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47222,1,7/19/2020,Stephanie Hughes,"Road-550-W Yellow, 38",1000.4375,80.035 +SO47237,1,7/20/2020,Natalie Hill,"Road-250 Red, 44",2443.35,195.468 +SO47242,1,7/20/2020,Leah Zhang,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47240,1,7/20/2020,Devon Chander,"Road-550-W Yellow, 38",1000.4375,80.035 +SO47239,1,7/20/2020,Ronnie Lin,"Road-250 Red, 58",2181.5625,174.525 +SO47241,1,7/20/2020,Pedro Malhotra,"Road-250 Red, 44",2443.35,195.468 +SO47243,1,7/20/2020,Colin Huang,"Road-650 Black, 44",782.99,62.6392 +SO47232,1,7/20/2020,Troy Srini,"Road-250 Black, 44",2181.5625,174.525 +SO47233,1,7/20/2020,Brendan Raje,"Road-250 Black, 58",2181.5625,174.525 +SO47235,1,7/20/2020,Joel Raman,"Road-250 Black, 48",2181.5625,174.525 +SO47238,1,7/20/2020,Adriana Sai,"Road-250 Red, 52",2443.35,195.468 +SO47234,1,7/20/2020,Latoya Sharma,"Road-550-W Yellow, 48",1000.4375,80.035 +SO47236,1,7/20/2020,Beth Carlson,"Road-550-W Yellow, 42",1000.4375,80.035 +SO47247,1,7/21/2020,Paula Carlson,"Road-250 Red, 58",2181.5625,174.525 +SO47248,1,7/21/2020,Natalie Edwards,"Road-250 Black, 48",2181.5625,174.525 +SO47249,1,7/21/2020,Gregory Chande,"Road-250 Black, 52",2181.5625,174.525 +SO47252,1,7/21/2020,Michele Madan,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47253,1,7/21/2020,Laura Zhou,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47244,1,7/21/2020,Omar Lal,"Road-550-W Yellow, 42",1000.4375,80.035 +SO47245,1,7/21/2020,Eddie Alonso,"Road-250 Black, 48",2181.5625,174.525 +SO47246,1,7/21/2020,Kathleen Gill,"Road-650 Black, 52",782.99,62.6392 +SO47251,1,7/21/2020,Dale Nara,"Road-250 Black, 52",2181.5625,174.525 +SO47250,1,7/21/2020,Casey Xie,"Road-250 Black, 58",2181.5625,174.525 +SO47262,1,7/22/2020,Kristopher Lopez,"Road-250 Black, 58",2181.5625,174.525 +SO47256,1,7/22/2020,Noah Bryant,"Road-250 Black, 44",2181.5625,174.525 +SO47254,1,7/22/2020,Megan Hall,"Road-650 Black, 58",782.99,62.6392 +SO47263,1,7/22/2020,Ruben Rodriguez,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47255,1,7/22/2020,Briana Dominguez,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47259,1,7/22/2020,Mariah Cox,"Road-250 Black, 48",2181.5625,174.525 +SO47258,1,7/22/2020,Anna Harris,"Road-250 Black, 52",2181.5625,174.525 +SO47260,1,7/22/2020,Richard Coleman,"Road-250 Black, 48",2181.5625,174.525 +SO47257,1,7/22/2020,Ana Bryant,"Road-250 Red, 44",2443.35,195.468 +SO47261,1,7/22/2020,Julia Rogers,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47265,1,7/23/2020,Jordan King,"Road-250 Black, 48",2181.5625,174.525 +SO47267,1,7/23/2020,Jimmy Travers,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47264,1,7/23/2020,Joy Navarro,"Road-250 Red, 44",2443.35,195.468 +SO47266,1,7/23/2020,Jarrod Madan,"Road-250 Black, 52",2181.5625,174.525 +SO47268,1,7/23/2020,Kevin King,"Road-250 Black, 48",2181.5625,174.525 +SO47278,1,7/24/2020,Julio Sanz,"Road-250 Black, 58",2181.5625,174.525 +SO47277,1,7/24/2020,Candice Zhu,"Road-250 Red, 58",2181.5625,174.525 +SO47274,1,7/24/2020,Colleen Zhao,"Road-250 Red, 52",2443.35,195.468 +SO47276,1,7/24/2020,Katelyn Gray,"Road-650 Black, 52",782.99,62.6392 +SO47275,1,7/24/2020,Jaclyn Pal,"Road-650 Black, 44",782.99,62.6392 +SO47271,1,7/24/2020,Anthony White,"Road-550-W Yellow, 38",1000.4375,80.035 +SO47279,1,7/24/2020,George Sanchez,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47273,1,7/24/2020,Jordan Turner,"Road-250 Red, 44",2443.35,195.468 +SO47269,1,7/24/2020,Dwayne Alonso,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47270,1,7/24/2020,J�sus Ramos,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47272,1,7/24/2020,Emma Hall,"Road-250 Red, 58",2181.5625,174.525 +SO47285,1,7/25/2020,Adam Allen,"Road-250 Black, 44",2181.5625,174.525 +SO47289,1,7/25/2020,Jeremiah Lopez,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47284,1,7/25/2020,Gabriel Turner,"Road-250 Red, 44",2443.35,195.468 +SO47288,1,7/25/2020,Jordyn Coleman,"Road-250 Black, 44",2181.5625,174.525 +SO47287,1,7/25/2020,Bailey Adams,"Road-250 Black, 48",2181.5625,174.525 +SO47280,1,7/25/2020,Dwayne Navarro,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47282,1,7/25/2020,Douglas Mehta,"Road-550-W Yellow, 38",1000.4375,80.035 +SO47286,1,7/25/2020,Jonathon Suarez,"Road-650 Red, 48",782.99,62.6392 +SO47283,1,7/25/2020,Deanna Gomez,"Road-250 Black, 44",2181.5625,174.525 +SO47281,1,7/25/2020,Joel Fernandez,"Road-550-W Yellow, 48",1000.4375,80.035 +SO47290,1,7/25/2020,Nicole Coleman,"Road-250 Red, 44",2443.35,195.468 +SO47300,1,7/26/2020,Chelsea Ray,"Road-650 Black, 62",782.99,62.6392 +SO47291,1,7/26/2020,Kellie Moreno,"Road-250 Red, 58",2181.5625,174.525 +SO47293,1,7/26/2020,Erika Ruiz,"Road-550-W Yellow, 42",1000.4375,80.035 +SO47294,1,7/26/2020,Jennifer Washington,"Road-550-W Yellow, 40",1000.4375,80.035 +SO47302,1,7/26/2020,Sarah Martinez,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47298,1,7/26/2020,Jennifer Jackson,"Road-250 Red, 58",2181.5625,174.525 +SO47299,1,7/26/2020,Jose Garcia,"Road-250 Red, 48",2443.35,195.468 +SO47297,1,7/26/2020,Danielle Cook,"Road-250 Black, 52",2181.5625,174.525 +SO47296,1,7/26/2020,Hannah Moore,"Road-550-W Yellow, 42",1000.4375,80.035 +SO47295,1,7/26/2020,Noah Hughes,"Road-550-W Yellow, 44",1000.4375,80.035 +SO47292,1,7/26/2020,Sandra Chen,"Road-250 Black, 58",2181.5625,174.525 +SO47301,1,7/26/2020,Marty Simpson,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47303,1,7/26/2020,Roy Vazquez,"Road-650 Red, 60",782.99,62.6392 +SO47310,1,7/27/2020,Devon Pal,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47306,1,7/27/2020,Timothy Phillips,"Road-250 Red, 48",2443.35,195.468 +SO47309,1,7/27/2020,Angel Rivera,"Road-250 Black, 52",2181.5625,174.525 +SO47314,1,7/27/2020,Colin Stone,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47304,1,7/27/2020,Raul Deng,"Road-250 Black, 58",2181.5625,174.525 +SO47312,1,7/27/2020,Mya Griffin,"Road-650 Black, 58",782.99,62.6392 +SO47311,1,7/27/2020,Jada Murphy,"Road-650 Black, 58",782.99,62.6392 +SO47308,1,7/27/2020,Ricky Ruiz,"Road-650 Red, 44",782.99,62.6392 +SO47307,1,7/27/2020,Ebony Sanz,"Road-650 Black, 60",782.99,62.6392 +SO47313,1,7/27/2020,Christine Goel,"Road-250 Black, 44",2181.5625,174.525 +SO47305,1,7/27/2020,Lucas Cox,"Road-250 Red, 48",2443.35,195.468 +SO47322,1,7/28/2020,Stephanie Baker,"Road-650 Black, 52",782.99,62.6392 +SO47321,1,7/28/2020,Eric Campbell,"Road-250 Black, 44",2181.5625,174.525 +SO47316,1,7/28/2020,Cameron Jai,"Road-250 Red, 48",2443.35,195.468 +SO47320,1,7/28/2020,Lucas Thomas,"Road-250 Black, 52",2181.5625,174.525 +SO47319,1,7/28/2020,Vanessa Ross,"Road-250 Red, 52",2443.35,195.468 +SO47318,1,7/28/2020,Elizabeth Lee,"Road-250 Black, 48",2181.5625,174.525 +SO47315,1,7/28/2020,Tommy Pal,"Road-250 Black, 58",2181.5625,174.525 +SO47317,1,7/28/2020,Willie Gao,"Road-250 Black, 58",2181.5625,174.525 +SO47325,1,7/29/2020,Jorge Hu,"Road-250 Black, 44",2181.5625,174.525 +SO47326,1,7/29/2020,Jackson Lopez,"Road-250 Black, 58",2181.5625,174.525 +SO47327,1,7/29/2020,Sara Peterson,"Road-250 Black, 52",2181.5625,174.525 +SO47324,1,7/29/2020,Julia Thomas,"Road-250 Black, 52",2181.5625,174.525 +SO47328,1,7/29/2020,Christy Chow,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47323,1,7/29/2020,Tara Chande,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47336,1,7/30/2020,Michele Luo,"Road-650 Black, 44",782.99,62.6392 +SO47335,1,7/30/2020,Kristina Fernandez,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47329,1,7/30/2020,Savannah Edwards,"Road-250 Black, 58",2181.5625,174.525 +SO47330,1,7/30/2020,Juan Romero,"Road-250 Red, 48",2443.35,195.468 +SO47332,1,7/30/2020,Isabella Campbell,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47333,1,7/30/2020,Latoya Jai,"Road-250 Red, 44",2443.35,195.468 +SO47334,1,7/30/2020,Kate Lal,"Road-250 Red, 48",2443.35,195.468 +SO47331,1,7/30/2020,Jordan Foster,"Road-650 Black, 58",782.99,62.6392 +SO47343,1,7/31/2020,Allen Suri,"Road-250 Black, 58",2181.5625,174.525 +SO47341,1,7/31/2020,Natalie Parker,"Road-250 Red, 44",2443.35,195.468 +SO47338,1,7/31/2020,Christy Luo,"Road-250 Black, 44",2181.5625,174.525 +SO47339,1,7/31/2020,Eduardo White,"Road-250 Red, 58",2181.5625,174.525 +SO47340,1,7/31/2020,Erin Bradley,"Road-250 Red, 48",2443.35,195.468 +SO47345,1,7/31/2020,Tyrone Ortega,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47346,1,7/31/2020,Ian Martinez,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47344,1,7/31/2020,Trisha Zhou,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47348,1,7/31/2020,Brandy Garcia,"Road-650 Red, 52",782.99,62.6392 +SO47347,1,7/31/2020,Aimee Zhang,"Road-650 Red, 58",782.99,62.6392 +SO47342,1,7/31/2020,Anna Lewis,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47337,1,7/31/2020,Susan Liang,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47461,1,8/1/2020,Brianna Diaz,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47460,1,8/1/2020,Terrance Sara,"Road-650 Red, 58",782.99,62.6392 +SO47462,1,8/2/2020,Donna Deng,"Road-250 Black, 48",2181.5625,174.525 +SO47465,1,8/2/2020,Haley Patterson,"Road-650 Black, 48",782.99,62.6392 +SO47464,1,8/2/2020,Rosa Wu,"Road-250 Red, 52",2443.35,195.468 +SO47466,1,8/2/2020,Micah Sun,"Road-550-W Yellow, 38",1000.4375,80.035 +SO47467,1,8/2/2020,Katelyn Scott,"Road-250 Red, 58",2181.5625,174.525 +SO47463,1,8/2/2020,Seth Rodriguez,"Road-250 Black, 44",2181.5625,174.525 +SO47468,1,8/2/2020,Jaime Gill,"Road-650 Red, 48",782.99,62.6392 +SO47470,1,8/3/2020,Marshall Zhu,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47471,1,8/3/2020,Carrie Alonso,"Road-250 Red, 52",2443.35,195.468 +SO47472,1,8/3/2020,Chloe Griffin,"Road-250 Black, 58",2181.5625,174.525 +SO47476,1,8/3/2020,Ruth Gonzalez,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47473,1,8/3/2020,Cedric Nara,"Road-250 Red, 48",2443.35,195.468 +SO47474,1,8/3/2020,Brandi Hernandez,"Road-250 Black, 58",2181.5625,174.525 +SO47475,1,8/3/2020,Pearlie Rusek,"Road-250 Red, 48",2443.35,195.468 +SO47469,1,8/3/2020,Jamie Liu,"Road-550-W Yellow, 40",1000.4375,80.035 +SO47482,1,8/4/2020,Ann Madan,"Road-250 Red, 52",2443.35,195.468 +SO47481,1,8/4/2020,Marie Vazquez,"Road-250 Black, 44",2181.5625,174.525 +SO47480,1,8/4/2020,Jacquelyn Hernandez,"Road-250 Red, 58",2181.5625,174.525 +SO47478,1,8/4/2020,Calvin Shan,"Road-650 Red, 62",782.99,62.6392 +SO47479,1,8/4/2020,Kelvin Tang,"Road-650 Red, 52",782.99,62.6392 +SO47477,1,8/4/2020,Peggy Smith,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47484,1,8/5/2020,Cassie Luo,"Road-250 Red, 58",2181.5625,174.525 +SO47485,1,8/5/2020,Carla Prasad,"Road-250 Red, 58",2181.5625,174.525 +SO47486,1,8/5/2020,Katherine Brown,"Road-250 Black, 52",2181.5625,174.525 +SO47483,1,8/5/2020,Stefanie Raman,"Road-250 Black, 58",2181.5625,174.525 +SO47488,1,8/6/2020,Taylor Williams,"Road-250 Black, 58",2181.5625,174.525 +SO47487,1,8/6/2020,Kendra Alonso,"Road-250 Black, 52",2181.5625,174.525 +SO47489,1,8/6/2020,Evan Edwards,"Road-250 Red, 44",2443.35,195.468 +SO47490,1,8/6/2020,Kaylee Gonzalez,"Road-250 Red, 58",2181.5625,174.525 +SO47491,1,8/7/2020,Tabitha Jimenez,"Road-250 Red, 48",2443.35,195.468 +SO47492,1,8/7/2020,Chad Pal,"Road-650 Black, 60",782.99,62.6392 +SO47495,1,8/8/2020,Kurt Raheem,"Road-250 Red, 44",2443.35,195.468 +SO47496,1,8/8/2020,Wesley Guo,"Road-250 Red, 58",2181.5625,174.525 +SO47494,1,8/8/2020,Gilbert Huang,"Road-250 Black, 44",2181.5625,174.525 +SO47500,1,8/8/2020,Orlando Hernandez,"Road-250 Red, 48",2443.35,195.468 +SO47499,1,8/8/2020,Randall Ramos,"Road-250 Black, 52",2181.5625,174.525 +SO47497,1,8/8/2020,Rebekah Moreno,"Road-250 Red, 52",2443.35,195.468 +SO47501,1,8/8/2020,Julie Raje,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47493,1,8/8/2020,Dustin Jai,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47498,1,8/8/2020,Anthony Clark,"Road-650 Red, 62",782.99,62.6392 +SO47506,1,8/9/2020,Faith Brooks,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47505,1,8/9/2020,Alexander Miller,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47510,1,8/9/2020,Stacy Navarro,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47504,1,8/9/2020,Heidi Subram,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47508,1,8/9/2020,Joan Hernandez,"Road-250 Red, 52",2443.35,195.468 +SO47509,1,8/9/2020,Kathryn Shen,"Road-250 Red, 44",2443.35,195.468 +SO47507,1,8/9/2020,Brandon Thompson,"Road-650 Black, 58",782.99,62.6392 +SO47503,1,8/9/2020,Carrie Browning,"Road-550-W Yellow, 40",1000.4375,80.035 +SO47502,1,8/9/2020,Willie Sun,"Road-550-W Yellow, 40",1000.4375,80.035 +SO47517,1,8/10/2020,Christy Lal,"Road-650 Black, 52",782.99,62.6392 +SO47513,1,8/10/2020,Jay Alonso,"Road-250 Red, 44",2443.35,195.468 +SO47514,1,8/10/2020,Tyrone Suarez,"Road-250 Black, 52",2181.5625,174.525 +SO47512,1,8/10/2020,Kristine Munoz,"Road-250 Black, 44",2181.5625,174.525 +SO47518,1,8/10/2020,Michele Deng,"Road-250 Black, 44",2181.5625,174.525 +SO47511,1,8/10/2020,Colleen Goel,"Road-250 Black, 48",2181.5625,174.525 +SO47515,1,8/10/2020,Sara Kelly,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47516,1,8/10/2020,Julian Powell,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47519,1,8/10/2020,Rebecca Collins,"Road-650 Black, 62",782.99,62.6392 +SO47527,1,8/11/2020,Billy Gutierrez,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47522,1,8/11/2020,Kaitlyn Gray,"Road-550-W Yellow, 44",1000.4375,80.035 +SO47523,1,8/11/2020,Jasmine White,"Road-250 Red, 58",2181.5625,174.525 +SO47526,1,8/11/2020,Karla She,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47524,1,8/11/2020,Candace Sanchez,"Road-250 Red, 52",2443.35,195.468 +SO47525,1,8/11/2020,Sheila Navarro,"Road-250 Black, 58",2181.5625,174.525 +SO47521,1,8/11/2020,Caitlin Ward,"Road-250 Red, 48",2443.35,195.468 +SO47520,1,8/11/2020,Nina Chande,"Road-550-W Yellow, 48",1000.4375,80.035 +SO47531,1,8/12/2020,Elijah Hayes,"Road-650 Black, 44",782.99,62.6392 +SO47530,1,8/12/2020,Alexandria Gonzales,"Road-650 Red, 48",782.99,62.6392 +SO47533,1,8/12/2020,Jill Carlson,"Road-250 Red, 58",2181.5625,174.525 +SO47532,1,8/12/2020,Roy Srini,"Road-550-W Yellow, 40",1000.4375,80.035 +SO47528,1,8/12/2020,Meredith Ruiz,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47529,1,8/12/2020,Gabrielle Washington,"Road-250 Black, 52",2181.5625,174.525 +SO47534,1,8/12/2020,Michael Thompson,"Road-650 Red, 48",782.99,62.6392 +SO47540,1,8/13/2020,Trevor Washington,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47545,1,8/13/2020,Sabrina Serrano,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47537,1,8/13/2020,Gail Griffin,"Road-250 Red, 58",2181.5625,174.525 +SO47538,1,8/13/2020,Jerome Diaz,"Road-250 Black, 58",2181.5625,174.525 +SO47535,1,8/13/2020,Nathan Lopez,"Road-550-W Yellow, 42",1000.4375,80.035 +SO47536,1,8/13/2020,Alexandra Lopez,"Road-550-W Yellow, 44",1000.4375,80.035 +SO47544,1,8/13/2020,Jay Arthur,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47542,1,8/13/2020,Darryl Yang,"Road-250 Black, 44",2181.5625,174.525 +SO47543,1,8/13/2020,Jay Kapoor,"Road-250 Black, 52",2181.5625,174.525 +SO47539,1,8/13/2020,Derek Xu,"Road-650 Red, 48",782.99,62.6392 +SO47541,1,8/13/2020,Eduardo Torres,"Road-650 Black, 48",782.99,62.6392 +SO47550,1,8/14/2020,Edward Thompson,"Road-650 Black, 62",782.99,62.6392 +SO47555,1,8/14/2020,Tommy Raheem,"Road-250 Red, 44",2443.35,195.468 +SO47549,1,8/14/2020,Abigail Griffin,"Road-650 Black, 52",782.99,62.6392 +SO47547,1,8/14/2020,Monique Gutierrez,"Road-650 Black, 58",782.99,62.6392 +SO47548,1,8/14/2020,Brenda Kapoor,"Road-650 Red, 52",782.99,62.6392 +SO47551,1,8/14/2020,Bryant Rana,"Road-250 Red, 58",2181.5625,174.525 +SO47552,1,8/14/2020,Armando Hernandez,"Road-250 Red, 44",2443.35,195.468 +SO47553,1,8/14/2020,Mohamed Pal,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47554,1,8/14/2020,Jenny Xu,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47546,1,8/14/2020,Mallory Munoz,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47558,1,8/15/2020,Isaiah Howard,"Road-250 Red, 52",2443.35,195.468 +SO47559,1,8/15/2020,Amy Chow,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47556,1,8/15/2020,Maurizio Macagno,"Road-250 Black, 58",2181.5625,174.525 +SO47557,1,8/15/2020,Bryan James,"Road-250 Black, 52",2181.5625,174.525 +SO47564,1,8/16/2020,Alan He,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47562,1,8/16/2020,Daisy Jim�nez,"Road-250 Black, 52",2181.5625,174.525 +SO47563,1,8/16/2020,Jenny Ferrier,"Road-250 Red, 44",2443.35,195.468 +SO47561,1,8/16/2020,Fernando Jackson,"Road-650 Red, 58",782.99,62.6392 +SO47560,1,8/16/2020,Steven Cook,"Road-650 Red, 62",782.99,62.6392 +SO47565,1,8/17/2020,Julia Morris,"Road-250 Black, 52",2181.5625,174.525 +SO47568,1,8/17/2020,Rafael Xu,"Road-250 Black, 48",2181.5625,174.525 +SO47567,1,8/17/2020,Barry Kov�r,"Road-250 Black, 58",2181.5625,174.525 +SO47569,1,8/17/2020,Jimmy Dominguez,"Road-250 Black, 58",2181.5625,174.525 +SO47566,1,8/17/2020,Stacy Serrano,"Road-550-W Yellow, 48",1000.4375,80.035 +SO47576,1,8/18/2020,Clarence Xu,"Road-250 Black, 52",2181.5625,174.525 +SO47577,1,8/18/2020,Dawn Nara,"Road-250 Red, 52",2443.35,195.468 +SO47574,1,8/18/2020,Bailey King,"Road-650 Black, 58",782.99,62.6392 +SO47578,1,8/18/2020,Marshall Li,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47573,1,8/18/2020,Tracy Pal,"Road-250 Red, 48",2443.35,195.468 +SO47571,1,8/18/2020,Frank Vazquez,"Road-250 Black, 52",2181.5625,174.525 +SO47570,1,8/18/2020,Phillip Martinez,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47572,1,8/18/2020,Ariana Bell,"Road-250 Red, 44",2443.35,195.468 +SO47575,1,8/18/2020,Taylor Peterson,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47581,1,8/19/2020,Steven Sanders,"Road-250 Black, 48",2181.5625,174.525 +SO47580,1,8/19/2020,Cynthia Srini,"Road-550-W Yellow, 48",1000.4375,80.035 +SO47583,1,8/19/2020,Paula Vazquez,"Road-250 Black, 58",2181.5625,174.525 +SO47582,1,8/19/2020,Jessie Vazquez,"Road-250 Black, 44",2181.5625,174.525 +SO47584,1,8/19/2020,Cesar Garcia,"Road-650 Black, 48",782.99,62.6392 +SO47579,1,8/19/2020,Heidi Prasad,"Road-250 Red, 58",2181.5625,174.525 +SO47586,1,8/19/2020,Evan Green,"Road-650 Red, 44",782.99,62.6392 +SO47585,1,8/19/2020,Eduardo Brooks,"Road-650 Red, 48",782.99,62.6392 +SO47587,1,8/19/2020,Brandi Suarez,"Road-250 Red, 58",2181.5625,174.525 +SO47592,1,8/20/2020,Lindsey Raje,"Road-550-W Yellow, 42",1000.4375,80.035 +SO47588,1,8/20/2020,Ryan Ross,"Road-250 Black, 58",2181.5625,174.525 +SO47589,1,8/20/2020,Amanda Torres,"Road-550-W Yellow, 40",1000.4375,80.035 +SO47590,1,8/20/2020,Elizabeth Wood,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47591,1,8/20/2020,Dalton Simmons,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47594,1,8/20/2020,Cory Madan,"Road-650 Black, 52",782.99,62.6392 +SO47593,1,8/20/2020,Erica Sun,"Road-650 Red, 62",782.99,62.6392 +SO47598,1,8/21/2020,Kyle Holt,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47597,1,8/21/2020,Savannah Young,"Road-250 Black, 44",2181.5625,174.525 +SO47599,1,8/21/2020,Jack Jai,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47595,1,8/21/2020,Katrina Tang,"Road-250 Red, 48",2443.35,195.468 +SO47596,1,8/21/2020,Terrence Xie,"Road-250 Black, 44",2181.5625,174.525 +SO47600,1,8/22/2020,Alexa Peterson,"Road-550-W Yellow, 48",1000.4375,80.035 +SO47602,1,8/22/2020,Katelyn Howard,"Road-650 Red, 60",782.99,62.6392 +SO47604,1,8/22/2020,Philip Rubio,"Road-250 Black, 48",2181.5625,174.525 +SO47603,1,8/22/2020,Drew Jai,"Road-250 Black, 58",2181.5625,174.525 +SO47601,1,8/22/2020,Ronald Kapoor,"Road-250 Black, 58",2181.5625,174.525 +SO47607,1,8/23/2020,Nicole Butler,"Road-550-W Yellow, 48",1000.4375,80.035 +SO47605,1,8/23/2020,Alejandro Ma,"Road-550-W Yellow, 48",1000.4375,80.035 +SO47609,1,8/23/2020,Dylan Wilson,"Road-650 Black, 60",782.99,62.6392 +SO47606,1,8/23/2020,Priscilla Pal,"Road-250 Black, 48",2181.5625,174.525 +SO47608,1,8/23/2020,Justin Zhang,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47611,1,8/23/2020,Emily Long,"Road-650 Red, 52",782.99,62.6392 +SO47610,1,8/23/2020,Jackson Chen,"Road-650 Black, 44",782.99,62.6392 +SO47615,1,8/24/2020,Brianna Cox,"Road-650 Black, 52",782.99,62.6392 +SO47614,1,8/24/2020,Brianna Thomas,"Road-650 Red, 52",782.99,62.6392 +SO47612,1,8/24/2020,Kara Goel,"Road-250 Red, 48",2443.35,195.468 +SO47616,1,8/24/2020,Kellie Navarro,"Road-250 Red, 58",2181.5625,174.525 +SO47618,1,8/24/2020,Diane Romero,"Road-250 Black, 58",2181.5625,174.525 +SO47617,1,8/24/2020,Cindy Mehta,"Road-250 Black, 52",2181.5625,174.525 +SO47613,1,8/24/2020,Lydia Sara,"Road-550-W Yellow, 44",1000.4375,80.035 +SO47619,1,8/24/2020,Tamara Pal,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47620,1,8/24/2020,Alberto Ramos,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47621,1,8/25/2020,Thomas Wright,"Road-550-W Yellow, 42",1000.4375,80.035 +SO47624,1,8/25/2020,Clayton Chavez,"Road-250 Red, 58",2181.5625,174.525 +SO47623,1,8/25/2020,Brendan Rai,"Road-250 Red, 48",2443.35,195.468 +SO47625,1,8/25/2020,Mallory Blanco,"Road-250 Black, 52",2181.5625,174.525 +SO47622,1,8/25/2020,Jimmy Rubio,"Road-650 Black, 44",782.99,62.6392 +SO47626,1,8/25/2020,Nancy Rana,"Road-650 Red, 58",782.99,62.6392 +SO47636,1,8/26/2020,Micheal Dominguez,"Road-650 Red, 52",782.99,62.6392 +SO47631,1,8/26/2020,Tyler Robinson,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47630,1,8/26/2020,Brenda Rodriguez,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47632,1,8/26/2020,Lucas Coleman,"Road-650 Black, 52",782.99,62.6392 +SO47633,1,8/26/2020,David Li,"Road-250 Red, 58",2181.5625,174.525 +SO47627,1,8/26/2020,Erika Carlson,"Road-250 Red, 52",2443.35,195.468 +SO47628,1,8/26/2020,Veronica Sai,"Road-250 Red, 48",2443.35,195.468 +SO47629,1,8/26/2020,Robin Vazquez,"Road-250 Red, 52",2443.35,195.468 +SO47635,1,8/26/2020,Gerald Rodriguez,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47634,1,8/26/2020,Kristin Andersen,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47637,1,8/27/2020,Destiny Cox,"Road-250 Red, 58",2181.5625,174.525 +SO47639,1,8/27/2020,Blake Phillips,"Road-650 Red, 48",782.99,62.6392 +SO47638,1,8/27/2020,Dylan Martinez,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47640,1,8/28/2020,Amanda Wright,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47641,1,8/28/2020,Edward Harris,"Road-650 Red, 58",782.99,62.6392 +SO47644,1,8/29/2020,Isabel Barnes,"Road-250 Black, 48",2181.5625,174.525 +SO47642,1,8/29/2020,Sydney Wilson,"Road-550-W Yellow, 40",1000.4375,80.035 +SO47643,1,8/29/2020,Sergio Prasad,"Road-550-W Yellow, 48",1000.4375,80.035 +SO47646,1,8/29/2020,Morgan Williams,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47647,1,8/29/2020,Francisco Subram,"Road-250 Red, 44",2443.35,195.468 +SO47645,1,8/29/2020,Jodi Kumar,"Road-250 Black, 48",2181.5625,174.525 +SO47648,1,8/29/2020,Emmanuel Garcia,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47656,1,8/30/2020,Jay Ramos,"Road-250 Red, 44",2443.35,195.468 +SO47652,1,8/30/2020,Pamela Kapoor,"Road-650 Black, 58",782.99,62.6392 +SO47654,1,8/30/2020,Dwayne Ortega,"Road-550-W Yellow, 44",1000.4375,80.035 +SO47655,1,8/30/2020,Kelli She,"Road-550-W Yellow, 42",1000.4375,80.035 +SO47651,1,8/30/2020,Alexandra Sanders,"Road-250 Black, 52",2181.5625,174.525 +SO47653,1,8/30/2020,Krystal Zhang,"Road-650 Red, 62",782.99,62.6392 +SO47650,1,8/30/2020,Ricardo Sharma,"Road-250 Red, 52",2443.35,195.468 +SO47649,1,8/30/2020,Kate Becker,"Road-250 Black, 52",2181.5625,174.525 +SO47657,1,8/30/2020,Latoya Chander,"Road-650 Red, 44",782.99,62.6392 +SO47738,1,8/31/2020,Alexandra Flores,"Road-650 Red, 44",782.99,62.6392 +SO47735,1,8/31/2020,Fernando Russell,"Road-650 Black, 52",782.99,62.6392 +SO47734,1,8/31/2020,Marie Diaz,"Road-650 Black, 58",782.99,62.6392 +SO47731,1,8/31/2020,Todd Zeng,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47736,1,8/31/2020,Andre Garcia,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47732,1,8/31/2020,Kaitlyn Evans,"Road-250 Red, 48",2443.35,195.468 +SO47733,1,8/31/2020,Anthony Jones,"Road-250 Black, 48",2181.5625,174.525 +SO47737,1,8/31/2020,Brendan Xie,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47746,1,9/1/2020,Rafael Ma,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47743,1,9/1/2020,Barbara Goel,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47744,1,9/1/2020,Carly Goel,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47745,1,9/1/2020,Mayra Mehta,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47740,1,9/1/2020,Rachel Gonzales,"Road-650 Red, 62",782.99,62.6392 +SO47741,1,9/1/2020,Carson Barnes,"Road-650 Black, 62",782.99,62.6392 +SO47739,1,9/1/2020,Courtney Lopez,"Road-650 Red, 48",782.99,62.6392 +SO47742,1,9/1/2020,Joe Srini,"Road-250 Black, 48",2181.5625,174.525 +SO47749,1,9/2/2020,Cesar Sara,"Road-250 Red, 58",2181.5625,174.525 +SO47750,1,9/2/2020,Jacqueline Torres,"Road-250 Red, 48",2443.35,195.468 +SO47751,1,9/2/2020,Glenn Liang,"Road-250 Red, 48",2443.35,195.468 +SO47752,1,9/2/2020,Natasha Ruiz,"Road-250 Black, 52",2181.5625,174.525 +SO47747,1,9/2/2020,Bethany Lal,"Road-250 Red, 58",2181.5625,174.525 +SO47753,1,9/2/2020,Madalena Sanchez,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47748,1,9/2/2020,Jason Bryant,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47760,1,9/3/2020,Haley Bryant,"Road-250 Red, 58",2181.5625,174.525 +SO47754,1,9/3/2020,Sydney James,"Road-550-W Yellow, 48",1000.4375,80.035 +SO47759,1,9/3/2020,Noah Ross,"Road-250 Black, 48",2181.5625,174.525 +SO47756,1,9/3/2020,Justin Alexander,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47757,1,9/3/2020,Priscilla Chander,"Road-250 Black, 58",2181.5625,174.525 +SO47758,1,9/3/2020,Frederick Madan,"Road-250 Red, 58",2181.5625,174.525 +SO47755,1,9/3/2020,Franklin Sharma,"Road-550-W Yellow, 44",1000.4375,80.035 +SO47763,1,9/4/2020,Cynthia Martinez,"Road-250 Black, 58",2181.5625,174.525 +SO47761,1,9/4/2020,Phillip Rodriguez,"Road-650 Red, 62",782.99,62.6392 +SO47762,1,9/4/2020,Marcus Diaz,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47766,1,9/5/2020,Angelica Bryant,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47770,1,9/5/2020,Shannon Ortega,"Road-650 Black, 52",782.99,62.6392 +SO47765,1,9/5/2020,Mariah Washington,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47764,1,9/5/2020,Rebekah Torres,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47768,1,9/5/2020,Eddie Torres,"Road-250 Red, 58",2181.5625,174.525 +SO47767,1,9/5/2020,Jill Murphy,"Road-550-W Yellow, 38",1000.4375,80.035 +SO47769,1,9/5/2020,Renee Suarez,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47776,1,9/6/2020,Brooke Ward,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47772,1,9/6/2020,Philip Romero,"Road-250 Red, 48",2443.35,195.468 +SO47775,1,9/6/2020,Beth Moreno,"Road-250 Red, 48",2443.35,195.468 +SO47771,1,9/6/2020,Gary Romero,"Road-250 Black, 52",2181.5625,174.525 +SO47773,1,9/6/2020,Ashley Perry,"Road-650 Red, 62",782.99,62.6392 +SO47774,1,9/6/2020,Charles Rodriguez,"Road-650 Black, 58",782.99,62.6392 +SO47777,1,9/6/2020,Toni Malhotra,"Road-650 Black, 44",782.99,62.6392 +SO47781,1,9/7/2020,Arianna Hayes,"Road-250 Black, 58",2181.5625,174.525 +SO47779,1,9/7/2020,Tara Nath,"Road-250 Black, 48",2181.5625,174.525 +SO47782,1,9/7/2020,Ivan Fernandez,"Road-250 Black, 52",2181.5625,174.525 +SO47783,1,9/7/2020,Larry Dominguez,"Road-250 Red, 58",2181.5625,174.525 +SO47784,1,9/7/2020,Michele Chande,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47780,1,9/7/2020,Jackson Zhang,"Road-550-W Yellow, 38",1000.4375,80.035 +SO47778,1,9/7/2020,Cristina Beck,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47786,1,9/8/2020,Ronnie He,"Road-250 Red, 52",2443.35,195.468 +SO47787,1,9/8/2020,Vincent Sun,"Road-250 Red, 44",2443.35,195.468 +SO47785,1,9/8/2020,Darryl Sun,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47788,1,9/9/2020,Terrance Jordan,"Road-250 Black, 58",2181.5625,174.525 +SO47790,1,9/9/2020,Bianca Cai,"Road-250 Red, 58",2181.5625,174.525 +SO47791,1,9/9/2020,Virginia Subram,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47789,1,9/9/2020,Amanda Howard,"Road-250 Black, 48",2181.5625,174.525 +SO47798,1,9/10/2020,Rafael Raje,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47793,1,9/10/2020,Shannon Zhou,"Road-250 Red, 44",2443.35,195.468 +SO47795,1,9/10/2020,Meghan Ortega,"Road-250 Black, 58",2181.5625,174.525 +SO47797,1,9/10/2020,Kristi Chapman,"Road-250 Red, 58",2181.5625,174.525 +SO47796,1,9/10/2020,Philip Gutierrez,"Road-250 Red, 58",2181.5625,174.525 +SO47792,1,9/10/2020,Jordan Shan,"Road-250 Red, 48",2443.35,195.468 +SO47794,1,9/10/2020,Olivia Perry,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47807,1,9/11/2020,Veronica Vance,"Road-250 Black, 58",2181.5625,174.525 +SO47806,1,9/11/2020,Greg Carter,"Road-650 Black, 48",782.99,62.6392 +SO47803,1,9/11/2020,Cynthia Chandra,"Road-250 Black, 58",2181.5625,174.525 +SO47804,1,9/11/2020,Jessica Bell,"Road-250 Red, 52",2443.35,195.468 +SO47801,1,9/11/2020,Kelvin Raje,"Road-650 Red, 48",782.99,62.6392 +SO47802,1,9/11/2020,Lance Navarro,"Road-650 Black, 48",782.99,62.6392 +SO47805,1,9/11/2020,Frank Hernandez,"Road-250 Black, 58",2181.5625,174.525 +SO47800,1,9/11/2020,Colleen Nara,"Road-250 Black, 44",2181.5625,174.525 +SO47799,1,9/11/2020,Bruce Ashe,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47808,1,9/11/2020,Wayne Raji,"Road-650 Black, 52",782.99,62.6392 +SO47809,1,9/11/2020,Hector Gill,"Road-650 Black, 44",782.99,62.6392 +SO47810,1,9/11/2020,Christy Gao,"Road-650 Black, 58",782.99,62.6392 +SO47823,1,9/12/2020,Leonard Lal,"Road-650 Black, 62",782.99,62.6392 +SO47814,1,9/12/2020,Anna Coleman,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47811,1,9/12/2020,Tyrone Hernandez,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47813,1,9/12/2020,Allison Lopez,"Road-550-W Yellow, 40",1000.4375,80.035 +SO47821,1,9/12/2020,Wilson Pais,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47820,1,9/12/2020,Reginald Serrano,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47822,1,9/12/2020,Ethan Jones,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47817,1,9/12/2020,Martha Ye,"Road-250 Red, 58",2181.5625,174.525 +SO47816,1,9/12/2020,Micah Lu,"Road-250 Red, 48",2443.35,195.468 +SO47815,1,9/12/2020,Marshall Zhao,"Road-250 Red, 58",2181.5625,174.525 +SO47819,1,9/12/2020,Jaime Deng,"Road-250 Black, 48",2181.5625,174.525 +SO47818,1,9/12/2020,Aidan Bryant,"Road-650 Red, 62",782.99,62.6392 +SO47812,1,9/12/2020,Danny Jim�nez,"Road-250 Black, 52",2181.5625,174.525 +SO47824,1,9/13/2020,Edwin Chen,"Road-250 Red, 44",2443.35,195.468 +SO47828,1,9/13/2020,Kristy Suarez,"Road-250 Red, 44",2443.35,195.468 +SO47826,1,9/13/2020,Erica Wang,"Road-250 Red, 52",2443.35,195.468 +SO47827,1,9/13/2020,Joy Dominguez,"Road-250 Red, 52",2443.35,195.468 +SO47825,1,9/13/2020,Mindy Raji,"Road-650 Red, 58",782.99,62.6392 +SO47829,1,9/13/2020,Louis Liang,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47831,1,9/14/2020,Janelle Sanchez,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47832,1,9/14/2020,Alexia Coleman,"Road-250 Red, 48",2443.35,195.468 +SO47833,1,9/14/2020,Jorge Cai,"Road-250 Black, 44",2181.5625,174.525 +SO47834,1,9/14/2020,Francis Romero,"Road-250 Black, 48",2181.5625,174.525 +SO47835,1,9/14/2020,Jaclyn Yuan,"Road-550-W Yellow, 40",1000.4375,80.035 +SO47830,1,9/14/2020,Casey Rai,"Road-550-W Yellow, 40",1000.4375,80.035 +SO47842,1,9/15/2020,Marie Navarro,"Road-650 Red, 60",782.99,62.6392 +SO47843,1,9/15/2020,Noah Zhang,"Road-650 Black, 58",782.99,62.6392 +SO47844,1,9/15/2020,Amy Gao,"Road-250 Red, 58",2181.5625,174.525 +SO47840,1,9/15/2020,Molly Schmidt,"Road-650 Black, 60",782.99,62.6392 +SO47839,1,9/15/2020,Chloe Jones,"Road-650 Red, 58",782.99,62.6392 +SO47838,1,9/15/2020,Sydney Hernandez,"Road-250 Red, 58",2181.5625,174.525 +SO47837,1,9/15/2020,Beth Ortega,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47841,1,9/15/2020,Antonio Simmons,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47836,1,9/15/2020,Sharon Raje,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47848,1,9/16/2020,Edward Anderson,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47846,1,9/16/2020,Henry Fernandez,"Road-250 Red, 44",2443.35,195.468 +SO47850,1,9/16/2020,Kathleen Serrano,"Road-650 Red, 58",782.99,62.6392 +SO47849,1,9/16/2020,Ashlee Raji,"Road-650 Red, 60",782.99,62.6392 +SO47847,1,9/16/2020,Angel Turner,"Road-250 Red, 44",2443.35,195.468 +SO47845,1,9/16/2020,Cindy Lewis,"Road-250 Red, 48",2443.35,195.468 +SO47854,1,9/17/2020,Lacey Deng,"Road-650 Red, 58",782.99,62.6392 +SO47857,1,9/17/2020,Marc Moreno,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47856,1,9/17/2020,Grant Nara,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47855,1,9/17/2020,Felicia Moreno,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47851,1,9/17/2020,Melanie Powell,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47852,1,9/17/2020,Eduardo Griffin,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47853,1,9/17/2020,Vincent Ma,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47860,1,9/18/2020,Cindy James,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47869,1,9/18/2020,Arthur Suri,"Road-650 Red, 44",782.99,62.6392 +SO47859,1,9/18/2020,Franklin Nath,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47866,1,9/18/2020,Leslie Hernandez,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47867,1,9/18/2020,J�sus Serrano,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47868,1,9/18/2020,Kendra Diaz,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47865,1,9/18/2020,Gary Gutierrez,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47863,1,9/18/2020,Steve Lu,"Road-650 Red, 60",782.99,62.6392 +SO47858,1,9/18/2020,Brad Xie,"Road-550-W Yellow, 42",1000.4375,80.035 +SO47861,1,9/18/2020,Melissa Gonzales,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47864,1,9/18/2020,Ross Sai,"Road-250 Black, 44",2181.5625,174.525 +SO47862,1,9/18/2020,David Lee,"Road-250 Black, 58",2181.5625,174.525 +SO47876,1,9/19/2020,Vincent Liu,"Road-650 Black, 44",782.99,62.6392 +SO47877,1,9/19/2020,Frank Sanz,"Road-650 Red, 60",782.99,62.6392 +SO47870,1,9/19/2020,Gabriella Young,"Road-550-W Yellow, 40",1000.4375,80.035 +SO47878,1,9/19/2020,Yolanda Shan,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47874,1,9/19/2020,Jay Sara,"Road-250 Black, 44",2181.5625,174.525 +SO47872,1,9/19/2020,Terry Tang,"Road-250 Black, 58",2181.5625,174.525 +SO47871,1,9/19/2020,Evelyn Kapoor,"Road-250 Red, 58",2181.5625,174.525 +SO47873,1,9/19/2020,Randall Blanco,"Road-550-W Yellow, 40",1000.4375,80.035 +SO47875,1,9/19/2020,Stephanie Flores,"Road-250 Black, 48",2181.5625,174.525 +SO47883,1,9/20/2020,Luke Young,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47880,1,9/20/2020,Kelvin Zhang,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47882,1,9/20/2020,Martha Hu,"Road-250 Black, 48",2181.5625,174.525 +SO47886,1,9/20/2020,Anne Ortega,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47887,1,9/20/2020,Krystal Hu,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47888,1,9/20/2020,Dennis Zeng,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47879,1,9/20/2020,Isabella Hall,"Road-550-W Yellow, 44",1000.4375,80.035 +SO47881,1,9/20/2020,Gabriella Roberts,"Road-250 Black, 58",2181.5625,174.525 +SO47884,1,9/20/2020,Barbara Shen,"Road-250 Red, 52",2443.35,195.468 +SO47885,1,9/20/2020,Clarence She,"Road-550-W Yellow, 42",1000.4375,80.035 +SO47889,1,9/21/2020,Micah Hu,"Road-250 Black, 52",2181.5625,174.525 +SO47891,1,9/21/2020,Russell Nath,"Road-250 Black, 44",2181.5625,174.525 +SO47890,1,9/21/2020,Eduardo Robinson,"Road-250 Red, 52",2443.35,195.468 +SO47895,1,9/21/2020,Deanna Alonso,"Road-650 Black, 58",782.99,62.6392 +SO47892,1,9/21/2020,Mariah Reed,"Road-550-W Yellow, 48",1000.4375,80.035 +SO47894,1,9/21/2020,Natalie Hughes,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47893,1,9/21/2020,Jeremy Price,"Road-250 Red, 58",2181.5625,174.525 +SO47897,1,9/22/2020,Ruben Dominguez,"Road-250 Black, 52",2181.5625,174.525 +SO47896,1,9/22/2020,Spencer Gonzales,"Road-550-W Yellow, 48",1000.4375,80.035 +SO47898,1,9/22/2020,Ruben Sai,"Road-650 Red, 60",782.99,62.6392 +SO47901,1,9/22/2020,Kelvin Lin,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47902,1,9/22/2020,Craig Munoz,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47900,1,9/22/2020,Kristy Torres,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47899,1,9/22/2020,Jaclyn Liu,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47909,1,9/23/2020,Nichole Shen,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47910,1,9/23/2020,Autumn Wang,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO47911,1,9/23/2020,Alejandro Goel,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47903,1,9/23/2020,Meghan Diaz,"Road-250 Red, 44",2443.35,195.468 +SO47904,1,9/23/2020,Colleen Zhang,"Road-250 Black, 52",2181.5625,174.525 +SO47907,1,9/23/2020,Julia Barnes,"Road-250 Red, 48",2443.35,195.468 +SO47908,1,9/23/2020,Olivia Richardson,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47905,1,9/23/2020,Nathaniel Bailey,"Road-250 Black, 44",2181.5625,174.525 +SO47906,1,9/23/2020,Zachary Taylor,"Road-650 Black, 44",782.99,62.6392 +SO47913,1,9/24/2020,Emma Morgan,"Road-250 Red, 44",2443.35,195.468 +SO47912,1,9/24/2020,Marvin Navarro,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47915,1,9/24/2020,Emma Moore,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47914,1,9/24/2020,Glenn Sun,"Road-650 Black, 60",782.99,62.6392 +SO47916,1,9/24/2020,Tracy Black,"Road-550-W Yellow, 40",1000.4375,80.035 +SO47917,1,9/24/2020,Clarence Zhang,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47918,1,9/24/2020,Whitney Rana,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47926,1,9/25/2020,Edwin Bhat,"Mountain-200 Black, 42",2049.0982,163.9279 +SO47922,1,9/25/2020,Mariah Sanders,"Road-250 Black, 58",2181.5625,174.525 +SO47921,1,9/25/2020,Michael Miller,"Road-250 Black, 58",2181.5625,174.525 +SO47920,1,9/25/2020,Nicolas Tang,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47925,1,9/25/2020,Ebony Perez,"Road-550-W Yellow, 42",1000.4375,80.035 +SO47924,1,9/25/2020,Meredith Gonzalez,"Road-250 Black, 52",2181.5625,174.525 +SO47919,1,9/25/2020,Kathleen Ramos,"Road-550-W Yellow, 38",1000.4375,80.035 +SO47923,1,9/25/2020,Andrea Cook,"Mountain-200 Black, 38",2049.0982,163.9279 +SO47927,1,9/25/2020,Geoffrey Sara,"Road-650 Red, 52",782.99,62.6392 +SO47929,1,9/26/2020,Charles Anderson,"Road-250 Red, 44",2443.35,195.468 +SO47928,1,9/26/2020,Eduardo Bennett,"Road-250 Black, 52",2181.5625,174.525 +SO47930,1,9/26/2020,Deborah Lal,"Road-250 Black, 52",2181.5625,174.525 +SO47935,1,9/27/2020,Bruce Sai,"Road-250 Black, 48",2181.5625,174.525 +SO47931,1,9/27/2020,Lacey Gao,"Road-250 Red, 52",2443.35,195.468 +SO47932,1,9/27/2020,Kurt Yuan,"Road-250 Black, 44",2181.5625,174.525 +SO47933,1,9/27/2020,Jerome Hernandez,"Road-250 Black, 44",2181.5625,174.525 +SO47934,1,9/27/2020,Melissa Hughes,"Road-550-W Yellow, 42",1000.4375,80.035 +SO47936,1,9/27/2020,Noah Hill,"Road-650 Red, 62",782.99,62.6392 +SO47942,1,9/28/2020,Jaclyn Zhao,"Road-650 Black, 62",782.99,62.6392 +SO47941,1,9/28/2020,Erica Ye,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47940,1,9/28/2020,Anna Martinez,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO47939,1,9/28/2020,Theodore Dominguez,"Road-250 Red, 58",2181.5625,174.525 +SO47938,1,9/28/2020,Latoya Deng,"Road-250 Red, 58",2181.5625,174.525 +SO47937,1,9/28/2020,Jennifer Morris,"Road-650 Red, 58",782.99,62.6392 +SO47953,1,9/29/2020,Whitney Suri,"Road-250 Red, 48",2443.35,195.468 +SO47952,1,9/29/2020,Toni Garcia,"Road-250 Red, 48",2443.35,195.468 +SO47943,1,9/29/2020,Douglas Fernandez,"Road-550-W Yellow, 42",1000.4375,80.035 +SO47949,1,9/29/2020,Katherine Wood,"Road-250 Black, 52",2181.5625,174.525 +SO47948,1,9/29/2020,Victoria Jones,"Road-250 Red, 48",2443.35,195.468 +SO47947,1,9/29/2020,Aidan Gonzales,"Road-550-W Yellow, 44",1000.4375,80.035 +SO47945,1,9/29/2020,Ashlee Deng,"Road-250 Red, 52",2443.35,195.468 +SO47946,1,9/29/2020,Audrey Moreno,"Road-250 Red, 48",2443.35,195.468 +SO47951,1,9/29/2020,Mindy Kumar,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47954,1,9/29/2020,Jon Wang,"Road-650 Red, 60",782.99,62.6392 +SO47950,1,9/29/2020,Fernando Patterson,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO47944,1,9/29/2020,Cory Chandra,"Mountain-200 Black, 46",2049.0982,163.9279 +SO47959,1,9/30/2020,Pedro Serrano,"Road-650 Red, 44",782.99,62.6392 +SO47957,1,9/30/2020,Paige Griffin,"Road-550-W Yellow, 48",1000.4375,80.035 +SO47955,1,9/30/2020,Casey Chander,"Road-250 Black, 52",2181.5625,174.525 +SO47956,1,9/30/2020,Michele Gutierrez,"Road-250 Red, 48",2443.35,195.468 +SO47958,1,9/30/2020,Stephanie Gonzalez,"Road-650 Red, 48",782.99,62.6392 +SO48096,1,10/1/2020,Jose Wang,"Road-650 Red, 48",782.99,62.6392 +SO48093,1,10/1/2020,Andre Martinez,"Road-250 Black, 52",2181.5625,174.525 +SO48095,1,10/1/2020,Todd Zhang,"Road-650 Black, 58",782.99,62.6392 +SO48098,1,10/1/2020,Ruben Martin,"Road-250 Black, 52",2181.5625,174.525 +SO48097,1,10/1/2020,Drew Andersen,"Road-250 Red, 48",2443.35,195.468 +SO48094,1,10/1/2020,Kaylee Collins,"Road-250 Red, 52",2443.35,195.468 +SO48099,1,10/2/2020,Kristy Munoz,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48101,1,10/2/2020,Orlando Blanco,"Road-250 Red, 48",2443.35,195.468 +SO48102,1,10/2/2020,Tony Xu,"Road-250 Black, 58",2181.5625,174.525 +SO48100,1,10/2/2020,Miguel Bennett,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48105,1,10/3/2020,Stacy Moreno,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48107,1,10/3/2020,Alexis Long,"Road-250 Red, 52",2443.35,195.468 +SO48108,1,10/3/2020,Kelsey Nara,"Road-550-W Yellow, 48",1000.4375,80.035 +SO48106,1,10/3/2020,Ruth Fernandez,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48104,1,10/3/2020,Roy Romero,"Road-650 Red, 60",782.99,62.6392 +SO48103,1,10/3/2020,Arturo Shen,"Road-250 Black, 52",2181.5625,174.525 +SO48109,1,10/4/2020,Jennifer Walker,"Road-250 Red, 48",2443.35,195.468 +SO48112,1,10/5/2020,Nancy Martinez,"Road-250 Red, 58",2181.5625,174.525 +SO48111,1,10/5/2020,Charles Sanchez,"Road-550-W Yellow, 40",1000.4375,80.035 +SO48110,1,10/5/2020,Kelli Sun,"Road-250 Red, 58",2181.5625,174.525 +SO48113,1,10/5/2020,Kristina Arun,"Road-650 Black, 60",782.99,62.6392 +SO48114,1,10/5/2020,Isaac Morris,"Road-650 Red, 58",782.99,62.6392 +SO48115,1,10/5/2020,Barbara Huang,"Road-650 Red, 58",782.99,62.6392 +SO48124,1,10/6/2020,Briana Carlson,"Road-650 Red, 44",782.99,62.6392 +SO48121,1,10/6/2020,Cassandra Arthur,"Road-250 Red, 48",2443.35,195.468 +SO48122,1,10/6/2020,Nancy Sanchez,"Road-250 Red, 48",2443.35,195.468 +SO48118,1,10/6/2020,Desiree Ortega,"Road-250 Black, 52",2181.5625,174.525 +SO48120,1,10/6/2020,Victoria Smith,"Road-650 Red, 62",782.99,62.6392 +SO48116,1,10/6/2020,Valerie Zheng,"Road-550-W Yellow, 38",1000.4375,80.035 +SO48117,1,10/6/2020,Cindy Sara,"Road-250 Black, 52",2181.5625,174.525 +SO48119,1,10/6/2020,Karla Tang,"Road-250 Red, 58",2181.5625,174.525 +SO48123,1,10/6/2020,Denise Mehta,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48126,1,10/7/2020,Samantha Gonzales,"Road-550-W Yellow, 44",1000.4375,80.035 +SO48125,1,10/7/2020,Maria Peterson,"Road-550-W Yellow, 48",1000.4375,80.035 +SO48129,1,10/7/2020,Evelyn Madan,"Road-250 Black, 52",2181.5625,174.525 +SO48127,1,10/7/2020,Jackson Powell,"Road-650 Black, 52",782.99,62.6392 +SO48128,1,10/7/2020,Fernando Smith,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48132,1,10/8/2020,Nathan Taylor,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48131,1,10/8/2020,Austin Kumar,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48133,1,10/8/2020,Armando Vazquez,"Road-250 Black, 52",2181.5625,174.525 +SO48134,1,10/8/2020,Roberto Diaz,"Road-250 Red, 58",2181.5625,174.525 +SO48135,1,10/8/2020,Terrance Madan,"Road-550-W Yellow, 40",1000.4375,80.035 +SO48130,1,10/8/2020,Wayne Lal,"Road-250 Red, 44",2443.35,195.468 +SO48136,1,10/8/2020,Juan Peterson,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48138,1,10/9/2020,Diane Ruiz,"Road-250 Black, 44",2181.5625,174.525 +SO48137,1,10/9/2020,Suzanne Zhou,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48140,1,10/9/2020,Donna Kumar,"Road-650 Red, 52",782.99,62.6392 +SO48139,1,10/9/2020,Julio Romero,"Road-250 Red, 52",2443.35,195.468 +SO48147,1,10/10/2020,Jake Chen,"Road-250 Black, 52",2181.5625,174.525 +SO48146,1,10/10/2020,Juan Vazquez,"Road-250 Red, 58",2181.5625,174.525 +SO48143,1,10/10/2020,Regina Subram,"Road-650 Red, 44",782.99,62.6392 +SO48144,1,10/10/2020,Stacy Ruiz,"Road-250 Red, 52",2443.35,195.468 +SO48142,1,10/10/2020,Alejandro Lal,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48141,1,10/10/2020,Walter Serrano,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48145,1,10/10/2020,Riley Sanchez,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48152,1,10/11/2020,Katherine Thomas,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48158,1,10/11/2020,Nelson Rubio,"Road-650 Red, 48",782.99,62.6392 +SO48153,1,10/11/2020,Toni Gonzalez,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48148,1,10/11/2020,Katrina Sharma,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48150,1,10/11/2020,Marshall Lin,"Road-250 Red, 48",2443.35,195.468 +SO48149,1,10/11/2020,Adrienne Sanz,"Road-250 Red, 58",2181.5625,174.525 +SO48151,1,10/11/2020,Darrell Andersen,"Road-650 Black, 58",782.99,62.6392 +SO48156,1,10/11/2020,Theresa Vazquez,"Road-250 Black, 52",2181.5625,174.525 +SO48155,1,10/11/2020,Clarence Shan,"Road-250 Red, 58",2181.5625,174.525 +SO48154,1,10/11/2020,Clarence Xie,"Road-250 Black, 52",2181.5625,174.525 +SO48157,1,10/11/2020,Kaylee Edwards,"Road-250 Red, 58",2181.5625,174.525 +SO48163,1,10/12/2020,Ebony Mehta,"Road-250 Black, 48",2181.5625,174.525 +SO48159,1,10/12/2020,Gerald Romero,"Road-550-W Yellow, 48",1000.4375,80.035 +SO48161,1,10/12/2020,Abigail Williams,"Road-250 Red, 58",2181.5625,174.525 +SO48160,1,10/12/2020,George Louverdis,"Road-250 Red, 58",2181.5625,174.525 +SO48162,1,10/12/2020,Amanda Ward,"Road-250 Red, 48",2443.35,195.468 +SO48164,1,10/12/2020,Alisha Shen,"Road-650 Red, 48",782.99,62.6392 +SO48167,1,10/13/2020,Faith Hayes,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48166,1,10/13/2020,Marcus Martinez,"Road-250 Red, 44",2443.35,195.468 +SO48165,1,10/13/2020,Darren Diaz,"Road-250 Black, 44",2181.5625,174.525 +SO48168,1,10/13/2020,Mitchell Shen,"Road-250 Black, 44",2181.5625,174.525 +SO48171,1,10/14/2020,Hailey Russell,"Road-250 Red, 52",2443.35,195.468 +SO48173,1,10/14/2020,Victoria Davis,"Road-250 Black, 48",2181.5625,174.525 +SO48172,1,10/14/2020,Wyatt Bennett,"Road-250 Red, 48",2443.35,195.468 +SO48169,1,10/14/2020,Tony Chander,"Road-250 Black, 52",2181.5625,174.525 +SO48170,1,10/14/2020,Meredith Prasad,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48174,1,10/15/2020,Jeffery Chen,"Road-250 Red, 52",2443.35,195.468 +SO48176,1,10/15/2020,Amanda Griffin,"Road-650 Black, 62",782.99,62.6392 +SO48175,1,10/15/2020,Taylor Ross,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48182,1,10/16/2020,Michelle Gray,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48179,1,10/16/2020,Logan Mitchell,"Road-250 Red, 48",2443.35,195.468 +SO48177,1,10/16/2020,Gary Dominguez,"Road-550-W Yellow, 42",1000.4375,80.035 +SO48180,1,10/16/2020,Kelli Hu,"Road-250 Black, 58",2181.5625,174.525 +SO48183,1,10/16/2020,Troy Sara,"Road-250 Black, 44",2181.5625,174.525 +SO48184,1,10/16/2020,Marc Blanco,"Road-550-W Yellow, 38",1000.4375,80.035 +SO48178,1,10/16/2020,Diana Ortega,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48181,1,10/16/2020,Blake Mitchell,"Road-250 Red, 52",2443.35,195.468 +SO48185,1,10/17/2020,Nathan Jenkins,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48188,1,10/17/2020,Kara Lal,"Road-250 Black, 52",2181.5625,174.525 +SO48187,1,10/17/2020,Marshall Sutton,"Road-650 Black, 60",782.99,62.6392 +SO48186,1,10/17/2020,Deanna Garcia,"Road-250 Black, 58",2181.5625,174.525 +SO48189,1,10/17/2020,Cameron Bryant,"Road-650 Red, 62",782.99,62.6392 +SO48190,1,10/17/2020,Kathryn She,"Road-650 Red, 60",782.99,62.6392 +SO48196,1,10/18/2020,Devin Green,"Road-650 Red, 44",782.99,62.6392 +SO48197,1,10/18/2020,Pedro Suri,"Road-650 Red, 60",782.99,62.6392 +SO48193,1,10/18/2020,Renee Ruiz,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48191,1,10/18/2020,Micah Lin,"Road-650 Red, 52",782.99,62.6392 +SO48195,1,10/18/2020,Arthur Fernandez,"Road-250 Red, 58",2181.5625,174.525 +SO48194,1,10/18/2020,Ian Price,"Road-250 Red, 48",2443.35,195.468 +SO48192,1,10/18/2020,Jessie Suarez,"Road-250 Black, 52",2181.5625,174.525 +SO48198,1,10/19/2020,Alisha Wang,"Road-550-W Yellow, 48",1000.4375,80.035 +SO48199,1,10/19/2020,Cameron Anderson,"Road-250 Black, 44",2181.5625,174.525 +SO48200,1,10/19/2020,Wyatt Perez,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48201,1,10/19/2020,Kyle Gonzalez,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48206,1,10/20/2020,Warren Black,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48205,1,10/20/2020,Seth Taylor,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48204,1,10/20/2020,Aidan Foster,"Road-650 Black, 60",782.99,62.6392 +SO48209,1,10/20/2020,Connor Perez,"Road-650 Red, 58",782.99,62.6392 +SO48208,1,10/20/2020,Lindsey Luo,"Road-250 Red, 52",2443.35,195.468 +SO48207,1,10/20/2020,Carolyn Gonzalez,"Road-250 Black, 44",2181.5625,174.525 +SO48210,1,10/20/2020,Elizabeth Alexander,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48202,1,10/20/2020,Kathleen Ortega,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48203,1,10/20/2020,Faith Ward,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48213,1,10/21/2020,Nicolas Kumar,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48212,1,10/21/2020,Joseph Taylor,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48216,1,10/21/2020,Lawrence Alvarez,"Road-650 Red, 62",782.99,62.6392 +SO48217,1,10/21/2020,Nathan Robinson,"Road-650 Red, 62",782.99,62.6392 +SO48211,1,10/21/2020,Kaitlin Rana,"Road-550-W Yellow, 42",1000.4375,80.035 +SO48214,1,10/21/2020,Ebony Moreno,"Road-250 Red, 44",2443.35,195.468 +SO48215,1,10/21/2020,Sydney Hill,"Road-550-W Yellow, 44",1000.4375,80.035 +SO48219,1,10/22/2020,Charles Weisman,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48218,1,10/22/2020,Andrew Jones,"Road-250 Red, 44",2443.35,195.468 +SO48221,1,10/22/2020,Victoria Gray,"Road-650 Black, 62",782.99,62.6392 +SO48220,1,10/22/2020,Candace Madan,"Road-250 Black, 48",2181.5625,174.525 +SO48225,1,10/23/2020,Lance Sanz,"Road-250 Red, 58",2181.5625,174.525 +SO48222,1,10/23/2020,Brianna Torres,"Road-550-W Yellow, 38",1000.4375,80.035 +SO48223,1,10/23/2020,Gabrielle Cooper,"Road-550-W Yellow, 40",1000.4375,80.035 +SO48226,1,10/23/2020,Pamela Lopez,"Road-650 Red, 44",782.99,62.6392 +SO48224,1,10/23/2020,Mariah Patterson,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48231,1,10/24/2020,Hunter Hayes,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48236,1,10/24/2020,Hector Gutierrez,"Road-650 Black, 44",782.99,62.6392 +SO48229,1,10/24/2020,Jack Scott,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48230,1,10/24/2020,Riley Morgan,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48227,1,10/24/2020,Madison Hayes,"Road-250 Red, 44",2443.35,195.468 +SO48234,1,10/24/2020,Alisha Zheng,"Road-250 Black, 44",2181.5625,174.525 +SO48233,1,10/24/2020,Devon Luo,"Road-250 Red, 58",2181.5625,174.525 +SO48235,1,10/24/2020,Alyssa White,"Road-650 Red, 58",782.99,62.6392 +SO48232,1,10/24/2020,Julia Wilson,"Road-650 Red, 52",782.99,62.6392 +SO48228,1,10/24/2020,Kate Rai,"Road-250 Red, 44",2443.35,195.468 +SO48238,1,10/25/2020,Theodore Vazquez,"Road-250 Red, 44",2443.35,195.468 +SO48244,1,10/25/2020,Cedric Kumar,"Road-250 Red, 58",2181.5625,174.525 +SO48243,1,10/25/2020,Amy He,"Road-250 Red, 58",2181.5625,174.525 +SO48240,1,10/25/2020,Tiffany Hu,"Road-650 Red, 60",782.99,62.6392 +SO48237,1,10/25/2020,Ashley Hughes,"Road-250 Black, 58",2181.5625,174.525 +SO48239,1,10/25/2020,Evan Howard,"Road-250 Black, 44",2181.5625,174.525 +SO48242,1,10/25/2020,Angela Barnes,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48241,1,10/25/2020,Chloe Ramirez,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48246,1,10/26/2020,Mitchell Xu,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48245,1,10/26/2020,Wendy Alvarez,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48248,1,10/26/2020,Yolanda Raje,"Road-650 Red, 48",782.99,62.6392 +SO48250,1,10/26/2020,Karen Cai,"Road-250 Red, 52",2443.35,195.468 +SO48247,1,10/26/2020,Mario Nath,"Road-250 Black, 44",2181.5625,174.525 +SO48249,1,10/26/2020,Natalie Wilson,"Road-650 Black, 62",782.99,62.6392 +SO48251,1,10/27/2020,Lorrin Smith-Bates,"Road-550-W Yellow, 48",1000.4375,80.035 +SO48257,1,10/27/2020,Hailey Wood,"Road-650 Red, 58",782.99,62.6392 +SO48258,1,10/27/2020,Shane Chandra,"Road-650 Red, 62",782.99,62.6392 +SO48262,1,10/27/2020,Grant Yuan,"Road-550-W Yellow, 42",1000.4375,80.035 +SO48252,1,10/27/2020,Grace Howard,"Road-650 Red, 58",782.99,62.6392 +SO48253,1,10/27/2020,Juan Rogers,"Road-250 Red, 48",2443.35,195.468 +SO48254,1,10/27/2020,Emma Cook,"Road-550-W Yellow, 40",1000.4375,80.035 +SO48256,1,10/27/2020,Caroline Foster,"Road-550-W Yellow, 42",1000.4375,80.035 +SO48255,1,10/27/2020,Cassidy Griffin,"Road-550-W Yellow, 42",1000.4375,80.035 +SO48263,1,10/27/2020,Yolanda Goel,"Road-650 Red, 48",782.99,62.6392 +SO48264,1,10/27/2020,Tiffany Zhu,"Road-650 Red, 48",782.99,62.6392 +SO48259,1,10/27/2020,Christian Wilson,"Road-650 Red, 44",782.99,62.6392 +SO48260,1,10/27/2020,Zachary Williams,"Road-650 Red, 60",782.99,62.6392 +SO48261,1,10/27/2020,Eduardo Bell,"Road-650 Red, 48",782.99,62.6392 +SO48267,1,10/28/2020,Katherine Miller,"Road-650 Red, 44",782.99,62.6392 +SO48266,1,10/28/2020,Alexander Walker,"Road-250 Red, 52",2443.35,195.468 +SO48270,1,10/28/2020,Krista Ruiz,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48269,1,10/28/2020,Erica Xu,"Road-650 Red, 62",782.99,62.6392 +SO48268,1,10/28/2020,Kelvin Shen,"Road-250 Red, 52",2443.35,195.468 +SO48265,1,10/28/2020,Brianna Kelly,"Road-250 Red, 48",2443.35,195.468 +SO48273,1,10/29/2020,Martin Suri,"Road-250 Red, 48",2443.35,195.468 +SO48274,1,10/29/2020,Margaret Xu,"Road-250 Red, 52",2443.35,195.468 +SO48275,1,10/29/2020,Megan Price,"Road-550-W Yellow, 44",1000.4375,80.035 +SO48272,1,10/29/2020,Andres Pal,"Road-250 Red, 58",2181.5625,174.525 +SO48271,1,10/29/2020,Brett Madan,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48276,1,10/29/2020,Reginald Ortega,"Road-650 Red, 62",782.99,62.6392 +SO48282,1,10/30/2020,Jada Sanchez,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48279,1,10/30/2020,Devon Goel,"Road-550-W Yellow, 38",1000.4375,80.035 +SO48280,1,10/30/2020,Emily Martin,"Road-250 Black, 52",2181.5625,174.525 +SO48281,1,10/30/2020,Christian Foster,"Road-250 Red, 58",2181.5625,174.525 +SO48277,1,10/30/2020,Andre Arun,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48284,1,10/30/2020,Bryant Sai,"Road-250 Black, 52",2181.5625,174.525 +SO48278,1,10/30/2020,Stanley Gonzalez,"Road-250 Red, 44",2443.35,195.468 +SO48283,1,10/30/2020,Joan King,"Road-650 Red, 60",782.99,62.6392 +SO48285,1,10/30/2020,Miguel Alexander,"Road-650 Red, 60",782.99,62.6392 +SO48406,1,10/31/2020,Abigail Jenkins,"Road-650 Red, 44",782.99,62.6392 +SO48401,1,10/31/2020,Karl Stone,"Road-250 Black, 48",2181.5625,174.525 +SO48402,1,10/31/2020,Dennis Chen,"Road-250 Black, 58",2181.5625,174.525 +SO48407,1,10/31/2020,Valerie Lu,"Road-250 Black, 48",2181.5625,174.525 +SO48408,1,10/31/2020,Jon Guo,"Road-250 Black, 58",2181.5625,174.525 +SO48409,1,10/31/2020,Briana Ashe,"Road-250 Red, 52",2443.35,195.468 +SO48400,1,10/31/2020,Whitney Martinez,"Road-650 Red, 44",782.99,62.6392 +SO48405,1,10/31/2020,Alejandro Luo,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48404,1,10/31/2020,Walter Suarez,"Road-250 Black, 52",2181.5625,174.525 +SO48403,1,10/31/2020,Taylor Hughes,"Road-550-W Yellow, 40",1000.4375,80.035 +SO48410,1,10/31/2020,Emily Perry,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48415,1,11/1/2020,Devin Walker,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48419,1,11/1/2020,Alejandro Xu,"Road-650 Black, 44",782.99,62.6392 +SO48413,1,11/1/2020,Christina Ramirez,"Road-550-W Yellow, 40",1000.4375,80.035 +SO48414,1,11/1/2020,Marcus Barnes,"Road-250 Red, 48",2443.35,195.468 +SO48418,1,11/1/2020,Claudia Zhang,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48417,1,11/1/2020,Maurice Jai,"Road-250 Red, 44",2443.35,195.468 +SO48411,1,11/1/2020,Jessica Patterson,"Road-250 Red, 58",2181.5625,174.525 +SO48416,1,11/1/2020,Jennifer Torres,"Road-650 Red, 58",782.99,62.6392 +SO48412,1,11/1/2020,Evelyn Raman,"Road-650 Black, 52",782.99,62.6392 +SO48423,1,11/2/2020,Cedric Xie,"Road-650 Black, 48",782.99,62.6392 +SO48421,1,11/2/2020,Stacey Sun,"Road-550-W Yellow, 44",1000.4375,80.035 +SO48422,1,11/2/2020,Teresa Diaz,"Road-250 Black, 58",2181.5625,174.525 +SO48425,1,11/2/2020,Kurt Anand,"Road-250 Black, 58",2181.5625,174.525 +SO48434,1,11/2/2020,Mallory Moreno,"Road-250 Black, 52",2181.5625,174.525 +SO48435,1,11/2/2020,Barbara Liang,"Road-250 Black, 52",2181.5625,174.525 +SO48433,1,11/2/2020,Barbara Zeng,"Road-250 Black, 58",2181.5625,174.525 +SO48432,1,11/2/2020,Pedro Rubio,"Road-250 Black, 52",2181.5625,174.525 +SO48428,1,11/2/2020,Sydney Collins,"Road-250 Red, 58",2181.5625,174.525 +SO48427,1,11/2/2020,Jessica Martinez,"Road-550-W Yellow, 48",1000.4375,80.035 +SO48426,1,11/2/2020,Eduardo Scott,"Road-550-W Yellow, 40",1000.4375,80.035 +SO48420,1,11/2/2020,Lacey Shan,"Road-250 Black, 52",2181.5625,174.525 +SO48424,1,11/2/2020,Alfredo Navarro,"Road-250 Black, 52",2181.5625,174.525 +SO48429,1,11/2/2020,Tara Raji,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48431,1,11/2/2020,Thomas Hill,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48430,1,11/2/2020,Gabrielle Ward,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48436,1,11/3/2020,Lauren Wood,"Road-550-W Yellow, 48",1000.4375,80.035 +SO48438,1,11/3/2020,Evelyn Rodriguez,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48437,1,11/3/2020,Elijah Perez,"Road-650 Red, 62",782.99,62.6392 +SO48447,1,11/4/2020,Destiny White,"Road-650 Red, 44",782.99,62.6392 +SO48445,1,11/4/2020,Jay Chandra,"Road-650 Black, 52",782.99,62.6392 +SO48440,1,11/4/2020,Frank Suarez,"Road-650 Black, 62",782.99,62.6392 +SO48439,1,11/4/2020,Ethan Butler,"Road-550-W Yellow, 48",1000.4375,80.035 +SO48448,1,11/4/2020,Jerome Dominguez,"Road-250 Black, 48",2181.5625,174.525 +SO48449,1,11/4/2020,Barry Sai,"Road-250 Red, 52",2443.35,195.468 +SO48451,1,11/4/2020,Mary Nelson,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48442,1,11/4/2020,Dennis Guo,"Road-250 Black, 52",2181.5625,174.525 +SO48443,1,11/4/2020,Sean Hernandez,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48444,1,11/4/2020,Amanda Morris,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48450,1,11/4/2020,Morgan Richardson,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48441,1,11/4/2020,Jeremiah Townsend,"Road-550-W Yellow, 48",1000.4375,80.035 +SO48446,1,11/4/2020,Isabella Thomas,"Road-650 Black, 44",782.99,62.6392 +SO48455,1,11/5/2020,Omar Yuan,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48454,1,11/5/2020,Eugene Zhao,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48457,1,11/5/2020,Levi Mehta,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48452,1,11/5/2020,Robert Rodriguez,"Road-250 Red, 44",2443.35,195.468 +SO48456,1,11/5/2020,Timothy Cooper,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48453,1,11/5/2020,Molly Lopez,"Road-550-W Yellow, 42",1000.4375,80.035 +SO48461,1,11/6/2020,Raul Chander,"Road-550-W Yellow, 48",1000.4375,80.035 +SO48466,1,11/6/2020,Sydney Robinson,"Road-650 Black, 58",782.99,62.6392 +SO48467,1,11/6/2020,Eduardo Cooper,"Road-650 Black, 58",782.99,62.6392 +SO48468,1,11/6/2020,Adam Sharma,"Road-650 Black, 62",782.99,62.6392 +SO48458,1,11/6/2020,Deanna Kapoor,"Road-250 Red, 58",2181.5625,174.525 +SO48460,1,11/6/2020,Willie Shan,"Road-250 Red, 58",2181.5625,174.525 +SO48463,1,11/6/2020,Lawrence Dominguez,"Road-250 Red, 58",2181.5625,174.525 +SO48462,1,11/6/2020,Jaclyn Shan,"Road-650 Red, 48",782.99,62.6392 +SO48471,1,11/6/2020,Tommy Goel,"Road-250 Black, 48",2181.5625,174.525 +SO48472,1,11/6/2020,Brittney She,"Road-250 Black, 44",2181.5625,174.525 +SO48469,1,11/6/2020,Nina She,"Road-250 Black, 52",2181.5625,174.525 +SO48470,1,11/6/2020,Karl Andersen,"Road-250 Black, 58",2181.5625,174.525 +SO48459,1,11/6/2020,Derrick Vazquez,"Road-250 Black, 58",2181.5625,174.525 +SO48464,1,11/6/2020,Kristi Gonzalez,"Road-250 Black, 48",2181.5625,174.525 +SO48474,1,11/6/2020,Noah Russell,"Road-650 Red, 48",782.99,62.6392 +SO48473,1,11/6/2020,Arturo Xie,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48465,1,11/6/2020,Dalton Taylor,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48477,1,11/7/2020,Kayla Henderson,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48485,1,11/7/2020,Mario Johnsen,"Road-650 Black, 60",782.99,62.6392 +SO48480,1,11/7/2020,Gabrielle Evans,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48476,1,11/7/2020,Christina Cooper,"Road-550-W Yellow, 42",1000.4375,80.035 +SO48484,1,11/7/2020,Cassandra Van,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48479,1,11/7/2020,Rebekah Arthur,"Road-250 Black, 44",2181.5625,174.525 +SO48478,1,11/7/2020,Isabella Davis,"Road-250 Red, 58",2181.5625,174.525 +SO48482,1,11/7/2020,Krystal Li,"Road-550-W Yellow, 44",1000.4375,80.035 +SO48483,1,11/7/2020,Arthur Gomez,"Road-550-W Yellow, 38",1000.4375,80.035 +SO48481,1,11/7/2020,Rachel Ross,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48475,1,11/7/2020,Damien Liu,"Road-250 Red, 52",2443.35,195.468 +SO48487,1,11/8/2020,Julie Jai,"Road-650 Black, 60",782.99,62.6392 +SO48486,1,11/8/2020,David Jones,"Road-650 Black, 52",782.99,62.6392 +SO48490,1,11/8/2020,Kelsey Lal,"Road-550-W Yellow, 38",1000.4375,80.035 +SO48489,1,11/8/2020,Justin Thompson,"Road-250 Red, 48",2443.35,195.468 +SO48491,1,11/8/2020,Lydia Suri,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48488,1,11/8/2020,Kari Gomez,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48492,1,11/8/2020,Michele Rai,"Road-650 Red, 52",782.99,62.6392 +SO48502,1,11/9/2020,Crystal Chen,"Road-650 Black, 60",782.99,62.6392 +SO48495,1,11/9/2020,Noah Yang,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48496,1,11/9/2020,Sheila Ruiz,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48497,1,11/9/2020,Hannah Harris,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48493,1,11/9/2020,Albert Moreno,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48499,1,11/9/2020,Casey Vazquez,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48500,1,11/9/2020,Johnny Rai,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48494,1,11/9/2020,Sydney Ward,"Road-550-W Yellow, 42",1000.4375,80.035 +SO48498,1,11/9/2020,Amy Cai,"Road-550-W Yellow, 44",1000.4375,80.035 +SO48501,1,11/9/2020,Karl Raje,"Road-550-W Yellow, 40",1000.4375,80.035 +SO48514,1,11/10/2020,Jade Murphy,"Road-650 Black, 44",782.99,62.6392 +SO48513,1,11/10/2020,Alvin Lu,"Road-650 Red, 58",782.99,62.6392 +SO48515,1,11/10/2020,Julie Yuan,"Road-250 Black, 48",2181.5625,174.525 +SO48504,1,11/10/2020,Pamela Sanchez,"Road-650 Black, 48",782.99,62.6392 +SO48512,1,11/10/2020,Marcus Perry,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48507,1,11/10/2020,Jonathan Jackson,"Road-550-W Yellow, 48",1000.4375,80.035 +SO48503,1,11/10/2020,Dennis Yang,"Road-250 Red, 52",2443.35,195.468 +SO48505,1,11/10/2020,Krista Gutierrez,"Road-250 Red, 58",2181.5625,174.525 +SO48506,1,11/10/2020,Whitney Subram,"Road-250 Black, 58",2181.5625,174.525 +SO48516,1,11/10/2020,Carmen Perez,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48508,1,11/10/2020,Cole Rivera,"Road-250 Black, 52",2181.5625,174.525 +SO48510,1,11/10/2020,Isaiah Stewart,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48511,1,11/10/2020,Jasmine Harris,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48509,1,11/10/2020,Alisha Alan,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48529,1,11/11/2020,Olivia Flores,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48527,1,11/11/2020,Isaiah Peterson,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48533,1,11/11/2020,Lindsey Shen,"Road-650 Red, 48",782.99,62.6392 +SO48526,1,11/11/2020,Charles Thompson,"Road-250 Black, 48",2181.5625,174.525 +SO48532,1,11/11/2020,Bianca Gao,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48530,1,11/11/2020,Gregory Becker,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48531,1,11/11/2020,Whitney Kov�r,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48522,1,11/11/2020,Erik Rubio,"Road-250 Red, 52",2443.35,195.468 +SO48524,1,11/11/2020,Kelvin Lal,"Road-250 Black, 52",2181.5625,174.525 +SO48525,1,11/11/2020,Wyatt Anderson,"Road-550-W Yellow, 42",1000.4375,80.035 +SO48528,1,11/11/2020,Eddie Ortega,"Road-250 Black, 58",2181.5625,174.525 +SO48523,1,11/11/2020,Christine Raje,"Road-250 Black, 52",2181.5625,174.525 +SO48517,1,11/11/2020,Luke Gonzalez,"Road-250 Red, 44",2443.35,195.468 +SO48521,1,11/11/2020,Kurt Xu,"Road-250 Red, 58",2181.5625,174.525 +SO48520,1,11/11/2020,Stanley Sanchez,"Road-250 Black, 52",2181.5625,174.525 +SO48518,1,11/11/2020,Bonnie Luo,"Road-550-W Yellow, 38",1000.4375,80.035 +SO48519,1,11/11/2020,Bradley Kumar,"Road-550-W Yellow, 38",1000.4375,80.035 +SO48535,1,11/12/2020,Katelyn Green,"Road-650 Black, 44",782.99,62.6392 +SO48534,1,11/12/2020,Cheryl Martin,"Road-250 Red, 58",2181.5625,174.525 +SO48539,1,11/12/2020,Kelsey Shen,"Road-250 Black, 52",2181.5625,174.525 +SO48538,1,11/12/2020,Joe Schmidt,"Road-250 Black, 58",2181.5625,174.525 +SO48541,1,11/12/2020,Timothy Parker,"Road-250 Red, 44",2443.35,195.468 +SO48540,1,11/12/2020,Logan Johnson,"Road-250 Black, 52",2181.5625,174.525 +SO48543,1,11/12/2020,Warren Cai,"Road-550-W Yellow, 44",1000.4375,80.035 +SO48536,1,11/12/2020,Elizabeth Robinson,"Road-550-W Yellow, 44",1000.4375,80.035 +SO48544,1,11/12/2020,Jaclyn Guo,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48545,1,11/12/2020,Francisco Ashe,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48537,1,11/12/2020,Kristina Schmidt,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48542,1,11/12/2020,Emily Jenkins,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48558,1,11/13/2020,Dustin Andersen,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48554,1,11/13/2020,Jan Howard,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48560,1,11/13/2020,Hannah Lewis,"Road-650 Red, 44",782.99,62.6392 +SO48561,1,11/13/2020,Edward Wilson,"Road-650 Black, 48",782.99,62.6392 +SO48559,1,11/13/2020,Catherine Cox,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48553,1,11/13/2020,Brandon Jai,"Road-250 Red, 52",2443.35,195.468 +SO48552,1,11/13/2020,Rafael Ye,"Road-550-W Yellow, 38",1000.4375,80.035 +SO48546,1,11/13/2020,Leonard Pal,"Road-250 Black, 52",2181.5625,174.525 +SO48549,1,11/13/2020,Frederick Vance,"Road-250 Black, 48",2181.5625,174.525 +SO48556,1,11/13/2020,Jill Diaz,"Road-250 Black, 52",2181.5625,174.525 +SO48557,1,11/13/2020,Brandy Fernandez,"Road-250 Red, 52",2443.35,195.468 +SO48551,1,11/13/2020,Douglas Sai,"Road-650 Red, 52",782.99,62.6392 +SO48548,1,11/13/2020,Kelly Flores,"Road-250 Red, 52",2443.35,195.468 +SO48555,1,11/13/2020,Mackenzie Murphy,"Road-650 Red, 62",782.99,62.6392 +SO48550,1,11/13/2020,Devon Sharma,"Road-650 Red, 44",782.99,62.6392 +SO48547,1,11/13/2020,Alicia Andersen,"Road-550-W Yellow, 42",1000.4375,80.035 +SO48564,1,11/14/2020,Craig Carlson,"Road-250 Black, 48",2181.5625,174.525 +SO48562,1,11/14/2020,Edwin Deng,"Road-250 Black, 48",2181.5625,174.525 +SO48563,1,11/14/2020,Drew Xu,"Road-650 Black, 48",782.99,62.6392 +SO48566,1,11/14/2020,Jessie Moreno,"Road-250 Black, 48",2181.5625,174.525 +SO48565,1,11/14/2020,Elizabeth West,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48577,1,11/15/2020,Lacey Pal,"Road-650 Black, 60",782.99,62.6392 +SO48570,1,11/15/2020,Jennifer Robinson,"Road-550-W Yellow, 48",1000.4375,80.035 +SO48572,1,11/15/2020,Stacey Hee,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48569,1,11/15/2020,Beth Romero,"Road-650 Red, 62",782.99,62.6392 +SO48573,1,11/15/2020,Carlos Baker,"Road-650 Red, 48",782.99,62.6392 +SO48574,1,11/15/2020,Kelly Griffin,"Road-650 Red, 58",782.99,62.6392 +SO48568,1,11/15/2020,Jake Zheng,"Road-650 Red, 44",782.99,62.6392 +SO48567,1,11/15/2020,Damien Lal,"Road-250 Black, 52",2181.5625,174.525 +SO48571,1,11/15/2020,Austin Lewis,"Road-250 Black, 52",2181.5625,174.525 +SO48575,1,11/15/2020,Kelli Raji,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48576,1,11/15/2020,Devon Kennedy,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48586,1,11/16/2020,Bryant Sanchez,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48579,1,11/16/2020,Haley Morgan,"Road-250 Black, 58",2181.5625,174.525 +SO48580,1,11/16/2020,Isabelle Patterson,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48582,1,11/16/2020,Richard Howard,"Road-650 Black, 52",782.99,62.6392 +SO48578,1,11/16/2020,Ian Torres,"Road-250 Black, 52",2181.5625,174.525 +SO48584,1,11/16/2020,Tamara Shen,"Road-250 Black, 58",2181.5625,174.525 +SO48583,1,11/16/2020,Kathryn Yuan,"Road-250 Black, 52",2181.5625,174.525 +SO48585,1,11/16/2020,Carl Shan,"Road-550-W Yellow, 48",1000.4375,80.035 +SO48587,1,11/16/2020,Nancy Kovar,"Road-650 Red, 60",782.99,62.6392 +SO48588,1,11/16/2020,Michelle Sanchez,"Road-650 Black, 44",782.99,62.6392 +SO48581,1,11/16/2020,Isabella Moore,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48594,1,11/17/2020,Richard Robinson,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48597,1,11/17/2020,Kevin Collins,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48590,1,11/17/2020,Ronald Rodriguez,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48591,1,11/17/2020,Mya Perry,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48596,1,11/17/2020,Barbara Lal,"Road-250 Black, 44",2181.5625,174.525 +SO48595,1,11/17/2020,Tony Natsuhara,"Road-250 Black, 48",2181.5625,174.525 +SO48589,1,11/17/2020,Leah Xu,"Road-550-W Yellow, 44",1000.4375,80.035 +SO48592,1,11/17/2020,Tiffany Lin,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48593,1,11/17/2020,Erika Serrano,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48598,1,11/17/2020,Ebony Munoz,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48610,1,11/18/2020,Sara Morgan,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48612,1,11/18/2020,Carol Nelson,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48611,1,11/18/2020,Brendan Goldstein,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48599,1,11/18/2020,Jenny Lin,"Road-250 Black, 52",2181.5625,174.525 +SO48602,1,11/18/2020,Ruth Madan,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48600,1,11/18/2020,Laura Huang,"Road-550-W Yellow, 42",1000.4375,80.035 +SO48606,1,11/18/2020,Patricia Madan,"Road-250 Red, 44",2443.35,195.468 +SO48607,1,11/18/2020,Bryant Kapoor,"Road-250 Black, 52",2181.5625,174.525 +SO48603,1,11/18/2020,Joe Belson,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48601,1,11/18/2020,Dylan Long,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48609,1,11/18/2020,Jordyn Perry,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48608,1,11/18/2020,Jenna Hernandez,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48605,1,11/18/2020,Colin Goel,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48604,1,11/18/2020,Abigail Kelly,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48626,1,11/19/2020,Hunter Gonzales,"Road-650 Black, 60",782.99,62.6392 +SO48625,1,11/19/2020,Barbara Beck,"Road-650 Black, 62",782.99,62.6392 +SO48618,1,11/19/2020,Angela Diaz,"Road-650 Black, 58",782.99,62.6392 +SO48619,1,11/19/2020,Tonya Kumar,"Road-250 Red, 48",2443.35,195.468 +SO48620,1,11/19/2020,James Evans,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48615,1,11/19/2020,Joanna Hernandez,"Road-550-W Yellow, 40",1000.4375,80.035 +SO48614,1,11/19/2020,Randy Hu,"Road-250 Black, 48",2181.5625,174.525 +SO48613,1,11/19/2020,Edwin Zhou,"Road-250 Black, 48",2181.5625,174.525 +SO48617,1,11/19/2020,Nathan Henderson,"Road-250 Red, 58",2181.5625,174.525 +SO48616,1,11/19/2020,Lucas Howard,"Road-250 Black, 44",2181.5625,174.525 +SO48621,1,11/19/2020,Joy Ramos,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48622,1,11/19/2020,Bradley Lal,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48623,1,11/19/2020,Curtis Wang,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48624,1,11/19/2020,Cheryl Navarro,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48628,1,11/20/2020,Johnny Lal,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48629,1,11/20/2020,Kara Pal,"Road-550-W Yellow, 48",1000.4375,80.035 +SO48627,1,11/20/2020,Troy Rodriguez,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48635,1,11/21/2020,Andy Romero,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48630,1,11/21/2020,Alexandra Ross,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48640,1,11/21/2020,Zachary Jackson,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48639,1,11/21/2020,Julia Cox,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48633,1,11/21/2020,Julia Washington,"Road-650 Black, 44",782.99,62.6392 +SO48631,1,11/21/2020,Karla Anand,"Road-250 Black, 48",2181.5625,174.525 +SO48632,1,11/21/2020,Warren He,"Road-250 Black, 58",2181.5625,174.525 +SO48636,1,11/21/2020,Aaron Li,"Road-650 Red, 62",782.99,62.6392 +SO48637,1,11/21/2020,Cameron Lal,"Road-650 Black, 62",782.99,62.6392 +SO48638,1,11/21/2020,Kaitlyn Brooks,"Road-650 Black, 60",782.99,62.6392 +SO48634,1,11/21/2020,Wesley Zheng,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48641,1,11/21/2020,Cheryl Blanco,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48646,1,11/22/2020,Luke Campbell,"Road-250 Red, 52",2443.35,195.468 +SO48642,1,11/22/2020,Margaret Ma,"Road-250 Red, 58",2181.5625,174.525 +SO48645,1,11/22/2020,Seth Simmons,"Road-550-W Yellow, 44",1000.4375,80.035 +SO48644,1,11/22/2020,James Ross,"Road-550-W Yellow, 44",1000.4375,80.035 +SO48649,1,11/22/2020,Alvin Kumar,"Road-650 Black, 44",782.99,62.6392 +SO48643,1,11/22/2020,David Martinez,"Road-650 Black, 52",782.99,62.6392 +SO48653,1,11/22/2020,Ashley Anderson,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48651,1,11/22/2020,Keith Yuan,"Road-250 Black, 52",2181.5625,174.525 +SO48650,1,11/22/2020,Carly Jai,"Road-250 Black, 44",2181.5625,174.525 +SO48652,1,11/22/2020,Chelsea Mehta,"Road-250 Red, 44",2443.35,195.468 +SO48648,1,11/22/2020,Mary Perez,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48647,1,11/22/2020,Lauren Barnes,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48660,1,11/23/2020,Natalie Powell,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48659,1,11/23/2020,Franklin Zhou,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48662,1,11/23/2020,Hector Blanco,"Road-250 Red, 48",2443.35,195.468 +SO48665,1,11/23/2020,Theodore Moreno,"Road-650 Black, 60",782.99,62.6392 +SO48656,1,11/23/2020,Andy Diaz,"Road-650 Black, 62",782.99,62.6392 +SO48661,1,11/23/2020,Caleb Shan,"Road-650 Black, 58",782.99,62.6392 +SO48654,1,11/23/2020,Julio Dominguez,"Road-250 Black, 48",2181.5625,174.525 +SO48655,1,11/23/2020,Meagan Schmidt,"Road-550-W Yellow, 42",1000.4375,80.035 +SO48657,1,11/23/2020,Dana Alvarez,"Road-250 Black, 44",2181.5625,174.525 +SO48664,1,11/23/2020,Sandra Lu,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48666,1,11/23/2020,Wayne Tang,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48663,1,11/23/2020,Sydney Cook,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48658,1,11/23/2020,Mayra Martinez,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48671,1,11/24/2020,Ebony Ramos,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48673,1,11/24/2020,Briana Diaz,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48670,1,11/24/2020,Eduardo Sanchez,"Road-250 Black, 52",2181.5625,174.525 +SO48668,1,11/24/2020,Tony Pal,"Road-550-W Yellow, 48",1000.4375,80.035 +SO48667,1,11/24/2020,Clarence Huang,"Road-550-W Yellow, 48",1000.4375,80.035 +SO48669,1,11/24/2020,Chloe Watson,"Road-650 Red, 48",782.99,62.6392 +SO48672,1,11/24/2020,Nicole Cox,"Road-250 Black, 58",2181.5625,174.525 +SO48674,1,11/24/2020,Casey Suarez,"Road-650 Black, 60",782.99,62.6392 +SO48679,1,11/25/2020,Aaron Nelson,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48678,1,11/25/2020,Jose Alexander,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48680,1,11/25/2020,Hunter Diaz,"Road-650 Black, 48",782.99,62.6392 +SO48676,1,11/25/2020,Jason Li,"Road-250 Red, 52",2443.35,195.468 +SO48681,1,11/25/2020,Willie Xu,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48682,1,11/25/2020,Deanna Martin,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48675,1,11/25/2020,Jose Martin,"Road-250 Black, 58",2181.5625,174.525 +SO48677,1,11/25/2020,Olivia Kelly,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48687,1,11/26/2020,Carl She,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48690,1,11/26/2020,Dalton Miller,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48685,1,11/26/2020,Taylor Stewart,"Road-250 Red, 48",2443.35,195.468 +SO48688,1,11/26/2020,Jodi Chapman,"Road-250 Black, 44",2181.5625,174.525 +SO48689,1,11/26/2020,Heather Zhou,"Road-550-W Yellow, 42",1000.4375,80.035 +SO48683,1,11/26/2020,Gilbert Sharma,"Road-550-W Yellow, 42",1000.4375,80.035 +SO48684,1,11/26/2020,Claudia Holt,"Road-250 Black, 58",2181.5625,174.525 +SO48691,1,11/26/2020,Jamie Sanz,"Road-650 Black, 44",782.99,62.6392 +SO48686,1,11/26/2020,Joshua Thompson,"Road-250 Red, 58",2181.5625,174.525 +SO48693,1,11/27/2020,Jack Phillips,"Road-250 Red, 52",2443.35,195.468 +SO48695,1,11/27/2020,Elizabeth Russell,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48698,1,11/27/2020,Jasmine Simmons,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48692,1,11/27/2020,Alejandro Zeng,"Road-550-W Yellow, 38",1000.4375,80.035 +SO48696,1,11/27/2020,Christy Raje,"Road-250 Red, 44",2443.35,195.468 +SO48697,1,11/27/2020,Kelli Chande,"Road-250 Red, 58",2181.5625,174.525 +SO48700,1,11/27/2020,Lucas Foster,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48699,1,11/27/2020,Clarence Wu,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48701,1,11/27/2020,Brendan Raji,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48694,1,11/27/2020,Ann Rodriguez,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48710,1,11/28/2020,Xavier Bailey,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48705,1,11/28/2020,Stefanie Malhotra,"Road-250 Black, 44",2181.5625,174.525 +SO48703,1,11/28/2020,Suzanne Hu,"Road-250 Red, 48",2443.35,195.468 +SO48709,1,11/28/2020,Isabella Roberts,"Road-550-W Yellow, 38",1000.4375,80.035 +SO48715,1,11/28/2020,Michele Kumar,"Road-250 Black, 48",2181.5625,174.525 +SO48714,1,11/28/2020,Isabelle Long,"Road-250 Black, 52",2181.5625,174.525 +SO48706,1,11/28/2020,Roberto Townsend,"Road-550-W Yellow, 44",1000.4375,80.035 +SO48707,1,11/28/2020,Charles Baker,"Road-650 Red, 44",782.99,62.6392 +SO48702,1,11/28/2020,Karen Xu,"Road-250 Black, 52",2181.5625,174.525 +SO48708,1,11/28/2020,Alisha Kumar,"Road-250 Black, 52",2181.5625,174.525 +SO48704,1,11/28/2020,Jaclyn Luo,"Road-250 Red, 48",2443.35,195.468 +SO48711,1,11/28/2020,Katherine Harris,"Road-650 Red, 44",782.99,62.6392 +SO48712,1,11/28/2020,Andrea Stewart,"Road-650 Black, 44",782.99,62.6392 +SO48713,1,11/28/2020,Connor Jai,"Road-650 Black, 60",782.99,62.6392 +SO48717,1,11/29/2020,Paula Navarro,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48716,1,11/29/2020,Alfredo Blanco,"Road-250 Black, 52",2181.5625,174.525 +SO48719,1,11/29/2020,Kristi Suarez,"Road-250 Red, 44",2443.35,195.468 +SO48722,1,11/29/2020,Jose Baker,"Road-250 Red, 48",2443.35,195.468 +SO48721,1,11/29/2020,Brett Raman,"Road-250 Red, 44",2443.35,195.468 +SO48720,1,11/29/2020,Latoya Tang,"Road-250 Red, 58",2181.5625,174.525 +SO48718,1,11/29/2020,Tamara Chen,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48723,1,11/30/2020,Sebastian Watson,"Road-250 Red, 48",2443.35,195.468 +SO48728,1,11/30/2020,Hannah Butler,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48727,1,11/30/2020,Colleen West,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48726,1,11/30/2020,Stanley Patel,"Road-550-W Yellow, 40",1000.4375,80.035 +SO48724,1,11/30/2020,Kellie Serrano,"Road-650 Black, 48",782.99,62.6392 +SO48725,1,11/30/2020,Deanna Martinez,"Road-250 Black, 52",2181.5625,174.525 +SO48729,1,11/30/2020,Keith She,"Road-650 Red, 62",782.99,62.6392 +SO48799,1,12/1/2020,Katherine Washington,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48795,1,12/1/2020,Stacey Liang,"Road-250 Black, 48",2181.5625,174.525 +SO48801,1,12/1/2020,Eric Chen,"Road-650 Red, 44",782.99,62.6392 +SO48800,1,12/1/2020,Shannon Li,"Road-650 Black, 52",782.99,62.6392 +SO48802,1,12/1/2020,Ebony Sara,"Road-550-W Yellow, 40",1000.4375,80.035 +SO48798,1,12/1/2020,Martin Garcia,"Road-250 Red, 48",2443.35,195.468 +SO48796,1,12/1/2020,Wendy Ortega,"Road-250 Black, 48",2181.5625,174.525 +SO48797,1,12/1/2020,Allison Cox,"Road-550-W Yellow, 42",1000.4375,80.035 +SO48812,1,12/2/2020,Brenda Arun,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48813,1,12/2/2020,Joe Subram,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48814,1,12/2/2020,Armando Alonso,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48804,1,12/2/2020,Alisha Shan,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48809,1,12/2/2020,Cesar Prasad,"Road-250 Red, 48",2443.35,195.468 +SO48810,1,12/2/2020,Kristi Moreno,"Road-250 Red, 48",2443.35,195.468 +SO48807,1,12/2/2020,Henry Sara,"Road-650 Red, 62",782.99,62.6392 +SO48806,1,12/2/2020,Terry Xie,"Road-650 Black, 48",782.99,62.6392 +SO48811,1,12/2/2020,Thomas Edwards,"Road-650 Black, 60",782.99,62.6392 +SO48808,1,12/2/2020,Joe Sanchez,"Road-250 Red, 44",2443.35,195.468 +SO48805,1,12/2/2020,Jamie Dominguez,"Road-650 Red, 52",782.99,62.6392 +SO48803,1,12/2/2020,Caitlin Morris,"Road-550-W Yellow, 40",1000.4375,80.035 +SO48815,1,12/3/2020,Hector Torres,"Road-250 Black, 52",2181.5625,174.525 +SO48818,1,12/3/2020,Katelyn Phillips,"Road-650 Black, 58",782.99,62.6392 +SO48821,1,12/3/2020,Sharon Xu,"Road-250 Black, 58",2181.5625,174.525 +SO48816,1,12/3/2020,Stefanie Rodriguez,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48819,1,12/3/2020,Alan Wang,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48820,1,12/3/2020,Diane Martin,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48817,1,12/3/2020,Christopher White,"Road-250 Black, 44",2181.5625,174.525 +SO48827,1,12/4/2020,Brian Gray,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48825,1,12/4/2020,Damien Lin,"Road-250 Black, 44",2181.5625,174.525 +SO48824,1,12/4/2020,Ivan Perez,"Road-250 Red, 48",2443.35,195.468 +SO48828,1,12/4/2020,Javier Browning,"Road-250 Red, 48",2443.35,195.468 +SO48829,1,12/4/2020,Danny Ramos,"Road-250 Red, 44",2443.35,195.468 +SO48826,1,12/4/2020,Willie Yuan,"Road-250 Red, 48",2443.35,195.468 +SO48823,1,12/4/2020,Mary Carter,"Road-250 Red, 48",2443.35,195.468 +SO48822,1,12/4/2020,Gerald Gomez,"Road-250 Black, 58",2181.5625,174.525 +SO48830,1,12/5/2020,Shawna Jai,"Road-250 Red, 58",2181.5625,174.525 +SO48832,1,12/5/2020,Brittney Wu,"Road-250 Black, 44",2181.5625,174.525 +SO48833,1,12/5/2020,Monique Moreno,"Road-250 Black, 44",2181.5625,174.525 +SO48831,1,12/5/2020,Bruce Raman,"Road-650 Red, 44",782.99,62.6392 +SO48835,1,12/5/2020,Brianna Gonzales,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48836,1,12/5/2020,Ebony Carlson,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48834,1,12/5/2020,Jocelyn Diaz,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48838,1,12/6/2020,Brad Raji,"Road-250 Black, 44",2181.5625,174.525 +SO48837,1,12/6/2020,Veronica Gonzalez,"Road-250 Red, 58",2181.5625,174.525 +SO48840,1,12/7/2020,Kendra Sanz,"Road-250 Red, 48",2443.35,195.468 +SO48841,1,12/7/2020,Cesar Gonzalez,"Road-550-W Yellow, 38",1000.4375,80.035 +SO48839,1,12/7/2020,Erick Lopez,"Road-250 Red, 44",2443.35,195.468 +SO48843,1,12/7/2020,Emily Thompson,"Road-650 Red, 62",782.99,62.6392 +SO48844,1,12/7/2020,Grace Long,"Road-650 Black, 44",782.99,62.6392 +SO48847,1,12/7/2020,Gabriel Baker,"Road-550-W Yellow, 40",1000.4375,80.035 +SO48845,1,12/7/2020,Damien Ye,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48846,1,12/7/2020,Jerry Sharma,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48842,1,12/7/2020,Todd Huang,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48854,1,12/8/2020,Ronald Sai,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48855,1,12/8/2020,Andres Raji,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48856,1,12/8/2020,Glenn Zhang,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48852,1,12/8/2020,Caitlin James,"Road-650 Red, 62",782.99,62.6392 +SO48853,1,12/8/2020,Desiree Navarro,"Road-650 Black, 62",782.99,62.6392 +SO48848,1,12/8/2020,Terrance Smith,"Road-550-W Yellow, 40",1000.4375,80.035 +SO48851,1,12/8/2020,David Simpson,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48857,1,12/8/2020,Bruce Moreno,"Road-650 Black, 52",782.99,62.6392 +SO48849,1,12/8/2020,Ian Flores,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48850,1,12/8/2020,Sheena Nara,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48861,1,12/9/2020,Seth Smith,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48862,1,12/9/2020,Alexandria Reed,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48863,1,12/9/2020,Richard Flores,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48858,1,12/9/2020,Denise Raman,"Road-250 Red, 44",2443.35,195.468 +SO48859,1,12/9/2020,Scott Seely,"Road-250 Black, 44",2181.5625,174.525 +SO48865,1,12/9/2020,Richard Anderson,"Road-550-W Yellow, 38",1000.4375,80.035 +SO48864,1,12/9/2020,Jasmine Lewis,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48860,1,12/9/2020,Preston Rodriguez,"Road-250 Black, 48",2181.5625,174.525 +SO48866,1,12/9/2020,Tonya Andersen,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48874,1,12/10/2020,Pedro Rana,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48875,1,12/10/2020,Naomi Jimenez,"Road-550-W Yellow, 38",1000.4375,80.035 +SO48869,1,12/10/2020,Alfredo Munoz,"Road-250 Red, 58",2181.5625,174.525 +SO48870,1,12/10/2020,Billy Blanco,"Road-250 Red, 58",2181.5625,174.525 +SO48871,1,12/10/2020,Alexandra Howard,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48872,1,12/10/2020,Katherine Robinson,"Road-650 Black, 60",782.99,62.6392 +SO48873,1,12/10/2020,Robert Thomas,"Road-650 Red, 60",782.99,62.6392 +SO48867,1,12/10/2020,Linda Munoz,"Road-250 Black, 44",2181.5625,174.525 +SO48868,1,12/10/2020,Bethany Deng,"Road-650 Black, 44",782.99,62.6392 +SO48877,1,12/10/2020,Lucas Hughes,"Road-650 Red, 48",782.99,62.6392 +SO48876,1,12/10/2020,Dustin Pal,"Road-650 Black, 60",782.99,62.6392 +SO48882,1,12/11/2020,Wyatt Washington,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48878,1,12/11/2020,Rafael Pal,"Road-250 Black, 48",2181.5625,174.525 +SO48881,1,12/11/2020,Deborah Deng,"Road-250 Red, 58",2181.5625,174.525 +SO48884,1,12/11/2020,Curtis He,"Road-550-W Yellow, 48",1000.4375,80.035 +SO48880,1,12/11/2020,Janelle Madan,"Road-250 Red, 44",2443.35,195.468 +SO48883,1,12/11/2020,Carmen Lopez,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48879,1,12/11/2020,Michele Suarez,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48886,1,12/12/2020,Sergio Sai,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48890,1,12/12/2020,Jay Raman,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48891,1,12/12/2020,Jessie She,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48885,1,12/12/2020,Zoe Cox,"Road-250 Red, 58",2181.5625,174.525 +SO48888,1,12/12/2020,Audrey Rubio,"Road-650 Red, 48",782.99,62.6392 +SO48887,1,12/12/2020,Rachael Sanchez,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48889,1,12/12/2020,Mya Bryant,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48903,1,12/13/2020,Kaylee Allen,"Road-650 Black, 52",782.99,62.6392 +SO48900,1,12/13/2020,Morgan Powell,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48897,1,12/13/2020,Theodore Browning,"Road-250 Black, 52",2181.5625,174.525 +SO48896,1,12/13/2020,Jimmy Serrano,"Road-250 Black, 44",2181.5625,174.525 +SO48893,1,12/13/2020,Leonard Andersen,"Road-250 Black, 52",2181.5625,174.525 +SO48892,1,12/13/2020,Tanya Gutierrez,"Road-550-W Yellow, 48",1000.4375,80.035 +SO48894,1,12/13/2020,Tabitha Diaz,"Road-550-W Yellow, 40",1000.4375,80.035 +SO48895,1,12/13/2020,Nathan Miller,"Road-550-W Yellow, 40",1000.4375,80.035 +SO48899,1,12/13/2020,Corey Lal,"Road-250 Black, 44",2181.5625,174.525 +SO48901,1,12/13/2020,Lacey Kumar,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48898,1,12/13/2020,Ian Scott,"Road-250 Black, 44",2181.5625,174.525 +SO48902,1,12/13/2020,Darren Dominguez,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48909,1,12/14/2020,Theresa Munoz,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48908,1,12/14/2020,Johnathan Madan,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48904,1,12/14/2020,Brittany Price,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48905,1,12/14/2020,Alex Hernandez,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48906,1,12/14/2020,Eric Jenkins,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48907,1,12/14/2020,Jose Clark,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48919,1,12/15/2020,Darryl Liang,"Road-650 Red, 44",782.99,62.6392 +SO48914,1,12/15/2020,Grace White,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48917,1,12/15/2020,Jarrod Rodriguez,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48916,1,12/15/2020,Cole Ramirez,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48918,1,12/15/2020,Diana Alvarez,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48913,1,12/15/2020,Dalton Coleman,"Road-250 Red, 48",2443.35,195.468 +SO48912,1,12/15/2020,J�sus Alonso,"Road-650 Red, 48",782.99,62.6392 +SO48911,1,12/15/2020,Isabella Washington,"Road-650 Black, 60",782.99,62.6392 +SO48910,1,12/15/2020,Zachary Martinez,"Road-250 Black, 52",2181.5625,174.525 +SO48915,1,12/15/2020,Jamie Zhang,"Road-650 Black, 60",782.99,62.6392 +SO48925,1,12/16/2020,Denise Lopez,"Road-650 Red, 62",782.99,62.6392 +SO48928,1,12/16/2020,Nathaniel Howard,"Road-650 Black, 58",782.99,62.6392 +SO48926,1,12/16/2020,Bruce Sanz,"Road-250 Black, 44",2181.5625,174.525 +SO48929,1,12/16/2020,Krystal Liu,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48923,1,12/16/2020,Kaitlyn Jenkins,"Road-550-W Yellow, 40",1000.4375,80.035 +SO48922,1,12/16/2020,Jodi Shan,"Road-250 Red, 44",2443.35,195.468 +SO48930,1,12/16/2020,Latasha Dominguez,"Road-250 Red, 58",2181.5625,174.525 +SO48921,1,12/16/2020,Mandy Gao,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48920,1,12/16/2020,Adriana Madan,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48927,1,12/16/2020,Wyatt Miller,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48924,1,12/16/2020,Ana Butler,"Road-250 Red, 44",2443.35,195.468 +SO48934,1,12/17/2020,Jan Green,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48933,1,12/17/2020,Aaron Hughes,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48932,1,12/17/2020,Kristin Raji,"Road-550-W Yellow, 42",1000.4375,80.035 +SO48937,1,12/17/2020,Pamela Martinez,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48936,1,12/17/2020,Kristi Dominguez,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48935,1,12/17/2020,Richard Bryant,"Road-650 Red, 52",782.99,62.6392 +SO48931,1,12/17/2020,Jerry Shan,"Road-550-W Yellow, 44",1000.4375,80.035 +SO48938,1,12/18/2020,Deanna Diaz,"Road-250 Black, 44",2181.5625,174.525 +SO48939,1,12/18/2020,Tony Chande,"Road-250 Red, 48",2443.35,195.468 +SO48944,1,12/18/2020,Misty Kumar,"Road-550-W Yellow, 40",1000.4375,80.035 +SO48940,1,12/18/2020,Ruben Gutierrez,"Road-650 Red, 62",782.99,62.6392 +SO48943,1,12/18/2020,Bethany Shan,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48942,1,12/18/2020,Elijah Roberts,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48941,1,12/18/2020,Victoria Taylor,"Road-250 Red, 48",2443.35,195.468 +SO48946,1,12/19/2020,Alexis Smith,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48949,1,12/19/2020,Aimee Chen,"Road-650 Black, 60",782.99,62.6392 +SO48948,1,12/19/2020,Tina Chandra,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48947,1,12/19/2020,Meredith Munoz,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48945,1,12/19/2020,Rebecca Adams,"Road-250 Red, 52",2443.35,195.468 +SO48953,1,12/20/2020,Max Ortega,"Road-250 Red, 52",2443.35,195.468 +SO48956,1,12/20/2020,Lydia Sai,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO48952,1,12/20/2020,Johnny Moyer,"Road-250 Red, 44",2443.35,195.468 +SO48955,1,12/20/2020,Eugene He,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48950,1,12/20/2020,Kristen Ye,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48954,1,12/20/2020,Sydney Edwards,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48951,1,12/20/2020,Calvin Kumar,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO48960,1,12/21/2020,Danielle Rivera,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48961,1,12/21/2020,Arturo Xu,"Mountain-200 Black, 38",2049.0982,163.9279 +SO48962,1,12/21/2020,Rebekah Suarez,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48958,1,12/21/2020,Sydney Wood,"Road-250 Black, 52",2181.5625,174.525 +SO48963,1,12/21/2020,Taylor White,"Road-550-W Yellow, 40",1000.4375,80.035 +SO48959,1,12/21/2020,Emmanuel Sai,"Road-250 Black, 48",2181.5625,174.525 +SO48957,1,12/21/2020,Stanley Chandra,"Road-650 Black, 58",782.99,62.6392 +SO48969,1,12/22/2020,Kendra Gomez,"Road-250 Black, 58",2181.5625,174.525 +SO48966,1,12/22/2020,Heather Ma,"Road-250 Black, 44",2181.5625,174.525 +SO48964,1,12/22/2020,Randall Munoz,"Road-250 Red, 58",2181.5625,174.525 +SO48965,1,12/22/2020,Marco Arun,"Road-550-W Yellow, 48",1000.4375,80.035 +SO48968,1,12/22/2020,Benjamin Ross,"Road-250 Red, 58",2181.5625,174.525 +SO48972,1,12/22/2020,Karla Yuan,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48971,1,12/22/2020,Jason Campbell,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48967,1,12/22/2020,Isabella Ross,"Road-550-W Yellow, 44",1000.4375,80.035 +SO48973,1,12/22/2020,Amanda Hall,"Road-650 Black, 62",782.99,62.6392 +SO48970,1,12/22/2020,Jasmine Davis,"Road-550-W Yellow, 42",1000.4375,80.035 +SO48987,1,12/23/2020,Kelvin Sharma,"Road-650 Red, 58",782.99,62.6392 +SO48986,1,12/23/2020,Gregory Nara,"Road-650 Red, 62",782.99,62.6392 +SO48978,1,12/23/2020,Jonathan Wilson,"Road-550-W Yellow, 44",1000.4375,80.035 +SO48979,1,12/23/2020,Sarah Washington,"Road-250 Black, 48",2181.5625,174.525 +SO48984,1,12/23/2020,Cheryl Munoz,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48985,1,12/23/2020,Terry Yuan,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48976,1,12/23/2020,Krystal Liang,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48975,1,12/23/2020,Colin Cai,"Road-550-W Yellow, 44",1000.4375,80.035 +SO48974,1,12/23/2020,Jeremiah Miller,"Road-250 Black, 48",2181.5625,174.525 +SO48982,1,12/23/2020,Samuel Henderson,"Road-650 Red, 60",782.99,62.6392 +SO48983,1,12/23/2020,Keith Raji,"Road-650 Black, 58",782.99,62.6392 +SO48980,1,12/23/2020,Wesley Li,"Road-250 Red, 48",2443.35,195.468 +SO48981,1,12/23/2020,Tiffany Chen,"Road-250 Red, 44",2443.35,195.468 +SO48977,1,12/23/2020,Tyrone Moreno,"Road-650 Red, 58",782.99,62.6392 +SO48993,1,12/24/2020,Carrie Alvarez,"Road-250 Black, 52",2181.5625,174.525 +SO48994,1,12/24/2020,Evan Sanders,"Road-650 Red, 62",782.99,62.6392 +SO48988,1,12/24/2020,Corey Anand,"Road-250 Red, 52",2443.35,195.468 +SO48991,1,12/24/2020,Johnathan Suri,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48990,1,12/24/2020,Emmanuel Lopez,"Mountain-200 Black, 46",2049.0982,163.9279 +SO48992,1,12/24/2020,Andrew Walker,"Road-250 Black, 58",2181.5625,174.525 +SO48989,1,12/24/2020,Lee Rubio,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48995,1,12/25/2020,Kelvin Raji,"Mountain-200 Silver, 42",2071.4196,165.7136 +SO48998,1,12/25/2020,Dawn Zhu,"Road-650 Black, 58",782.99,62.6392 +SO48997,1,12/25/2020,Kyle Parker,"Road-250 Red, 48",2443.35,195.468 +SO48996,1,12/25/2020,Patrick Murphy,"Road-550-W Yellow, 44",1000.4375,80.035 +SO49007,1,12/26/2020,Victoria Cooper,"Mountain-200 Black, 46",2049.0982,163.9279 +SO49006,1,12/26/2020,Juan Ramos,"Mountain-200 Black, 42",2049.0982,163.9279 +SO49000,1,12/26/2020,Dominique Malhotra,"Mountain-200 Black, 42",2049.0982,163.9279 +SO48999,1,12/26/2020,Terrence Yuan,"Road-250 Black, 52",2181.5625,174.525 +SO49002,1,12/26/2020,Alfredo Alonso,"Road-250 Red, 58",2181.5625,174.525 +SO49003,1,12/26/2020,Tiffany Zimmerman,"Road-250 Red, 48",2443.35,195.468 +SO49004,1,12/26/2020,Mario Moyer,"Road-250 Red, 52",2443.35,195.468 +SO49005,1,12/26/2020,Devin Kelly,"Mountain-200 Black, 46",2049.0982,163.9279 +SO49008,1,12/26/2020,Kern Sutton,"Road-650 Red, 52",782.99,62.6392 +SO49001,1,12/26/2020,Teresa Blanco,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO49011,1,12/27/2020,Brooke Rivera,"Mountain-200 Black, 38",2049.0982,163.9279 +SO49010,1,12/27/2020,Kristin Shan,"Road-250 Red, 48",2443.35,195.468 +SO49009,1,12/27/2020,Clayton Anand,"Road-650 Black, 58",782.99,62.6392 +SO49014,1,12/28/2020,Jeremiah Gray,"Road-250 Red, 44",2443.35,195.468 +SO49012,1,12/28/2020,Jon Xu,"Road-250 Red, 44",2443.35,195.468 +SO49013,1,12/28/2020,Andrew Robinson,"Road-250 Red, 52",2443.35,195.468 +SO49015,1,12/28/2020,Barry Sara,"Mountain-200 Silver, 38",2071.4196,165.7136 +SO49016,1,12/28/2020,Bianca Zhao,"Mountain-200 Black, 38",2049.0982,163.9279 +SO49021,1,12/29/2020,Alvin Andersen,"Road-250 Red, 58",2181.5625,174.525 +SO49017,1,12/29/2020,Chad Nath,"Road-250 Black, 48",2181.5625,174.525 +SO49018,1,12/29/2020,Franklin Xie,"Road-250 Red, 58",2181.5625,174.525 +SO49019,1,12/29/2020,Casey Shan,"Road-250 Red, 58",2181.5625,174.525 +SO49020,1,12/29/2020,Stanley Schmidt,"Road-550-W Yellow, 42",1000.4375,80.035 +SO49022,1,12/29/2020,Jerome Vazquez,"Road-250 Black, 52",2181.5625,174.525 +SO49024,1,12/29/2020,Kathleen Jimenez,"Road-650 Black, 48",782.99,62.6392 +SO49023,1,12/29/2020,Julie Tang,"Road-650 Red, 48",782.99,62.6392 +SO49030,1,12/30/2020,Gilbert Zhao,"Road-250 Black, 48",2181.5625,174.525 +SO49029,1,12/30/2020,Walter Romero,"Road-550-W Yellow, 40",1000.4375,80.035 +SO49025,1,12/30/2020,Darryl Guo,"Road-650 Black, 58",782.99,62.6392 +SO49026,1,12/30/2020,Linda Moreno,"Road-250 Red, 52",2443.35,195.468 +SO49027,1,12/30/2020,Justin Simmons,"Road-650 Red, 62",782.99,62.6392 +SO49028,1,12/30/2020,Arturo Sharma,"Mountain-200 Black, 42",2049.0982,163.9279 +SO49033,1,12/31/2020,Brian Torres,"Road-250 Black, 48",2181.5625,174.525 +SO49032,1,12/31/2020,Kristin Jai,"Road-250 Red, 44",2443.35,195.468 +SO49034,1,12/31/2020,Karl Xu,"Road-250 Red, 44",2443.35,195.468 +SO49035,1,12/31/2020,Bruce Rubio,"Road-250 Black, 48",2181.5625,174.525 +SO49037,1,12/31/2020,Devin Thompson,"Mountain-200 Silver, 46",2071.4196,165.7136 +SO49038,1,12/31/2020,Kaylee Phillips,"Mountain-200 Black, 42",2049.0982,163.9279 +SO49031,1,12/31/2020,Thomas Phillips,"Mountain-200 Black, 46",2049.0982,163.9279 +SO49036,1,12/31/2020,Ethan Clark,"Mountain-200 Black, 42",2049.0982,163.9279 diff --git a/Workloads-Specific/DataWarehouse/Medallion_Architecture/sample_files/products.csv b/Workloads-Specific/DataWarehouse/Medallion_Architecture/sample_files/products.csv new file mode 100644 index 0000000..bf3b1c2 --- /dev/null +++ b/Workloads-Specific/DataWarehouse/Medallion_Architecture/sample_files/products.csv @@ -0,0 +1,296 @@ +ProductID,ProductName,Category,ListPrice +771,"Mountain-100 Silver, 38",Mountain Bikes,3399.9900 +772,"Mountain-100 Silver, 42",Mountain Bikes,3399.9900 +773,"Mountain-100 Silver, 44",Mountain Bikes,3399.9900 +774,"Mountain-100 Silver, 48",Mountain Bikes,3399.9900 +775,"Mountain-100 Black, 38",Mountain Bikes,3374.9900 +776,"Mountain-100 Black, 42",Mountain Bikes,3374.9900 +777,"Mountain-100 Black, 44",Mountain Bikes,3374.9900 +778,"Mountain-100 Black, 48",Mountain Bikes,3374.9900 +779,"Mountain-200 Silver, 38",Mountain Bikes,2319.9900 +780,"Mountain-200 Silver, 42",Mountain Bikes,2319.9900 +781,"Mountain-200 Silver, 46",Mountain Bikes,2319.9900 +782,"Mountain-200 Black, 38",Mountain Bikes,2294.9900 +783,"Mountain-200 Black, 42",Mountain Bikes,2294.9900 +784,"Mountain-200 Black, 46",Mountain Bikes,2294.9900 +785,"Mountain-300 Black, 38",Mountain Bikes,1079.9900 +786,"Mountain-300 Black, 40",Mountain Bikes,1079.9900 +787,"Mountain-300 Black, 44",Mountain Bikes,1079.9900 +788,"Mountain-300 Black, 48",Mountain Bikes,1079.9900 +980,"Mountain-400-W Silver, 38",Mountain Bikes,769.4900 +981,"Mountain-400-W Silver, 40",Mountain Bikes,769.4900 +982,"Mountain-400-W Silver, 42",Mountain Bikes,769.4900 +983,"Mountain-400-W Silver, 46",Mountain Bikes,769.4900 +984,"Mountain-500 Silver, 40",Mountain Bikes,564.9900 +985,"Mountain-500 Silver, 42",Mountain Bikes,564.9900 +986,"Mountain-500 Silver, 44",Mountain Bikes,564.9900 +987,"Mountain-500 Silver, 48",Mountain Bikes,564.9900 +988,"Mountain-500 Silver, 52",Mountain Bikes,564.9900 +989,"Mountain-500 Black, 40",Mountain Bikes,539.9900 +990,"Mountain-500 Black, 42",Mountain Bikes,539.9900 +991,"Mountain-500 Black, 44",Mountain Bikes,539.9900 +992,"Mountain-500 Black, 48",Mountain Bikes,539.9900 +993,"Mountain-500 Black, 52",Mountain Bikes,539.9900 +973,"Road-350-W Yellow, 40",Road Bikes,1700.9900 +974,"Road-350-W Yellow, 42",Road Bikes,1700.9900 +975,"Road-350-W Yellow, 44",Road Bikes,1700.9900 +976,"Road-350-W Yellow, 48",Road Bikes,1700.9900 +977,"Road-750 Black, 58",Road Bikes,539.9900 +997,"Road-750 Black, 44",Road Bikes,539.9900 +998,"Road-750 Black, 48",Road Bikes,539.9900 +999,"Road-750 Black, 52",Road Bikes,539.9900 +789,"Road-250 Red, 44",Road Bikes,2443.3500 +790,"Road-250 Red, 48",Road Bikes,2443.3500 +791,"Road-250 Red, 52",Road Bikes,2443.3500 +792,"Road-250 Red, 58",Road Bikes,2443.3500 +793,"Road-250 Black, 44",Road Bikes,2443.3500 +794,"Road-250 Black, 48",Road Bikes,2443.3500 +795,"Road-250 Black, 52",Road Bikes,2443.3500 +796,"Road-250 Black, 58",Road Bikes,2443.3500 +797,"Road-550-W Yellow, 38",Road Bikes,1120.4900 +798,"Road-550-W Yellow, 40",Road Bikes,1120.4900 +799,"Road-550-W Yellow, 42",Road Bikes,1120.4900 +800,"Road-550-W Yellow, 44",Road Bikes,1120.4900 +801,"Road-550-W Yellow, 48",Road Bikes,1120.4900 +749,"Road-150 Red, 62",Road Bikes,3578.2700 +750,"Road-150 Red, 44",Road Bikes,3578.2700 +751,"Road-150 Red, 48",Road Bikes,3578.2700 +752,"Road-150 Red, 52",Road Bikes,3578.2700 +753,"Road-150 Red, 56",Road Bikes,3578.2700 +754,"Road-450 Red, 58",Road Bikes,1457.9900 +755,"Road-450 Red, 60",Road Bikes,1457.9900 +756,"Road-450 Red, 44",Road Bikes,1457.9900 +757,"Road-450 Red, 48",Road Bikes,1457.9900 +758,"Road-450 Red, 52",Road Bikes,1457.9900 +759,"Road-650 Red, 58",Road Bikes,782.9900 +760,"Road-650 Red, 60",Road Bikes,782.9900 +761,"Road-650 Red, 62",Road Bikes,782.9900 +762,"Road-650 Red, 44",Road Bikes,782.9900 +763,"Road-650 Red, 48",Road Bikes,782.9900 +764,"Road-650 Red, 52",Road Bikes,782.9900 +765,"Road-650 Black, 58",Road Bikes,782.9900 +766,"Road-650 Black, 60",Road Bikes,782.9900 +767,"Road-650 Black, 62",Road Bikes,782.9900 +768,"Road-650 Black, 44",Road Bikes,782.9900 +769,"Road-650 Black, 48",Road Bikes,782.9900 +770,"Road-650 Black, 52",Road Bikes,782.9900 +978,"Touring-3000 Blue, 44",Touring Bikes,742.3500 +979,"Touring-3000 Blue, 50",Touring Bikes,742.3500 +953,"Touring-2000 Blue, 60",Touring Bikes,1214.8500 +954,"Touring-1000 Yellow, 46",Touring Bikes,2384.0700 +955,"Touring-1000 Yellow, 50",Touring Bikes,2384.0700 +956,"Touring-1000 Yellow, 54",Touring Bikes,2384.0700 +957,"Touring-1000 Yellow, 60",Touring Bikes,2384.0700 +958,"Touring-3000 Blue, 54",Touring Bikes,742.3500 +959,"Touring-3000 Blue, 58",Touring Bikes,742.3500 +960,"Touring-3000 Blue, 62",Touring Bikes,742.3500 +961,"Touring-3000 Yellow, 44",Touring Bikes,742.3500 +962,"Touring-3000 Yellow, 50",Touring Bikes,742.3500 +963,"Touring-3000 Yellow, 54",Touring Bikes,742.3500 +964,"Touring-3000 Yellow, 58",Touring Bikes,742.3500 +965,"Touring-3000 Yellow, 62",Touring Bikes,742.3500 +966,"Touring-1000 Blue, 46",Touring Bikes,2384.0700 +967,"Touring-1000 Blue, 50",Touring Bikes,2384.0700 +968,"Touring-1000 Blue, 54",Touring Bikes,2384.0700 +969,"Touring-1000 Blue, 60",Touring Bikes,2384.0700 +970,"Touring-2000 Blue, 46",Touring Bikes,1214.8500 +971,"Touring-2000 Blue, 50",Touring Bikes,1214.8500 +972,"Touring-2000 Blue, 54",Touring Bikes,1214.8500 +946,LL Touring Handlebars,Handlebars,46.0900 +947,HL Touring Handlebars,Handlebars,91.5700 +808,LL Mountain Handlebars,Handlebars,44.5400 +809,ML Mountain Handlebars,Handlebars,61.9200 +810,HL Mountain Handlebars,Handlebars,120.2700 +811,LL Road Handlebars,Handlebars,44.5400 +812,ML Road Handlebars,Handlebars,61.9200 +813,HL Road Handlebars,Handlebars,120.2700 +994,LL Bottom Bracket,Bottom Brackets,53.9900 +995,ML Bottom Bracket,Bottom Brackets,101.2400 +996,HL Bottom Bracket,Bottom Brackets,121.4900 +948,Front Brakes,Brakes,106.5000 +907,Rear Brakes,Brakes,106.5000 +952,Chain,Chains,20.2400 +949,LL Crankset,Cranksets,175.4900 +950,ML Crankset,Cranksets,256.4900 +951,HL Crankset,Cranksets,404.9900 +945,Front Derailleur,Derailleurs,91.4900 +894,Rear Derailleur,Derailleurs,121.4600 +802,LL Fork,Forks,148.2200 +803,ML Fork,Forks,175.4900 +804,HL Fork,Forks,229.4900 +805,LL Headset,Headsets,34.2000 +806,ML Headset,Headsets,102.2900 +807,HL Headset,Headsets,124.7300 +739,"HL Mountain Frame - Silver, 42",Mountain Frames,1364.5000 +740,"HL Mountain Frame - Silver, 44",Mountain Frames,1364.5000 +741,"HL Mountain Frame - Silver, 48",Mountain Frames,1364.5000 +742,"HL Mountain Frame - Silver, 46",Mountain Frames,1364.5000 +743,"HL Mountain Frame - Black, 42",Mountain Frames,1349.6000 +744,"HL Mountain Frame - Black, 44",Mountain Frames,1349.6000 +745,"HL Mountain Frame - Black, 48",Mountain Frames,1349.6000 +746,"HL Mountain Frame - Black, 46",Mountain Frames,1349.6000 +747,"HL Mountain Frame - Black, 38",Mountain Frames,1349.6000 +748,"HL Mountain Frame - Silver, 38",Mountain Frames,1364.5000 +814,"ML Mountain Frame - Black, 38",Mountain Frames,348.7600 +830,"ML Mountain Frame - Black, 40",Mountain Frames,348.7600 +831,"ML Mountain Frame - Black, 44",Mountain Frames,348.7600 +832,"ML Mountain Frame - Black, 48",Mountain Frames,348.7600 +924,"LL Mountain Frame - Black, 42",Mountain Frames,249.7900 +925,"LL Mountain Frame - Black, 44",Mountain Frames,249.7900 +926,"LL Mountain Frame - Black, 48",Mountain Frames,249.7900 +927,"LL Mountain Frame - Black, 52",Mountain Frames,249.7900 +917,"LL Mountain Frame - Silver, 42",Mountain Frames,264.0500 +918,"LL Mountain Frame - Silver, 44",Mountain Frames,264.0500 +919,"LL Mountain Frame - Silver, 48",Mountain Frames,264.0500 +920,"LL Mountain Frame - Silver, 52",Mountain Frames,264.0500 +904,"ML Mountain Frame-W - Silver, 40",Mountain Frames,364.0900 +905,"ML Mountain Frame-W - Silver, 42",Mountain Frames,364.0900 +906,"ML Mountain Frame-W - Silver, 46",Mountain Frames,364.0900 +942,"ML Mountain Frame-W - Silver, 38",Mountain Frames,364.0900 +943,"LL Mountain Frame - Black, 40",Mountain Frames,249.7900 +944,"LL Mountain Frame - Silver, 40",Mountain Frames,264.0500 +935,LL Mountain Pedal,Pedals,40.4900 +936,ML Mountain Pedal,Pedals,62.0900 +937,HL Mountain Pedal,Pedals,80.9900 +938,LL Road Pedal,Pedals,40.4900 +939,ML Road Pedal,Pedals,62.0900 +940,HL Road Pedal,Pedals,80.9900 +941,Touring Pedal,Pedals,80.9900 +833,"ML Road Frame-W - Yellow, 40",Road Frames,594.8300 +834,"ML Road Frame-W - Yellow, 42",Road Frames,594.8300 +835,"ML Road Frame-W - Yellow, 44",Road Frames,594.8300 +836,"ML Road Frame-W - Yellow, 48",Road Frames,594.8300 +837,"HL Road Frame - Black, 62",Road Frames,1431.5000 +838,"HL Road Frame - Black, 44",Road Frames,1431.5000 +839,"HL Road Frame - Black, 48",Road Frames,1431.5000 +840,"HL Road Frame - Black, 52",Road Frames,1431.5000 +822,"ML Road Frame-W - Yellow, 38",Road Frames,594.8300 +680,"HL Road Frame - Black, 58",Road Frames,1431.5000 +706,"HL Road Frame - Red, 58",Road Frames,1431.5000 +717,"HL Road Frame - Red, 62",Road Frames,1431.5000 +718,"HL Road Frame - Red, 44",Road Frames,1431.5000 +719,"HL Road Frame - Red, 48",Road Frames,1431.5000 +720,"HL Road Frame - Red, 52",Road Frames,1431.5000 +721,"HL Road Frame - Red, 56",Road Frames,1431.5000 +722,"LL Road Frame - Black, 58",Road Frames,337.2200 +723,"LL Road Frame - Black, 60",Road Frames,337.2200 +724,"LL Road Frame - Black, 62",Road Frames,337.2200 +725,"LL Road Frame - Red, 44",Road Frames,337.2200 +726,"LL Road Frame - Red, 48",Road Frames,337.2200 +727,"LL Road Frame - Red, 52",Road Frames,337.2200 +728,"LL Road Frame - Red, 58",Road Frames,337.2200 +729,"LL Road Frame - Red, 60",Road Frames,337.2200 +730,"LL Road Frame - Red, 62",Road Frames,337.2200 +731,"ML Road Frame - Red, 44",Road Frames,594.8300 +732,"ML Road Frame - Red, 48",Road Frames,594.8300 +733,"ML Road Frame - Red, 52",Road Frames,594.8300 +734,"ML Road Frame - Red, 58",Road Frames,594.8300 +735,"ML Road Frame - Red, 60",Road Frames,594.8300 +736,"LL Road Frame - Black, 44",Road Frames,337.2200 +737,"LL Road Frame - Black, 48",Road Frames,337.2200 +738,"LL Road Frame - Black, 52",Road Frames,337.2200 +908,LL Mountain Seat/Saddle,Saddles,27.1200 +909,ML Mountain Seat/Saddle,Saddles,39.1400 +910,HL Mountain Seat/Saddle,Saddles,52.6400 +911,LL Road Seat/Saddle,Saddles,27.1200 +912,ML Road Seat/Saddle,Saddles,39.1400 +913,HL Road Seat/Saddle,Saddles,52.6400 +914,LL Touring Seat/Saddle,Saddles,27.1200 +915,ML Touring Seat/Saddle,Saddles,39.1400 +916,HL Touring Seat/Saddle,Saddles,52.6400 +895,"LL Touring Frame - Blue, 50",Touring Frames,333.4200 +896,"LL Touring Frame - Blue, 54",Touring Frames,333.4200 +897,"LL Touring Frame - Blue, 58",Touring Frames,333.4200 +898,"LL Touring Frame - Blue, 62",Touring Frames,333.4200 +899,"LL Touring Frame - Yellow, 44",Touring Frames,333.4200 +900,"LL Touring Frame - Yellow, 50",Touring Frames,333.4200 +901,"LL Touring Frame - Yellow, 54",Touring Frames,333.4200 +902,"LL Touring Frame - Yellow, 58",Touring Frames,333.4200 +903,"LL Touring Frame - Blue, 44",Touring Frames,333.4200 +885,"HL Touring Frame - Yellow, 60",Touring Frames,1003.9100 +886,"LL Touring Frame - Yellow, 62",Touring Frames,333.4200 +887,"HL Touring Frame - Yellow, 46",Touring Frames,1003.9100 +888,"HL Touring Frame - Yellow, 50",Touring Frames,1003.9100 +889,"HL Touring Frame - Yellow, 54",Touring Frames,1003.9100 +890,"HL Touring Frame - Blue, 46",Touring Frames,1003.9100 +891,"HL Touring Frame - Blue, 50",Touring Frames,1003.9100 +892,"HL Touring Frame - Blue, 54",Touring Frames,1003.9100 +893,"HL Touring Frame - Blue, 60",Touring Frames,1003.9100 +823,LL Mountain Rear Wheel,Wheels,87.7450 +824,ML Mountain Rear Wheel,Wheels,236.0250 +825,HL Mountain Rear Wheel,Wheels,327.2150 +826,LL Road Rear Wheel,Wheels,112.5650 +827,ML Road Rear Wheel,Wheels,275.3850 +828,HL Road Rear Wheel,Wheels,357.0600 +829,Touring Rear Wheel,Wheels,245.0100 +815,LL Mountain Front Wheel,Wheels,60.7450 +816,ML Mountain Front Wheel,Wheels,209.0250 +817,HL Mountain Front Wheel,Wheels,300.2150 +818,LL Road Front Wheel,Wheels,85.5650 +819,ML Road Front Wheel,Wheels,248.3850 +820,HL Road Front Wheel,Wheels,330.0600 +821,Touring Front Wheel,Wheels,218.0100 +855,"Men's Bib-Shorts, S",Bib-Shorts,89.9900 +856,"Men's Bib-Shorts, M",Bib-Shorts,89.9900 +857,"Men's Bib-Shorts, L",Bib-Shorts,89.9900 +712,AWC Logo Cap,Caps,8.9900 +858,"Half-Finger Gloves, S",Gloves,24.4900 +859,"Half-Finger Gloves, M",Gloves,24.4900 +860,"Half-Finger Gloves, L",Gloves,24.4900 +861,"Full-Finger Gloves, S",Gloves,37.9900 +862,"Full-Finger Gloves, M",Gloves,37.9900 +863,"Full-Finger Gloves, L",Gloves,37.9900 +713,"Long-Sleeve Logo Jersey, S",Jerseys,49.9900 +714,"Long-Sleeve Logo Jersey, M",Jerseys,49.9900 +715,"Long-Sleeve Logo Jersey, L",Jerseys,49.9900 +716,"Long-Sleeve Logo Jersey, XL",Jerseys,49.9900 +881,"Short-Sleeve Classic Jersey, S",Jerseys,53.9900 +882,"Short-Sleeve Classic Jersey, M",Jerseys,53.9900 +883,"Short-Sleeve Classic Jersey, L",Jerseys,53.9900 +884,"Short-Sleeve Classic Jersey, XL",Jerseys,53.9900 +867,"Women's Mountain Shorts, S",Shorts,69.9900 +868,"Women's Mountain Shorts, M",Shorts,69.9900 +869,"Women's Mountain Shorts, L",Shorts,69.9900 +841,"Men's Sports Shorts, S",Shorts,59.9900 +849,"Men's Sports Shorts, M",Shorts,59.9900 +850,"Men's Sports Shorts, L",Shorts,59.9900 +851,"Men's Sports Shorts, XL",Shorts,59.9900 +709,"Mountain Bike Socks, M",Socks,9.5000 +710,"Mountain Bike Socks, L",Socks,9.5000 +874,"Racing Socks, M",Socks,8.9900 +875,"Racing Socks, L",Socks,8.9900 +852,"Women's Tights, S",Tights,74.9900 +853,"Women's Tights, M",Tights,74.9900 +854,"Women's Tights, L",Tights,74.9900 +864,"Classic Vest, S",Vests,63.5000 +865,"Classic Vest, M",Vests,63.5000 +866,"Classic Vest, L",Vests,63.5000 +876,Hitch Rack - 4-Bike,Bike Racks,120.0000 +879,All-Purpose Bike Stand,Bike Stands,159.0000 +870,Water Bottle - 30 oz.,Bottles and Cages,4.9900 +871,Mountain Bottle Cage,Bottles and Cages,9.9900 +872,Road Bottle Cage,Bottles and Cages,8.9900 +877,Bike Wash - Dissolver,Cleaners,7.9500 +878,Fender Set - Mountain,Fenders,21.9800 +711,"Sport-100 Helmet, Blue",Helmets,34.9900 +707,"Sport-100 Helmet, Red",Helmets,34.9900 +708,"Sport-100 Helmet, Black",Helmets,34.9900 +880,Hydration Pack - 70 oz.,Hydration Packs,54.9900 +846,Taillights - Battery-Powered,Lights,13.9900 +847,Headlights - Dual-Beam,Lights,34.9900 +848,Headlights - Weatherproof,Lights,44.9900 +843,Cable Lock,Locks,25.0000 +842,"Touring-Panniers, Large",Panniers,125.0000 +844,Minipump,Pumps,19.9900 +845,Mountain Pump,Pumps,24.9900 +873,Patch Kit/8 Patches,Tires and Tubes,2.2900 +921,Mountain Tire Tube,Tires and Tubes,4.9900 +922,Road Tire Tube,Tires and Tubes,3.9900 +923,Touring Tire Tube,Tires and Tubes,4.9900 +928,LL Mountain Tire,Tires and Tubes,24.9900 +929,ML Mountain Tire,Tires and Tubes,29.9900 +930,HL Mountain Tire,Tires and Tubes,35.0000 +931,LL Road Tire,Tires and Tubes,21.4900 +932,ML Road Tire,Tires and Tubes,24.9900 +933,HL Road Tire,Tires and Tubes,32.6000 +934,Touring Tire,Tires and Tubes,28.9900 \ No newline at end of file diff --git a/Workloads-Specific/DataWarehouse/Medallion_Architecture/src/0_notebook_bronze_to_silver.ipynb b/Workloads-Specific/DataWarehouse/Medallion_Architecture/src/0_notebook_bronze_to_silver.ipynb new file mode 100644 index 0000000..04efdcf --- /dev/null +++ b/Workloads-Specific/DataWarehouse/Medallion_Architecture/src/0_notebook_bronze_to_silver.ipynb @@ -0,0 +1 @@ +{"cells":[{"cell_type":"markdown","source":["# PySpark Code to Move Data from Bronze to Silver"],"metadata":{"nteract":{"transient":{"deleting":false}},"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"ab7f0b7c-b0cc-44ec-9948-61d68f4b0b13"},{"cell_type":"markdown","source":["This is an example on how to work with the medallion architecture. From Bronze to Silver"],"metadata":{"nteract":{"transient":{"deleting":false}},"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"44f47922-4e3b-45cc-81a6-c5de97634f73"},{"cell_type":"markdown","source":["## Working with 2020orders information"],"metadata":{"nteract":{"transient":{"deleting":false}},"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"4e1afae8-b2ef-4e4c-9ac9-485139f19e9c"},{"cell_type":"code","source":["from pyspark.sql.types import *\n","import pyspark.sql.functions \n","from pyspark.sql import *"],"outputs":[],"execution_count":null,"metadata":{"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"febb6c3e-6841-42c1-a633-0da056b7f69c"},{"cell_type":"code","source":["# Read the data from the bronze layer:\n","df_raw_2020orders = spark.read.format(\"delta\").load(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/raw_Bronze.Lakehouse/Tables/2020orders\")\n","\n","df_raw_2020orders.head(2)"],"outputs":[{"output_type":"display_data","data":{"application/vnd.livy.statement-meta+json":{"spark_pool":null,"statement_id":4,"statement_ids":[4],"state":"finished","livy_statement_state":"available","session_id":"ecb846c9-e988-4906-95bc-af67b3aacd94","normalized_state":"finished","queued_time":"2024-10-25T19:11:30.8930212Z","session_start_time":null,"execution_start_time":"2024-10-25T19:14:18.2840528Z","execution_finish_time":"2024-10-25T19:14:24.7554027Z","parent_msg_id":"4d60fa03-18dd-4bbc-adab-cb12ff2ba6cf"},"text/plain":"StatementMeta(, ecb846c9-e988-4906-95bc-af67b3aacd94, 4, Finished, Available, Finished)"},"metadata":{}},{"output_type":"execute_result","execution_count":11,"data":{"text/plain":"[Row(ID='SO45376', Count=1, Date='1/5/2020', Name='Edgar Mehta', Style='Mountain-100 Silver, 38', price=3399.99, tax=271.9992),\n Row(ID='SO45381', Count=1, Date='1/6/2020', Name='Jordan Long', Style='Mountain-100 Silver, 38', price=3399.99, tax=271.9992)]"},"metadata":{}}],"execution_count":2,"metadata":{"jupyter":{"source_hidden":false,"outputs_hidden":false},"nteract":{"transient":{"deleting":false}},"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"6357dc47-1bb1-4391-8f38-b5d5a2abf5b2"},{"cell_type":"code","source":["# Clean the data (e.g., filter out rows with null values in the 'age' column):\n","df_cleaned = df_raw_2020orders.filter(df_raw_2020orders[\"Date\"].isNotNull())\n","print(df_cleaned)"],"outputs":[{"output_type":"display_data","data":{"application/vnd.livy.statement-meta+json":{"spark_pool":null,"statement_id":10,"statement_ids":[10],"state":"finished","livy_statement_state":"available","session_id":"ecb846c9-e988-4906-95bc-af67b3aacd94","normalized_state":"finished","queued_time":"2024-10-25T19:21:35.4162864Z","session_start_time":null,"execution_start_time":"2024-10-25T19:21:35.9099818Z","execution_finish_time":"2024-10-25T19:21:36.2079156Z","parent_msg_id":"d65f6fd9-d9ab-4498-ab5d-0710bab459be"},"text/plain":"StatementMeta(, ecb846c9-e988-4906-95bc-af67b3aacd94, 10, Finished, Available, Finished)"},"metadata":{}},{"output_type":"stream","name":"stdout","text":["DataFrame[ID: string, Count: int, Date: string, Name: string, Style: string, price: double, tax: double]\n"]}],"execution_count":8,"metadata":{"jupyter":{"source_hidden":false,"outputs_hidden":false},"nteract":{"transient":{"deleting":false}},"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"5f5c8125-cbf5-4e00-9d8f-0c437f25b37f"},{"cell_type":"code","source":["# Save the cleaned data to the \"cleansed_Silver\" table in the Silver lakehouse:\n","df_cleaned.write.format(\"delta\").mode(\"overwrite\").save(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/cleansed_test_Silver.Lakehouse/Tables/2020orders_silver\")"],"outputs":[{"output_type":"display_data","data":{"application/vnd.livy.statement-meta+json":{"spark_pool":null,"statement_id":12,"statement_ids":[12],"state":"finished","livy_statement_state":"available","session_id":"ecb846c9-e988-4906-95bc-af67b3aacd94","normalized_state":"finished","queued_time":"2024-10-25T19:23:52.3238132Z","session_start_time":null,"execution_start_time":"2024-10-25T19:23:52.7414203Z","execution_finish_time":"2024-10-25T19:24:09.4412514Z","parent_msg_id":"8c92d669-7856-4961-a9d0-c38d54833ee4"},"text/plain":"StatementMeta(, ecb846c9-e988-4906-95bc-af67b3aacd94, 12, Finished, Available, Finished)"},"metadata":{}}],"execution_count":10,"metadata":{"jupyter":{"source_hidden":false,"outputs_hidden":false},"nteract":{"transient":{"deleting":false}},"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"c83d4e46-2b49-490f-aadb-87a350c85e89"},{"cell_type":"markdown","source":["## Working with products information"],"metadata":{"nteract":{"transient":{"deleting":false}},"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"f830afb3-2b02-4076-800a-85ca9fc33fea"},{"cell_type":"code","source":["# Read data from the Bronze layer\n","bronze_df = spark.read.format(\"delta\").load(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/raw_Bronze.Lakehouse/Tables/products\")\n","# Perform transformations (if any)\n","silver_df = bronze_df # Assuming no transformations for simplicity\n","# Write data to the Silver layer\n","silver_df.write.mode(\"overwrite\").format(\"delta\").save(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/cleansed_test_Silver.Lakehouse/Tables/products_silver\")"],"outputs":[{"output_type":"display_data","data":{"application/vnd.livy.statement-meta+json":{"spark_pool":null,"statement_id":15,"statement_ids":[15],"state":"finished","livy_statement_state":"available","session_id":"ecb846c9-e988-4906-95bc-af67b3aacd94","normalized_state":"finished","queued_time":"2024-10-25T19:27:20.1106109Z","session_start_time":null,"execution_start_time":"2024-10-25T19:27:20.5334249Z","execution_finish_time":"2024-10-25T19:27:25.4936309Z","parent_msg_id":"bf665ff4-43d5-4b02-90a6-6c28640576c3"},"text/plain":"StatementMeta(, ecb846c9-e988-4906-95bc-af67b3aacd94, 15, Finished, Available, Finished)"},"metadata":{}}],"execution_count":13,"metadata":{"jupyter":{"source_hidden":false,"outputs_hidden":false},"nteract":{"transient":{"deleting":false}},"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"7f72ac98-4ece-4a8a-a5c5-5e1fc7273382"}],"metadata":{"kernel_info":{"name":"synapse_pyspark"},"kernelspec":{"name":"synapse_pyspark","language":"Python","display_name":"Synapse PySpark"},"language_info":{"name":"python"},"microsoft":{"language":"python","language_group":"synapse_pyspark","ms_spell_check":{"ms_spell_check_language":"en"}},"widgets":{},"nteract":{"version":"nteract-front-end@1.0.0"},"spark_compute":{"compute_id":"/trident/default","session_options":{"conf":{"spark.synapse.nbs.session.timeout":"1200000"}}},"dependencies":{"lakehouse":{"default_lakehouse":"251cd515-16a3-4555-a3d2-dfd12adb2335","default_lakehouse_name":"raw_Bronze","default_lakehouse_workspace_id":"597e0afc-c8db-4f4d-8464-d13570f5b075"}}},"nbformat":4,"nbformat_minor":5} diff --git a/Workloads-Specific/DataWarehouse/Medallion_Architecture/src/1_notebook_silver_to_gold.ipynb b/Workloads-Specific/DataWarehouse/Medallion_Architecture/src/1_notebook_silver_to_gold.ipynb new file mode 100644 index 0000000..42bf848 --- /dev/null +++ b/Workloads-Specific/DataWarehouse/Medallion_Architecture/src/1_notebook_silver_to_gold.ipynb @@ -0,0 +1 @@ +{"cells":[{"cell_type":"markdown","source":["# PySpark Code to Move Data from Silver to Gold"],"metadata":{"microsoft":{"language":"python","language_group":"synapse_pyspark"},"nteract":{"transient":{"deleting":false}}},"id":"ab7f0b7c-b0cc-44ec-9948-61d68f4b0b13"},{"cell_type":"markdown","source":["This is an example on how to work with the medallion architecture. From Silver to Gold"],"metadata":{"microsoft":{"language":"python","language_group":"synapse_pyspark"},"nteract":{"transient":{"deleting":false}}},"id":"44f47922-4e3b-45cc-81a6-c5de97634f73"},{"cell_type":"markdown","source":["## Working with 2020orders_silver information"],"metadata":{"microsoft":{"language":"python","language_group":"synapse_pyspark"},"nteract":{"transient":{"deleting":false}}},"id":"4e1afae8-b2ef-4e4c-9ac9-485139f19e9c"},{"cell_type":"code","source":["from pyspark.sql.types import *\n","import pyspark.sql.functions \n","from pyspark.sql import *\n","from pyspark.sql.functions import sum\n"],"outputs":[{"output_type":"display_data","data":{"application/vnd.livy.statement-meta+json":{"spark_pool":null,"statement_id":15,"statement_ids":[15],"state":"finished","livy_statement_state":"available","session_id":"8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5","normalized_state":"finished","queued_time":"2024-10-25T20:29:16.4970957Z","session_start_time":null,"execution_start_time":"2024-10-25T20:29:16.9788868Z","execution_finish_time":"2024-10-25T20:29:17.2577679Z","parent_msg_id":"f6330200-43db-4e0b-9e85-773c1fa95042"},"text/plain":"StatementMeta(, 8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5, 15, Finished, Available, Finished)"},"metadata":{}}],"execution_count":13,"metadata":{"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"febb6c3e-6841-42c1-a633-0da056b7f69c"},{"cell_type":"code","source":["# Read the data from the silver layer:\n","df_cleansed_2020orders = spark.read.format(\"delta\").load(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/cleansed_test_Silver.Lakehouse/Tables/2020orders_silver\")\n","\n","df_cleansed_2020orders.head(2)"],"outputs":[{"output_type":"display_data","data":{"application/vnd.livy.statement-meta+json":{"spark_pool":null,"statement_id":16,"statement_ids":[16],"state":"finished","livy_statement_state":"available","session_id":"8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5","normalized_state":"finished","queued_time":"2024-10-25T20:29:17.7525504Z","session_start_time":null,"execution_start_time":"2024-10-25T20:29:18.2199944Z","execution_finish_time":"2024-10-25T20:29:26.3332937Z","parent_msg_id":"901386c6-fa37-4dad-8a8d-34e1276108f8"},"text/plain":"StatementMeta(, 8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5, 16, Finished, Available, Finished)"},"metadata":{}},{"output_type":"execute_result","execution_count":47,"data":{"text/plain":"[Row(ID='SO45376', Count=1, Date='1/5/2020', Name='Edgar Mehta', Style='Mountain-100 Silver, 38', price=3399.99, tax=271.9992),\n Row(ID='SO45381', Count=1, Date='1/6/2020', Name='Jordan Long', Style='Mountain-100 Silver, 38', price=3399.99, tax=271.9992)]"},"metadata":{}}],"execution_count":14,"metadata":{"jupyter":{"outputs_hidden":false,"source_hidden":false},"microsoft":{"language":"python","language_group":"synapse_pyspark"},"nteract":{"transient":{"deleting":false}}},"id":"6357dc47-1bb1-4391-8f38-b5d5a2abf5b2"},{"cell_type":"code","source":["df_cleansed_2020orders = df_cleansed_2020orders.withColumn(\"tax\", df_cleansed_2020orders[\"tax\"].cast(\"int\")) # type to int"],"outputs":[{"output_type":"display_data","data":{"application/vnd.livy.statement-meta+json":{"spark_pool":null,"statement_id":17,"statement_ids":[17],"state":"finished","livy_statement_state":"available","session_id":"8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5","normalized_state":"finished","queued_time":"2024-10-25T20:29:18.1174684Z","session_start_time":null,"execution_start_time":"2024-10-25T20:29:26.7221718Z","execution_finish_time":"2024-10-25T20:29:26.9553583Z","parent_msg_id":"1d52d464-b1ce-40ca-a8b4-ed446b5980fd"},"text/plain":"StatementMeta(, 8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5, 17, Finished, Available, Finished)"},"metadata":{}}],"execution_count":15,"metadata":{"jupyter":{"source_hidden":false,"outputs_hidden":false},"nteract":{"transient":{"deleting":false}},"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"b1478c38-d56e-4a58-a551-405675f4110d"},{"cell_type":"code","source":["df_cleansed_2020orders.printSchema()"],"outputs":[{"output_type":"display_data","data":{"application/vnd.livy.statement-meta+json":{"spark_pool":null,"statement_id":18,"statement_ids":[18],"state":"finished","livy_statement_state":"available","session_id":"8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5","normalized_state":"finished","queued_time":"2024-10-25T20:29:18.3209761Z","session_start_time":null,"execution_start_time":"2024-10-25T20:29:27.3402865Z","execution_finish_time":"2024-10-25T20:29:27.5846334Z","parent_msg_id":"882470dc-dab6-4bef-bf92-1f25c81c4bad"},"text/plain":"StatementMeta(, 8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5, 18, Finished, Available, Finished)"},"metadata":{}},{"output_type":"stream","name":"stdout","text":["root\n |-- ID: string (nullable = true)\n |-- Count: integer (nullable = true)\n |-- Date: string (nullable = true)\n |-- Name: string (nullable = true)\n |-- Style: string (nullable = true)\n |-- price: double (nullable = true)\n |-- tax: integer (nullable = true)\n\n"]}],"execution_count":16,"metadata":{"jupyter":{"source_hidden":false,"outputs_hidden":false},"nteract":{"transient":{"deleting":false}},"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"f9da346b-2b25-463a-821d-6b8d7bda321e"},{"cell_type":"code","source":["# Group and Aggregate the Data:\n","df_aggregated = df_cleansed_2020orders.groupBy(\"Style\").agg(sum(\"price\").alias(\"total_price_vehicles\"))\n","df_aggregated.show(10, truncate=False)\n","print(df_aggregated)"],"outputs":[{"output_type":"display_data","data":{"application/vnd.livy.statement-meta+json":{"spark_pool":null,"statement_id":19,"statement_ids":[19],"state":"finished","livy_statement_state":"available","session_id":"8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5","normalized_state":"finished","queued_time":"2024-10-25T20:29:18.5521281Z","session_start_time":null,"execution_start_time":"2024-10-25T20:29:27.9679539Z","execution_finish_time":"2024-10-25T20:29:34.3035094Z","parent_msg_id":"9a5b30d2-5552-495b-b0a7-c5cfed0bebd8"},"text/plain":"StatementMeta(, 8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5, 19, Finished, Available, Finished)"},"metadata":{}},{"output_type":"stream","name":"stdout","text":["+-----------------------+--------------------+\n|Style |total_price_vehicles|\n+-----------------------+--------------------+\n|Mountain-200 Black, 42 |196713.42720000003 |\n|Mountain-100 Silver, 42|71399.78999999998 |\n|Mountain-200 Silver, 42|159499.30919999976 |\n|Mountain-100 Silver, 44|71399.78999999998 |\n|Road-550-W Yellow, 40 |37016.1875 |\n|Mountain-100 Silver, 38|64599.80999999997 |\n|Road-250 Red, 48 |256551.75000000044 |\n|Road-250 Red, 52 |217458.15000000034 |\n|Road-650 Red, 52 |20301.81200000001 |\n|Road-250 Black, 52 |253061.25 |\n+-----------------------+--------------------+\nonly showing top 10 rows\n\nDataFrame[Style: string, total_price_vehicles: double]\n"]}],"execution_count":17,"metadata":{"jupyter":{"outputs_hidden":false,"source_hidden":false},"microsoft":{"language":"python","language_group":"synapse_pyspark"},"nteract":{"transient":{"deleting":false}}},"id":"5f5c8125-cbf5-4e00-9d8f-0c437f25b37f"},{"cell_type":"code","source":["# Save the cleaned data to the \"curated_Gold\" table in the Gold lakehouse:\n","df_aggregated.write.format(\"delta\").mode(\"overwrite\").save(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/curated_Gold.Lakehouse/Tables/2020orders_gold\")"],"outputs":[{"output_type":"display_data","data":{"application/vnd.livy.statement-meta+json":{"spark_pool":null,"statement_id":20,"statement_ids":[20],"state":"finished","livy_statement_state":"available","session_id":"8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5","normalized_state":"finished","queued_time":"2024-10-25T20:29:18.7090964Z","session_start_time":null,"execution_start_time":"2024-10-25T20:29:34.7050563Z","execution_finish_time":"2024-10-25T20:29:39.5141044Z","parent_msg_id":"56e18a6c-9106-4200-a6cc-7386c03b93d3"},"text/plain":"StatementMeta(, 8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5, 20, Finished, Available, Finished)"},"metadata":{}}],"execution_count":18,"metadata":{"jupyter":{"outputs_hidden":false,"source_hidden":false},"microsoft":{"language":"python","language_group":"synapse_pyspark"},"nteract":{"transient":{"deleting":false}}},"id":"c83d4e46-2b49-490f-aadb-87a350c85e89"},{"cell_type":"markdown","source":["## Working with products_silver information"],"metadata":{"microsoft":{"language":"python","language_group":"synapse_pyspark"},"nteract":{"transient":{"deleting":false}}},"id":"f830afb3-2b02-4076-800a-85ca9fc33fea"},{"cell_type":"code","source":["# Read data from the Silver layer\n","silver_df = spark.read.format(\"delta\").load(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/cleansed_test_Silver.Lakehouse/Tables/products_silver\")\n","# Perform transformations (if any)\n","silver_df = silver_df # Assuming no transformations for simplicity\n","# Write data to the Gold layer\n","silver_df.write.mode(\"overwrite\").format(\"delta\").save(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/curated_gold.Lakehouse/Tables/products_silver\")"],"outputs":[{"output_type":"display_data","data":{"application/vnd.livy.statement-meta+json":{"spark_pool":null,"statement_id":21,"statement_ids":[21],"state":"finished","livy_statement_state":"available","session_id":"8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5","normalized_state":"finished","queued_time":"2024-10-25T20:29:45.1788369Z","session_start_time":null,"execution_start_time":"2024-10-25T20:29:45.5790407Z","execution_finish_time":"2024-10-25T20:29:49.090114Z","parent_msg_id":"67830cc7-dbf9-4b47-a9ea-51ce1c29634b"},"text/plain":"StatementMeta(, 8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5, 21, Finished, Available, Finished)"},"metadata":{}}],"execution_count":19,"metadata":{"jupyter":{"outputs_hidden":false,"source_hidden":false},"microsoft":{"language":"python","language_group":"synapse_pyspark"},"nteract":{"transient":{"deleting":false}}},"id":"7f72ac98-4ece-4a8a-a5c5-5e1fc7273382"}],"metadata":{"kernel_info":{"name":"synapse_pyspark"},"kernelspec":{"name":"synapse_pyspark","language":"Python","display_name":"Synapse PySpark"},"language_info":{"name":"python"},"microsoft":{"language":"python","language_group":"synapse_pyspark","ms_spell_check":{"ms_spell_check_language":"en"}},"nteract":{"version":"nteract-front-end@1.0.0"},"widgets":{},"spark_compute":{"compute_id":"/trident/default","session_options":{"conf":{"spark.synapse.nbs.session.timeout":"1200000"}}},"dependencies":{"lakehouse":{"default_lakehouse":"251cd515-16a3-4555-a3d2-dfd12adb2335","default_lakehouse_name":"raw_Bronze","default_lakehouse_workspace_id":"597e0afc-c8db-4f4d-8464-d13570f5b075"}}},"nbformat":4,"nbformat_minor":5} From 0a9b88683920638c863a69c8756a4fc6e2c35db4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 3 May 2025 01:15:29 +0000 Subject: [PATCH 31/37] Update last modified date in Markdown files --- .../DataWarehouse/Medallion_Architecture/README.md | 2 +- .../DataWarehouse/Medallion_Architecture/docs/README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Workloads-Specific/DataWarehouse/Medallion_Architecture/README.md b/Workloads-Specific/DataWarehouse/Medallion_Architecture/README.md index beeacd3..705be75 100644 --- a/Workloads-Specific/DataWarehouse/Medallion_Architecture/README.md +++ b/Workloads-Specific/DataWarehouse/Medallion_Architecture/README.md @@ -5,7 +5,7 @@ Costa Rica [![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) [brown9804](https://github.com/brown9804) -Last updated: 2025-02-21 +Last updated: 2025-05-03 ------------------------------------------ diff --git a/Workloads-Specific/DataWarehouse/Medallion_Architecture/docs/README.md b/Workloads-Specific/DataWarehouse/Medallion_Architecture/docs/README.md index 2bb6504..189aa29 100644 --- a/Workloads-Specific/DataWarehouse/Medallion_Architecture/docs/README.md +++ b/Workloads-Specific/DataWarehouse/Medallion_Architecture/docs/README.md @@ -5,7 +5,7 @@ Costa Rica [![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/) [brown9804](https://github.com/brown9804) -Last updated: 2025-01-29 +Last updated: 2025-05-03 ------------------------------------------ From 1c78f8cd601148a850fe3bd2aee3cce8f0184c87 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 3 May 2025 01:15:48 +0000 Subject: [PATCH 32/37] Fix notebook format issues --- .../src/0_notebook_bronze_to_silver.ipynb | 369 +++++++++++- .../src/1_notebook_silver_to_gold.ipynb | 528 +++++++++++++++++- 2 files changed, 895 insertions(+), 2 deletions(-) diff --git a/Workloads-Specific/DataWarehouse/Medallion_Architecture/src/0_notebook_bronze_to_silver.ipynb b/Workloads-Specific/DataWarehouse/Medallion_Architecture/src/0_notebook_bronze_to_silver.ipynb index 04efdcf..515265f 100644 --- a/Workloads-Specific/DataWarehouse/Medallion_Architecture/src/0_notebook_bronze_to_silver.ipynb +++ b/Workloads-Specific/DataWarehouse/Medallion_Architecture/src/0_notebook_bronze_to_silver.ipynb @@ -1 +1,368 @@ -{"cells":[{"cell_type":"markdown","source":["# PySpark Code to Move Data from Bronze to Silver"],"metadata":{"nteract":{"transient":{"deleting":false}},"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"ab7f0b7c-b0cc-44ec-9948-61d68f4b0b13"},{"cell_type":"markdown","source":["This is an example on how to work with the medallion architecture. From Bronze to Silver"],"metadata":{"nteract":{"transient":{"deleting":false}},"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"44f47922-4e3b-45cc-81a6-c5de97634f73"},{"cell_type":"markdown","source":["## Working with 2020orders information"],"metadata":{"nteract":{"transient":{"deleting":false}},"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"4e1afae8-b2ef-4e4c-9ac9-485139f19e9c"},{"cell_type":"code","source":["from pyspark.sql.types import *\n","import pyspark.sql.functions \n","from pyspark.sql import *"],"outputs":[],"execution_count":null,"metadata":{"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"febb6c3e-6841-42c1-a633-0da056b7f69c"},{"cell_type":"code","source":["# Read the data from the bronze layer:\n","df_raw_2020orders = spark.read.format(\"delta\").load(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/raw_Bronze.Lakehouse/Tables/2020orders\")\n","\n","df_raw_2020orders.head(2)"],"outputs":[{"output_type":"display_data","data":{"application/vnd.livy.statement-meta+json":{"spark_pool":null,"statement_id":4,"statement_ids":[4],"state":"finished","livy_statement_state":"available","session_id":"ecb846c9-e988-4906-95bc-af67b3aacd94","normalized_state":"finished","queued_time":"2024-10-25T19:11:30.8930212Z","session_start_time":null,"execution_start_time":"2024-10-25T19:14:18.2840528Z","execution_finish_time":"2024-10-25T19:14:24.7554027Z","parent_msg_id":"4d60fa03-18dd-4bbc-adab-cb12ff2ba6cf"},"text/plain":"StatementMeta(, ecb846c9-e988-4906-95bc-af67b3aacd94, 4, Finished, Available, Finished)"},"metadata":{}},{"output_type":"execute_result","execution_count":11,"data":{"text/plain":"[Row(ID='SO45376', Count=1, Date='1/5/2020', Name='Edgar Mehta', Style='Mountain-100 Silver, 38', price=3399.99, tax=271.9992),\n Row(ID='SO45381', Count=1, Date='1/6/2020', Name='Jordan Long', Style='Mountain-100 Silver, 38', price=3399.99, tax=271.9992)]"},"metadata":{}}],"execution_count":2,"metadata":{"jupyter":{"source_hidden":false,"outputs_hidden":false},"nteract":{"transient":{"deleting":false}},"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"6357dc47-1bb1-4391-8f38-b5d5a2abf5b2"},{"cell_type":"code","source":["# Clean the data (e.g., filter out rows with null values in the 'age' column):\n","df_cleaned = df_raw_2020orders.filter(df_raw_2020orders[\"Date\"].isNotNull())\n","print(df_cleaned)"],"outputs":[{"output_type":"display_data","data":{"application/vnd.livy.statement-meta+json":{"spark_pool":null,"statement_id":10,"statement_ids":[10],"state":"finished","livy_statement_state":"available","session_id":"ecb846c9-e988-4906-95bc-af67b3aacd94","normalized_state":"finished","queued_time":"2024-10-25T19:21:35.4162864Z","session_start_time":null,"execution_start_time":"2024-10-25T19:21:35.9099818Z","execution_finish_time":"2024-10-25T19:21:36.2079156Z","parent_msg_id":"d65f6fd9-d9ab-4498-ab5d-0710bab459be"},"text/plain":"StatementMeta(, ecb846c9-e988-4906-95bc-af67b3aacd94, 10, Finished, Available, Finished)"},"metadata":{}},{"output_type":"stream","name":"stdout","text":["DataFrame[ID: string, Count: int, Date: string, Name: string, Style: string, price: double, tax: double]\n"]}],"execution_count":8,"metadata":{"jupyter":{"source_hidden":false,"outputs_hidden":false},"nteract":{"transient":{"deleting":false}},"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"5f5c8125-cbf5-4e00-9d8f-0c437f25b37f"},{"cell_type":"code","source":["# Save the cleaned data to the \"cleansed_Silver\" table in the Silver lakehouse:\n","df_cleaned.write.format(\"delta\").mode(\"overwrite\").save(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/cleansed_test_Silver.Lakehouse/Tables/2020orders_silver\")"],"outputs":[{"output_type":"display_data","data":{"application/vnd.livy.statement-meta+json":{"spark_pool":null,"statement_id":12,"statement_ids":[12],"state":"finished","livy_statement_state":"available","session_id":"ecb846c9-e988-4906-95bc-af67b3aacd94","normalized_state":"finished","queued_time":"2024-10-25T19:23:52.3238132Z","session_start_time":null,"execution_start_time":"2024-10-25T19:23:52.7414203Z","execution_finish_time":"2024-10-25T19:24:09.4412514Z","parent_msg_id":"8c92d669-7856-4961-a9d0-c38d54833ee4"},"text/plain":"StatementMeta(, ecb846c9-e988-4906-95bc-af67b3aacd94, 12, Finished, Available, Finished)"},"metadata":{}}],"execution_count":10,"metadata":{"jupyter":{"source_hidden":false,"outputs_hidden":false},"nteract":{"transient":{"deleting":false}},"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"c83d4e46-2b49-490f-aadb-87a350c85e89"},{"cell_type":"markdown","source":["## Working with products information"],"metadata":{"nteract":{"transient":{"deleting":false}},"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"f830afb3-2b02-4076-800a-85ca9fc33fea"},{"cell_type":"code","source":["# Read data from the Bronze layer\n","bronze_df = spark.read.format(\"delta\").load(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/raw_Bronze.Lakehouse/Tables/products\")\n","# Perform transformations (if any)\n","silver_df = bronze_df # Assuming no transformations for simplicity\n","# Write data to the Silver layer\n","silver_df.write.mode(\"overwrite\").format(\"delta\").save(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/cleansed_test_Silver.Lakehouse/Tables/products_silver\")"],"outputs":[{"output_type":"display_data","data":{"application/vnd.livy.statement-meta+json":{"spark_pool":null,"statement_id":15,"statement_ids":[15],"state":"finished","livy_statement_state":"available","session_id":"ecb846c9-e988-4906-95bc-af67b3aacd94","normalized_state":"finished","queued_time":"2024-10-25T19:27:20.1106109Z","session_start_time":null,"execution_start_time":"2024-10-25T19:27:20.5334249Z","execution_finish_time":"2024-10-25T19:27:25.4936309Z","parent_msg_id":"bf665ff4-43d5-4b02-90a6-6c28640576c3"},"text/plain":"StatementMeta(, ecb846c9-e988-4906-95bc-af67b3aacd94, 15, Finished, Available, Finished)"},"metadata":{}}],"execution_count":13,"metadata":{"jupyter":{"source_hidden":false,"outputs_hidden":false},"nteract":{"transient":{"deleting":false}},"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"7f72ac98-4ece-4a8a-a5c5-5e1fc7273382"}],"metadata":{"kernel_info":{"name":"synapse_pyspark"},"kernelspec":{"name":"synapse_pyspark","language":"Python","display_name":"Synapse PySpark"},"language_info":{"name":"python"},"microsoft":{"language":"python","language_group":"synapse_pyspark","ms_spell_check":{"ms_spell_check_language":"en"}},"widgets":{},"nteract":{"version":"nteract-front-end@1.0.0"},"spark_compute":{"compute_id":"/trident/default","session_options":{"conf":{"spark.synapse.nbs.session.timeout":"1200000"}}},"dependencies":{"lakehouse":{"default_lakehouse":"251cd515-16a3-4555-a3d2-dfd12adb2335","default_lakehouse_name":"raw_Bronze","default_lakehouse_workspace_id":"597e0afc-c8db-4f4d-8464-d13570f5b075"}}},"nbformat":4,"nbformat_minor":5} +{ + "cells": [ + { + "cell_type": "markdown", + "id": "ab7f0b7c-b0cc-44ec-9948-61d68f4b0b13", + "metadata": { + "microsoft": { + "language": "python", + "language_group": "synapse_pyspark" + }, + "nteract": { + "transient": { + "deleting": false + } + } + }, + "source": [ + "# PySpark Code to Move Data from Bronze to Silver" + ] + }, + { + "cell_type": "markdown", + "id": "44f47922-4e3b-45cc-81a6-c5de97634f73", + "metadata": { + "microsoft": { + "language": "python", + "language_group": "synapse_pyspark" + }, + "nteract": { + "transient": { + "deleting": false + } + } + }, + "source": [ + "This is an example on how to work with the medallion architecture. From Bronze to Silver" + ] + }, + { + "cell_type": "markdown", + "id": "4e1afae8-b2ef-4e4c-9ac9-485139f19e9c", + "metadata": { + "microsoft": { + "language": "python", + "language_group": "synapse_pyspark" + }, + "nteract": { + "transient": { + "deleting": false + } + } + }, + "source": [ + "## Working with 2020orders information" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "febb6c3e-6841-42c1-a633-0da056b7f69c", + "metadata": { + "microsoft": { + "language": "python", + "language_group": "synapse_pyspark" + } + }, + "outputs": [], + "source": [ + "from pyspark.sql.types import *\n", + "import pyspark.sql.functions \n", + "from pyspark.sql import *" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "6357dc47-1bb1-4391-8f38-b5d5a2abf5b2", + "metadata": { + "jupyter": { + "outputs_hidden": false, + "source_hidden": false + }, + "microsoft": { + "language": "python", + "language_group": "synapse_pyspark" + }, + "nteract": { + "transient": { + "deleting": false + } + } + }, + "outputs": [ + { + "data": { + "application/vnd.livy.statement-meta+json": { + "execution_finish_time": "2024-10-25T19:14:24.7554027Z", + "execution_start_time": "2024-10-25T19:14:18.2840528Z", + "livy_statement_state": "available", + "normalized_state": "finished", + "parent_msg_id": "4d60fa03-18dd-4bbc-adab-cb12ff2ba6cf", + "queued_time": "2024-10-25T19:11:30.8930212Z", + "session_id": "ecb846c9-e988-4906-95bc-af67b3aacd94", + "session_start_time": null, + "spark_pool": null, + "state": "finished", + "statement_id": 4, + "statement_ids": [ + 4 + ] + }, + "text/plain": [ + "StatementMeta(, ecb846c9-e988-4906-95bc-af67b3aacd94, 4, Finished, Available, Finished)" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "[Row(ID='SO45376', Count=1, Date='1/5/2020', Name='Edgar Mehta', Style='Mountain-100 Silver, 38', price=3399.99, tax=271.9992),\n", + " Row(ID='SO45381', Count=1, Date='1/6/2020', Name='Jordan Long', Style='Mountain-100 Silver, 38', price=3399.99, tax=271.9992)]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Read the data from the bronze layer:\n", + "df_raw_2020orders = spark.read.format(\"delta\").load(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/raw_Bronze.Lakehouse/Tables/2020orders\")\n", + "\n", + "df_raw_2020orders.head(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "5f5c8125-cbf5-4e00-9d8f-0c437f25b37f", + "metadata": { + "jupyter": { + "outputs_hidden": false, + "source_hidden": false + }, + "microsoft": { + "language": "python", + "language_group": "synapse_pyspark" + }, + "nteract": { + "transient": { + "deleting": false + } + } + }, + "outputs": [ + { + "data": { + "application/vnd.livy.statement-meta+json": { + "execution_finish_time": "2024-10-25T19:21:36.2079156Z", + "execution_start_time": "2024-10-25T19:21:35.9099818Z", + "livy_statement_state": "available", + "normalized_state": "finished", + "parent_msg_id": "d65f6fd9-d9ab-4498-ab5d-0710bab459be", + "queued_time": "2024-10-25T19:21:35.4162864Z", + "session_id": "ecb846c9-e988-4906-95bc-af67b3aacd94", + "session_start_time": null, + "spark_pool": null, + "state": "finished", + "statement_id": 10, + "statement_ids": [ + 10 + ] + }, + "text/plain": [ + "StatementMeta(, ecb846c9-e988-4906-95bc-af67b3aacd94, 10, Finished, Available, Finished)" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "DataFrame[ID: string, Count: int, Date: string, Name: string, Style: string, price: double, tax: double]\n" + ] + } + ], + "source": [ + "# Clean the data (e.g., filter out rows with null values in the 'age' column):\n", + "df_cleaned = df_raw_2020orders.filter(df_raw_2020orders[\"Date\"].isNotNull())\n", + "print(df_cleaned)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "c83d4e46-2b49-490f-aadb-87a350c85e89", + "metadata": { + "jupyter": { + "outputs_hidden": false, + "source_hidden": false + }, + "microsoft": { + "language": "python", + "language_group": "synapse_pyspark" + }, + "nteract": { + "transient": { + "deleting": false + } + } + }, + "outputs": [ + { + "data": { + "application/vnd.livy.statement-meta+json": { + "execution_finish_time": "2024-10-25T19:24:09.4412514Z", + "execution_start_time": "2024-10-25T19:23:52.7414203Z", + "livy_statement_state": "available", + "normalized_state": "finished", + "parent_msg_id": "8c92d669-7856-4961-a9d0-c38d54833ee4", + "queued_time": "2024-10-25T19:23:52.3238132Z", + "session_id": "ecb846c9-e988-4906-95bc-af67b3aacd94", + "session_start_time": null, + "spark_pool": null, + "state": "finished", + "statement_id": 12, + "statement_ids": [ + 12 + ] + }, + "text/plain": [ + "StatementMeta(, ecb846c9-e988-4906-95bc-af67b3aacd94, 12, Finished, Available, Finished)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Save the cleaned data to the \"cleansed_Silver\" table in the Silver lakehouse:\n", + "df_cleaned.write.format(\"delta\").mode(\"overwrite\").save(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/cleansed_test_Silver.Lakehouse/Tables/2020orders_silver\")" + ] + }, + { + "cell_type": "markdown", + "id": "f830afb3-2b02-4076-800a-85ca9fc33fea", + "metadata": { + "microsoft": { + "language": "python", + "language_group": "synapse_pyspark" + }, + "nteract": { + "transient": { + "deleting": false + } + } + }, + "source": [ + "## Working with products information" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "7f72ac98-4ece-4a8a-a5c5-5e1fc7273382", + "metadata": { + "jupyter": { + "outputs_hidden": false, + "source_hidden": false + }, + "microsoft": { + "language": "python", + "language_group": "synapse_pyspark" + }, + "nteract": { + "transient": { + "deleting": false + } + } + }, + "outputs": [ + { + "data": { + "application/vnd.livy.statement-meta+json": { + "execution_finish_time": "2024-10-25T19:27:25.4936309Z", + "execution_start_time": "2024-10-25T19:27:20.5334249Z", + "livy_statement_state": "available", + "normalized_state": "finished", + "parent_msg_id": "bf665ff4-43d5-4b02-90a6-6c28640576c3", + "queued_time": "2024-10-25T19:27:20.1106109Z", + "session_id": "ecb846c9-e988-4906-95bc-af67b3aacd94", + "session_start_time": null, + "spark_pool": null, + "state": "finished", + "statement_id": 15, + "statement_ids": [ + 15 + ] + }, + "text/plain": [ + "StatementMeta(, ecb846c9-e988-4906-95bc-af67b3aacd94, 15, Finished, Available, Finished)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Read data from the Bronze layer\n", + "bronze_df = spark.read.format(\"delta\").load(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/raw_Bronze.Lakehouse/Tables/products\")\n", + "# Perform transformations (if any)\n", + "silver_df = bronze_df # Assuming no transformations for simplicity\n", + "# Write data to the Silver layer\n", + "silver_df.write.mode(\"overwrite\").format(\"delta\").save(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/cleansed_test_Silver.Lakehouse/Tables/products_silver\")" + ] + } + ], + "metadata": { + "dependencies": { + "lakehouse": { + "default_lakehouse": "251cd515-16a3-4555-a3d2-dfd12adb2335", + "default_lakehouse_name": "raw_Bronze", + "default_lakehouse_workspace_id": "597e0afc-c8db-4f4d-8464-d13570f5b075" + } + }, + "kernel_info": { + "name": "synapse_pyspark" + }, + "kernelspec": { + "display_name": "Synapse PySpark", + "language": "Python", + "name": "synapse_pyspark" + }, + "language_info": { + "name": "python" + }, + "microsoft": { + "language": "python", + "language_group": "synapse_pyspark", + "ms_spell_check": { + "ms_spell_check_language": "en" + } + }, + "nteract": { + "version": "nteract-front-end@1.0.0" + }, + "spark_compute": { + "compute_id": "/trident/default", + "session_options": { + "conf": { + "spark.synapse.nbs.session.timeout": "1200000" + } + } + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "state": {}, + "version": "1.0" + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Workloads-Specific/DataWarehouse/Medallion_Architecture/src/1_notebook_silver_to_gold.ipynb b/Workloads-Specific/DataWarehouse/Medallion_Architecture/src/1_notebook_silver_to_gold.ipynb index 42bf848..a661375 100644 --- a/Workloads-Specific/DataWarehouse/Medallion_Architecture/src/1_notebook_silver_to_gold.ipynb +++ b/Workloads-Specific/DataWarehouse/Medallion_Architecture/src/1_notebook_silver_to_gold.ipynb @@ -1 +1,527 @@ -{"cells":[{"cell_type":"markdown","source":["# PySpark Code to Move Data from Silver to Gold"],"metadata":{"microsoft":{"language":"python","language_group":"synapse_pyspark"},"nteract":{"transient":{"deleting":false}}},"id":"ab7f0b7c-b0cc-44ec-9948-61d68f4b0b13"},{"cell_type":"markdown","source":["This is an example on how to work with the medallion architecture. From Silver to Gold"],"metadata":{"microsoft":{"language":"python","language_group":"synapse_pyspark"},"nteract":{"transient":{"deleting":false}}},"id":"44f47922-4e3b-45cc-81a6-c5de97634f73"},{"cell_type":"markdown","source":["## Working with 2020orders_silver information"],"metadata":{"microsoft":{"language":"python","language_group":"synapse_pyspark"},"nteract":{"transient":{"deleting":false}}},"id":"4e1afae8-b2ef-4e4c-9ac9-485139f19e9c"},{"cell_type":"code","source":["from pyspark.sql.types import *\n","import pyspark.sql.functions \n","from pyspark.sql import *\n","from pyspark.sql.functions import sum\n"],"outputs":[{"output_type":"display_data","data":{"application/vnd.livy.statement-meta+json":{"spark_pool":null,"statement_id":15,"statement_ids":[15],"state":"finished","livy_statement_state":"available","session_id":"8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5","normalized_state":"finished","queued_time":"2024-10-25T20:29:16.4970957Z","session_start_time":null,"execution_start_time":"2024-10-25T20:29:16.9788868Z","execution_finish_time":"2024-10-25T20:29:17.2577679Z","parent_msg_id":"f6330200-43db-4e0b-9e85-773c1fa95042"},"text/plain":"StatementMeta(, 8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5, 15, Finished, Available, Finished)"},"metadata":{}}],"execution_count":13,"metadata":{"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"febb6c3e-6841-42c1-a633-0da056b7f69c"},{"cell_type":"code","source":["# Read the data from the silver layer:\n","df_cleansed_2020orders = spark.read.format(\"delta\").load(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/cleansed_test_Silver.Lakehouse/Tables/2020orders_silver\")\n","\n","df_cleansed_2020orders.head(2)"],"outputs":[{"output_type":"display_data","data":{"application/vnd.livy.statement-meta+json":{"spark_pool":null,"statement_id":16,"statement_ids":[16],"state":"finished","livy_statement_state":"available","session_id":"8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5","normalized_state":"finished","queued_time":"2024-10-25T20:29:17.7525504Z","session_start_time":null,"execution_start_time":"2024-10-25T20:29:18.2199944Z","execution_finish_time":"2024-10-25T20:29:26.3332937Z","parent_msg_id":"901386c6-fa37-4dad-8a8d-34e1276108f8"},"text/plain":"StatementMeta(, 8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5, 16, Finished, Available, Finished)"},"metadata":{}},{"output_type":"execute_result","execution_count":47,"data":{"text/plain":"[Row(ID='SO45376', Count=1, Date='1/5/2020', Name='Edgar Mehta', Style='Mountain-100 Silver, 38', price=3399.99, tax=271.9992),\n Row(ID='SO45381', Count=1, Date='1/6/2020', Name='Jordan Long', Style='Mountain-100 Silver, 38', price=3399.99, tax=271.9992)]"},"metadata":{}}],"execution_count":14,"metadata":{"jupyter":{"outputs_hidden":false,"source_hidden":false},"microsoft":{"language":"python","language_group":"synapse_pyspark"},"nteract":{"transient":{"deleting":false}}},"id":"6357dc47-1bb1-4391-8f38-b5d5a2abf5b2"},{"cell_type":"code","source":["df_cleansed_2020orders = df_cleansed_2020orders.withColumn(\"tax\", df_cleansed_2020orders[\"tax\"].cast(\"int\")) # type to int"],"outputs":[{"output_type":"display_data","data":{"application/vnd.livy.statement-meta+json":{"spark_pool":null,"statement_id":17,"statement_ids":[17],"state":"finished","livy_statement_state":"available","session_id":"8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5","normalized_state":"finished","queued_time":"2024-10-25T20:29:18.1174684Z","session_start_time":null,"execution_start_time":"2024-10-25T20:29:26.7221718Z","execution_finish_time":"2024-10-25T20:29:26.9553583Z","parent_msg_id":"1d52d464-b1ce-40ca-a8b4-ed446b5980fd"},"text/plain":"StatementMeta(, 8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5, 17, Finished, Available, Finished)"},"metadata":{}}],"execution_count":15,"metadata":{"jupyter":{"source_hidden":false,"outputs_hidden":false},"nteract":{"transient":{"deleting":false}},"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"b1478c38-d56e-4a58-a551-405675f4110d"},{"cell_type":"code","source":["df_cleansed_2020orders.printSchema()"],"outputs":[{"output_type":"display_data","data":{"application/vnd.livy.statement-meta+json":{"spark_pool":null,"statement_id":18,"statement_ids":[18],"state":"finished","livy_statement_state":"available","session_id":"8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5","normalized_state":"finished","queued_time":"2024-10-25T20:29:18.3209761Z","session_start_time":null,"execution_start_time":"2024-10-25T20:29:27.3402865Z","execution_finish_time":"2024-10-25T20:29:27.5846334Z","parent_msg_id":"882470dc-dab6-4bef-bf92-1f25c81c4bad"},"text/plain":"StatementMeta(, 8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5, 18, Finished, Available, Finished)"},"metadata":{}},{"output_type":"stream","name":"stdout","text":["root\n |-- ID: string (nullable = true)\n |-- Count: integer (nullable = true)\n |-- Date: string (nullable = true)\n |-- Name: string (nullable = true)\n |-- Style: string (nullable = true)\n |-- price: double (nullable = true)\n |-- tax: integer (nullable = true)\n\n"]}],"execution_count":16,"metadata":{"jupyter":{"source_hidden":false,"outputs_hidden":false},"nteract":{"transient":{"deleting":false}},"microsoft":{"language":"python","language_group":"synapse_pyspark"}},"id":"f9da346b-2b25-463a-821d-6b8d7bda321e"},{"cell_type":"code","source":["# Group and Aggregate the Data:\n","df_aggregated = df_cleansed_2020orders.groupBy(\"Style\").agg(sum(\"price\").alias(\"total_price_vehicles\"))\n","df_aggregated.show(10, truncate=False)\n","print(df_aggregated)"],"outputs":[{"output_type":"display_data","data":{"application/vnd.livy.statement-meta+json":{"spark_pool":null,"statement_id":19,"statement_ids":[19],"state":"finished","livy_statement_state":"available","session_id":"8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5","normalized_state":"finished","queued_time":"2024-10-25T20:29:18.5521281Z","session_start_time":null,"execution_start_time":"2024-10-25T20:29:27.9679539Z","execution_finish_time":"2024-10-25T20:29:34.3035094Z","parent_msg_id":"9a5b30d2-5552-495b-b0a7-c5cfed0bebd8"},"text/plain":"StatementMeta(, 8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5, 19, Finished, Available, Finished)"},"metadata":{}},{"output_type":"stream","name":"stdout","text":["+-----------------------+--------------------+\n|Style |total_price_vehicles|\n+-----------------------+--------------------+\n|Mountain-200 Black, 42 |196713.42720000003 |\n|Mountain-100 Silver, 42|71399.78999999998 |\n|Mountain-200 Silver, 42|159499.30919999976 |\n|Mountain-100 Silver, 44|71399.78999999998 |\n|Road-550-W Yellow, 40 |37016.1875 |\n|Mountain-100 Silver, 38|64599.80999999997 |\n|Road-250 Red, 48 |256551.75000000044 |\n|Road-250 Red, 52 |217458.15000000034 |\n|Road-650 Red, 52 |20301.81200000001 |\n|Road-250 Black, 52 |253061.25 |\n+-----------------------+--------------------+\nonly showing top 10 rows\n\nDataFrame[Style: string, total_price_vehicles: double]\n"]}],"execution_count":17,"metadata":{"jupyter":{"outputs_hidden":false,"source_hidden":false},"microsoft":{"language":"python","language_group":"synapse_pyspark"},"nteract":{"transient":{"deleting":false}}},"id":"5f5c8125-cbf5-4e00-9d8f-0c437f25b37f"},{"cell_type":"code","source":["# Save the cleaned data to the \"curated_Gold\" table in the Gold lakehouse:\n","df_aggregated.write.format(\"delta\").mode(\"overwrite\").save(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/curated_Gold.Lakehouse/Tables/2020orders_gold\")"],"outputs":[{"output_type":"display_data","data":{"application/vnd.livy.statement-meta+json":{"spark_pool":null,"statement_id":20,"statement_ids":[20],"state":"finished","livy_statement_state":"available","session_id":"8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5","normalized_state":"finished","queued_time":"2024-10-25T20:29:18.7090964Z","session_start_time":null,"execution_start_time":"2024-10-25T20:29:34.7050563Z","execution_finish_time":"2024-10-25T20:29:39.5141044Z","parent_msg_id":"56e18a6c-9106-4200-a6cc-7386c03b93d3"},"text/plain":"StatementMeta(, 8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5, 20, Finished, Available, Finished)"},"metadata":{}}],"execution_count":18,"metadata":{"jupyter":{"outputs_hidden":false,"source_hidden":false},"microsoft":{"language":"python","language_group":"synapse_pyspark"},"nteract":{"transient":{"deleting":false}}},"id":"c83d4e46-2b49-490f-aadb-87a350c85e89"},{"cell_type":"markdown","source":["## Working with products_silver information"],"metadata":{"microsoft":{"language":"python","language_group":"synapse_pyspark"},"nteract":{"transient":{"deleting":false}}},"id":"f830afb3-2b02-4076-800a-85ca9fc33fea"},{"cell_type":"code","source":["# Read data from the Silver layer\n","silver_df = spark.read.format(\"delta\").load(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/cleansed_test_Silver.Lakehouse/Tables/products_silver\")\n","# Perform transformations (if any)\n","silver_df = silver_df # Assuming no transformations for simplicity\n","# Write data to the Gold layer\n","silver_df.write.mode(\"overwrite\").format(\"delta\").save(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/curated_gold.Lakehouse/Tables/products_silver\")"],"outputs":[{"output_type":"display_data","data":{"application/vnd.livy.statement-meta+json":{"spark_pool":null,"statement_id":21,"statement_ids":[21],"state":"finished","livy_statement_state":"available","session_id":"8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5","normalized_state":"finished","queued_time":"2024-10-25T20:29:45.1788369Z","session_start_time":null,"execution_start_time":"2024-10-25T20:29:45.5790407Z","execution_finish_time":"2024-10-25T20:29:49.090114Z","parent_msg_id":"67830cc7-dbf9-4b47-a9ea-51ce1c29634b"},"text/plain":"StatementMeta(, 8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5, 21, Finished, Available, Finished)"},"metadata":{}}],"execution_count":19,"metadata":{"jupyter":{"outputs_hidden":false,"source_hidden":false},"microsoft":{"language":"python","language_group":"synapse_pyspark"},"nteract":{"transient":{"deleting":false}}},"id":"7f72ac98-4ece-4a8a-a5c5-5e1fc7273382"}],"metadata":{"kernel_info":{"name":"synapse_pyspark"},"kernelspec":{"name":"synapse_pyspark","language":"Python","display_name":"Synapse PySpark"},"language_info":{"name":"python"},"microsoft":{"language":"python","language_group":"synapse_pyspark","ms_spell_check":{"ms_spell_check_language":"en"}},"nteract":{"version":"nteract-front-end@1.0.0"},"widgets":{},"spark_compute":{"compute_id":"/trident/default","session_options":{"conf":{"spark.synapse.nbs.session.timeout":"1200000"}}},"dependencies":{"lakehouse":{"default_lakehouse":"251cd515-16a3-4555-a3d2-dfd12adb2335","default_lakehouse_name":"raw_Bronze","default_lakehouse_workspace_id":"597e0afc-c8db-4f4d-8464-d13570f5b075"}}},"nbformat":4,"nbformat_minor":5} +{ + "cells": [ + { + "cell_type": "markdown", + "id": "ab7f0b7c-b0cc-44ec-9948-61d68f4b0b13", + "metadata": { + "microsoft": { + "language": "python", + "language_group": "synapse_pyspark" + }, + "nteract": { + "transient": { + "deleting": false + } + } + }, + "source": [ + "# PySpark Code to Move Data from Silver to Gold" + ] + }, + { + "cell_type": "markdown", + "id": "44f47922-4e3b-45cc-81a6-c5de97634f73", + "metadata": { + "microsoft": { + "language": "python", + "language_group": "synapse_pyspark" + }, + "nteract": { + "transient": { + "deleting": false + } + } + }, + "source": [ + "This is an example on how to work with the medallion architecture. From Silver to Gold" + ] + }, + { + "cell_type": "markdown", + "id": "4e1afae8-b2ef-4e4c-9ac9-485139f19e9c", + "metadata": { + "microsoft": { + "language": "python", + "language_group": "synapse_pyspark" + }, + "nteract": { + "transient": { + "deleting": false + } + } + }, + "source": [ + "## Working with 2020orders_silver information" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "febb6c3e-6841-42c1-a633-0da056b7f69c", + "metadata": { + "microsoft": { + "language": "python", + "language_group": "synapse_pyspark" + } + }, + "outputs": [ + { + "data": { + "application/vnd.livy.statement-meta+json": { + "execution_finish_time": "2024-10-25T20:29:17.2577679Z", + "execution_start_time": "2024-10-25T20:29:16.9788868Z", + "livy_statement_state": "available", + "normalized_state": "finished", + "parent_msg_id": "f6330200-43db-4e0b-9e85-773c1fa95042", + "queued_time": "2024-10-25T20:29:16.4970957Z", + "session_id": "8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5", + "session_start_time": null, + "spark_pool": null, + "state": "finished", + "statement_id": 15, + "statement_ids": [ + 15 + ] + }, + "text/plain": [ + "StatementMeta(, 8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5, 15, Finished, Available, Finished)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pyspark.sql.types import *\n", + "import pyspark.sql.functions \n", + "from pyspark.sql import *\n", + "from pyspark.sql.functions import sum\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "6357dc47-1bb1-4391-8f38-b5d5a2abf5b2", + "metadata": { + "jupyter": { + "outputs_hidden": false, + "source_hidden": false + }, + "microsoft": { + "language": "python", + "language_group": "synapse_pyspark" + }, + "nteract": { + "transient": { + "deleting": false + } + } + }, + "outputs": [ + { + "data": { + "application/vnd.livy.statement-meta+json": { + "execution_finish_time": "2024-10-25T20:29:26.3332937Z", + "execution_start_time": "2024-10-25T20:29:18.2199944Z", + "livy_statement_state": "available", + "normalized_state": "finished", + "parent_msg_id": "901386c6-fa37-4dad-8a8d-34e1276108f8", + "queued_time": "2024-10-25T20:29:17.7525504Z", + "session_id": "8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5", + "session_start_time": null, + "spark_pool": null, + "state": "finished", + "statement_id": 16, + "statement_ids": [ + 16 + ] + }, + "text/plain": [ + "StatementMeta(, 8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5, 16, Finished, Available, Finished)" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "[Row(ID='SO45376', Count=1, Date='1/5/2020', Name='Edgar Mehta', Style='Mountain-100 Silver, 38', price=3399.99, tax=271.9992),\n", + " Row(ID='SO45381', Count=1, Date='1/6/2020', Name='Jordan Long', Style='Mountain-100 Silver, 38', price=3399.99, tax=271.9992)]" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Read the data from the silver layer:\n", + "df_cleansed_2020orders = spark.read.format(\"delta\").load(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/cleansed_test_Silver.Lakehouse/Tables/2020orders_silver\")\n", + "\n", + "df_cleansed_2020orders.head(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "b1478c38-d56e-4a58-a551-405675f4110d", + "metadata": { + "jupyter": { + "outputs_hidden": false, + "source_hidden": false + }, + "microsoft": { + "language": "python", + "language_group": "synapse_pyspark" + }, + "nteract": { + "transient": { + "deleting": false + } + } + }, + "outputs": [ + { + "data": { + "application/vnd.livy.statement-meta+json": { + "execution_finish_time": "2024-10-25T20:29:26.9553583Z", + "execution_start_time": "2024-10-25T20:29:26.7221718Z", + "livy_statement_state": "available", + "normalized_state": "finished", + "parent_msg_id": "1d52d464-b1ce-40ca-a8b4-ed446b5980fd", + "queued_time": "2024-10-25T20:29:18.1174684Z", + "session_id": "8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5", + "session_start_time": null, + "spark_pool": null, + "state": "finished", + "statement_id": 17, + "statement_ids": [ + 17 + ] + }, + "text/plain": [ + "StatementMeta(, 8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5, 17, Finished, Available, Finished)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df_cleansed_2020orders = df_cleansed_2020orders.withColumn(\"tax\", df_cleansed_2020orders[\"tax\"].cast(\"int\")) # type to int" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "f9da346b-2b25-463a-821d-6b8d7bda321e", + "metadata": { + "jupyter": { + "outputs_hidden": false, + "source_hidden": false + }, + "microsoft": { + "language": "python", + "language_group": "synapse_pyspark" + }, + "nteract": { + "transient": { + "deleting": false + } + } + }, + "outputs": [ + { + "data": { + "application/vnd.livy.statement-meta+json": { + "execution_finish_time": "2024-10-25T20:29:27.5846334Z", + "execution_start_time": "2024-10-25T20:29:27.3402865Z", + "livy_statement_state": "available", + "normalized_state": "finished", + "parent_msg_id": "882470dc-dab6-4bef-bf92-1f25c81c4bad", + "queued_time": "2024-10-25T20:29:18.3209761Z", + "session_id": "8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5", + "session_start_time": null, + "spark_pool": null, + "state": "finished", + "statement_id": 18, + "statement_ids": [ + 18 + ] + }, + "text/plain": [ + "StatementMeta(, 8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5, 18, Finished, Available, Finished)" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "root\n", + " |-- ID: string (nullable = true)\n", + " |-- Count: integer (nullable = true)\n", + " |-- Date: string (nullable = true)\n", + " |-- Name: string (nullable = true)\n", + " |-- Style: string (nullable = true)\n", + " |-- price: double (nullable = true)\n", + " |-- tax: integer (nullable = true)\n", + "\n" + ] + } + ], + "source": [ + "df_cleansed_2020orders.printSchema()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "5f5c8125-cbf5-4e00-9d8f-0c437f25b37f", + "metadata": { + "jupyter": { + "outputs_hidden": false, + "source_hidden": false + }, + "microsoft": { + "language": "python", + "language_group": "synapse_pyspark" + }, + "nteract": { + "transient": { + "deleting": false + } + } + }, + "outputs": [ + { + "data": { + "application/vnd.livy.statement-meta+json": { + "execution_finish_time": "2024-10-25T20:29:34.3035094Z", + "execution_start_time": "2024-10-25T20:29:27.9679539Z", + "livy_statement_state": "available", + "normalized_state": "finished", + "parent_msg_id": "9a5b30d2-5552-495b-b0a7-c5cfed0bebd8", + "queued_time": "2024-10-25T20:29:18.5521281Z", + "session_id": "8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5", + "session_start_time": null, + "spark_pool": null, + "state": "finished", + "statement_id": 19, + "statement_ids": [ + 19 + ] + }, + "text/plain": [ + "StatementMeta(, 8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5, 19, Finished, Available, Finished)" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "+-----------------------+--------------------+\n", + "|Style |total_price_vehicles|\n", + "+-----------------------+--------------------+\n", + "|Mountain-200 Black, 42 |196713.42720000003 |\n", + "|Mountain-100 Silver, 42|71399.78999999998 |\n", + "|Mountain-200 Silver, 42|159499.30919999976 |\n", + "|Mountain-100 Silver, 44|71399.78999999998 |\n", + "|Road-550-W Yellow, 40 |37016.1875 |\n", + "|Mountain-100 Silver, 38|64599.80999999997 |\n", + "|Road-250 Red, 48 |256551.75000000044 |\n", + "|Road-250 Red, 52 |217458.15000000034 |\n", + "|Road-650 Red, 52 |20301.81200000001 |\n", + "|Road-250 Black, 52 |253061.25 |\n", + "+-----------------------+--------------------+\n", + "only showing top 10 rows\n", + "\n", + "DataFrame[Style: string, total_price_vehicles: double]\n" + ] + } + ], + "source": [ + "# Group and Aggregate the Data:\n", + "df_aggregated = df_cleansed_2020orders.groupBy(\"Style\").agg(sum(\"price\").alias(\"total_price_vehicles\"))\n", + "df_aggregated.show(10, truncate=False)\n", + "print(df_aggregated)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "c83d4e46-2b49-490f-aadb-87a350c85e89", + "metadata": { + "jupyter": { + "outputs_hidden": false, + "source_hidden": false + }, + "microsoft": { + "language": "python", + "language_group": "synapse_pyspark" + }, + "nteract": { + "transient": { + "deleting": false + } + } + }, + "outputs": [ + { + "data": { + "application/vnd.livy.statement-meta+json": { + "execution_finish_time": "2024-10-25T20:29:39.5141044Z", + "execution_start_time": "2024-10-25T20:29:34.7050563Z", + "livy_statement_state": "available", + "normalized_state": "finished", + "parent_msg_id": "56e18a6c-9106-4200-a6cc-7386c03b93d3", + "queued_time": "2024-10-25T20:29:18.7090964Z", + "session_id": "8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5", + "session_start_time": null, + "spark_pool": null, + "state": "finished", + "statement_id": 20, + "statement_ids": [ + 20 + ] + }, + "text/plain": [ + "StatementMeta(, 8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5, 20, Finished, Available, Finished)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Save the cleaned data to the \"curated_Gold\" table in the Gold lakehouse:\n", + "df_aggregated.write.format(\"delta\").mode(\"overwrite\").save(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/curated_Gold.Lakehouse/Tables/2020orders_gold\")" + ] + }, + { + "cell_type": "markdown", + "id": "f830afb3-2b02-4076-800a-85ca9fc33fea", + "metadata": { + "microsoft": { + "language": "python", + "language_group": "synapse_pyspark" + }, + "nteract": { + "transient": { + "deleting": false + } + } + }, + "source": [ + "## Working with products_silver information" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "7f72ac98-4ece-4a8a-a5c5-5e1fc7273382", + "metadata": { + "jupyter": { + "outputs_hidden": false, + "source_hidden": false + }, + "microsoft": { + "language": "python", + "language_group": "synapse_pyspark" + }, + "nteract": { + "transient": { + "deleting": false + } + } + }, + "outputs": [ + { + "data": { + "application/vnd.livy.statement-meta+json": { + "execution_finish_time": "2024-10-25T20:29:49.090114Z", + "execution_start_time": "2024-10-25T20:29:45.5790407Z", + "livy_statement_state": "available", + "normalized_state": "finished", + "parent_msg_id": "67830cc7-dbf9-4b47-a9ea-51ce1c29634b", + "queued_time": "2024-10-25T20:29:45.1788369Z", + "session_id": "8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5", + "session_start_time": null, + "spark_pool": null, + "state": "finished", + "statement_id": 21, + "statement_ids": [ + 21 + ] + }, + "text/plain": [ + "StatementMeta(, 8c75f6dc-9a98-446c-957a-b0fa1e9d3fa5, 21, Finished, Available, Finished)" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Read data from the Silver layer\n", + "silver_df = spark.read.format(\"delta\").load(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/cleansed_test_Silver.Lakehouse/Tables/products_silver\")\n", + "# Perform transformations (if any)\n", + "silver_df = silver_df # Assuming no transformations for simplicity\n", + "# Write data to the Gold layer\n", + "silver_df.write.mode(\"overwrite\").format(\"delta\").save(\"abfss://fabric_medallion_arch_demo@onelake.dfs.fabric.microsoft.com/curated_gold.Lakehouse/Tables/products_silver\")" + ] + } + ], + "metadata": { + "dependencies": { + "lakehouse": { + "default_lakehouse": "251cd515-16a3-4555-a3d2-dfd12adb2335", + "default_lakehouse_name": "raw_Bronze", + "default_lakehouse_workspace_id": "597e0afc-c8db-4f4d-8464-d13570f5b075" + } + }, + "kernel_info": { + "name": "synapse_pyspark" + }, + "kernelspec": { + "display_name": "Synapse PySpark", + "language": "Python", + "name": "synapse_pyspark" + }, + "language_info": { + "name": "python" + }, + "microsoft": { + "language": "python", + "language_group": "synapse_pyspark", + "ms_spell_check": { + "ms_spell_check_language": "en" + } + }, + "nteract": { + "version": "nteract-front-end@1.0.0" + }, + "spark_compute": { + "compute_id": "/trident/default", + "session_options": { + "conf": { + "spark.synapse.nbs.session.timeout": "1200000" + } + } + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "state": {}, + "version": "1.0" + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 6d5a8678e26a50f2ccba16327435b746658b6bdb Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 19:18:19 -0600 Subject: [PATCH 33/37] medallion arch added --- .../DataWarehouse/Medallion_Architecture/README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Workloads-Specific/DataWarehouse/Medallion_Architecture/README.md b/Workloads-Specific/DataWarehouse/Medallion_Architecture/README.md index 705be75..28d8692 100644 --- a/Workloads-Specific/DataWarehouse/Medallion_Architecture/README.md +++ b/Workloads-Specific/DataWarehouse/Medallion_Architecture/README.md @@ -86,7 +86,7 @@ Implementing a medallion architecture provides several benefits: image -https://github.com/user-attachments/assets/c524741c-be91-4fe4-82bc-c841fae8c6c9 + https://github.com/user-attachments/assets/c524741c-be91-4fe4-82bc-c841fae8c6c9 2. **Create Lakehouses**: Set up three lakehouses for the Bronze, Silver, and Gold layers. @@ -98,9 +98,10 @@ https://github.com/user-attachments/assets/c524741c-be91-4fe4-82bc-c841fae8c6c9 image -https://github.com/user-attachments/assets/fdb64dd2-a6ec-4da0-a385-e55f875c8f8e + https://github.com/user-attachments/assets/fdb64dd2-a6ec-4da0-a385-e55f875c8f8e ### Step 2: Ingest Data into the Bronze Layer + 1. **Identify Data Sources**: - Determine the sources from which you'll ingest data. - List all the data sources such as databases, APIs, file systems, etc. @@ -115,7 +116,7 @@ https://github.com/user-attachments/assets/fdb64dd2-a6ec-4da0-a385-e55f875c8f8e | --- | --- | | image | image | -https://github.com/user-attachments/assets/56308a58-cf72-4f0f-bf3e-e9e1669fa0df + https://github.com/user-attachments/assets/56308a58-cf72-4f0f-bf3e-e9e1669fa0df > Suppose you need to extract data from your `sql database` From 0fc5674496fb54714c604ee88dbec72f56b0534c Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 19:19:50 -0600 Subject: [PATCH 34/37] ref in place --- Workloads-Specific/DataWarehouse/BestPractices.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Workloads-Specific/DataWarehouse/BestPractices.md b/Workloads-Specific/DataWarehouse/BestPractices.md index c7b4580..131e2db 100644 --- a/Workloads-Specific/DataWarehouse/BestPractices.md +++ b/Workloads-Specific/DataWarehouse/BestPractices.md @@ -50,7 +50,7 @@ Create a warehouse solution that segments data as follows: - Silver Layer: Applies data cleansing, validation, and enrichment. - Gold Layer: Produces analytics-ready data using optimized storage formats like Parquet or Delta Lake, with partitioning by date or region. Integrate metadata catalogs and RBAC controls for added governance. -> Here is a [reference of a medallion architecture using only Fabric](./Workloads-Specific/DataWarehouse/Medallion_Architecture/). If you need to handle `complex data transformations and large-scale data processing`, you can use our combined solution of **Fabric + Databricks**. This powerful combination leverages the strengths of both platforms to provide a robust data processing pipeline. This workshop on [Fabric with Databricks for Data Analytics](https://microsoft.github.io/TechExcel-Fabric-with-Databricks-for-Data-Analytics/) offers a comprehensive step-by-step guide on developing Medallion Architecture using Fabric and Databricks.
+> Here is a [reference of a medallion architecture using only Fabric](./Medallion_Architecture/). If you need to handle `complex data transformations and large-scale data processing`, you can use our combined solution of **Fabric + Databricks**. This powerful combination leverages the strengths of both platforms to provide a robust data processing pipeline. This workshop on [Fabric with Databricks for Data Analytics](https://microsoft.github.io/TechExcel-Fabric-with-Databricks-for-Data-Analytics/) offers a comprehensive step-by-step guide on developing Medallion Architecture using Fabric and Databricks.
| Medallion Architecture using only Fabric | Medallion Architecture Fabric + Databricks | | --- | --- | From 170b97bac146e3c7f26438e00346bdb0c18aaf02 Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 19:20:13 -0600 Subject: [PATCH 35/37] warehouse is ready --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bcdd1dc..e89b745 100644 --- a/README.md +++ b/README.md @@ -201,7 +201,7 @@ Click to read more about [Microsoft Purview for Fabric - Overview](./Workloads-S - [Azure Data Factory (ADF) - Best Practices Overview](./Workloads-Specific/DataFactory/BestPractices.md) - [Data Engineering - Best Practices Overview](./Workloads-Specific/DataEngineering/BestPractices.md) -- [Data Warehouse - Best Practices Overview](./Workloads-Specific/DataWarehouse/BestPractices.md) - in progress +- [Data Warehouse - Best Practices Overview](./Workloads-Specific/DataWarehouse/BestPractices.md) - [Data Science - Best Practices Overview](./Workloads-Specific/DataScience/BestPractices.md) - in progress - [Real-Time Intelligence - Best Practices Overview](./Workloads-Specific/RealTimeIntelligence/BestPractices.md) - in progress - [Power Bi - Best Practices Overview](./Workloads-Specific/PowerBi/BestPractices.md) From cdc674d43601baa366a4fbbd456f03a511bacd27 Mon Sep 17 00:00:00 2001 From: Timna Brown <24630902+brown9804@users.noreply.github.com> Date: Fri, 2 May 2025 19:23:16 -0600 Subject: [PATCH 36/37] format pipeline mkd --- .../DataWarehouse/Medallion_Architecture/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Workloads-Specific/DataWarehouse/Medallion_Architecture/README.md b/Workloads-Specific/DataWarehouse/Medallion_Architecture/README.md index 28d8692..617635c 100644 --- a/Workloads-Specific/DataWarehouse/Medallion_Architecture/README.md +++ b/Workloads-Specific/DataWarehouse/Medallion_Architecture/README.md @@ -92,7 +92,7 @@ Implementing a medallion architecture provides several benefits: - In your Fabric workspace, create three lakehouses named `raw_Bronze`, `cleansed_Silver`, and `curated_Gold`. - + image image From ef3907608f5f64c3a779f27b90fff70694d0c80a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 3 May 2025 01:23:35 +0000 Subject: [PATCH 37/37] Fix Markdown syntax issues --- .../Medallion_Architecture/README.md | 34 +++++++++++-------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/Workloads-Specific/DataWarehouse/Medallion_Architecture/README.md b/Workloads-Specific/DataWarehouse/Medallion_Architecture/README.md index 617635c..0feec6b 100644 --- a/Workloads-Specific/DataWarehouse/Medallion_Architecture/README.md +++ b/Workloads-Specific/DataWarehouse/Medallion_Architecture/README.md @@ -23,13 +23,12 @@ Last updated: 2025-05-03 - [Overview](#overview) - [Demo](#demo) - - [Step 1: Set Up Your Environment](#step-1-set-up-your-environment) - - [Step 2: Ingest Data into the Bronze Layer](#step-2-ingest-data-into-the-bronze-layer) - - [Step 3: Transform Data in the Silver Layer](#step-3-transform-data-in-the-silver-layer) - - [Step 4: Curate Data in the Gold Layer](#step-4-curate-data-in-the-gold-layer) - - [Step 5: Set Up Pipelines for Orchestration](#step-5-set-up-pipelines-for-orchestration) - - [Step 6: Enable Data Access for Reporting](#step-6-enable-data-access-for-reporting) - + - [Step 1: Set Up Your Environment](#step-1-set-up-your-environment) + - [Step 2: Ingest Data into the Bronze Layer](#step-2-ingest-data-into-the-bronze-layer) + - [Step 3: Transform Data in the Silver Layer](#step-3-transform-data-in-the-silver-layer) + - [Step 4: Curate Data in the Gold Layer](#step-4-curate-data-in-the-gold-layer) + - [Step 5: Set Up Pipelines for Orchestration](#step-5-set-up-pipelines-for-orchestration) + - [Step 6: Enable Data Access for Reporting](#step-6-enable-data-access-for-reporting) @@ -49,7 +48,6 @@ Last updated: 2025-05-03 > [!IMPORTANT] > If you are not able to see the `auto-create report` option neither `copilot` be aware you need to enable AI features in your tenant, click [here](https://github.com/brown9804/MicrosoftCloudEssentialsHub/blob/main/0_Azure/2_AzureAnalytics/0_Fabric/demos/6_PBiCopilot.md#tenant-configuration) to see how. - image image @@ -57,6 +55,7 @@ Last updated: 2025-05-03 ## Demo Implementing a medallion architecture provides several benefits: + - **Data Quality**: By organizing data into layers, you can apply quality checks and transformations in a structured manner, ensuring that the data in the Gold layer is reliable and ready for analysis. - **Scalability**: The architecture allows you to scale your data processing pipelines independently for each layer, providing flexibility and efficiency. - **Performance**: The Gold layer is optimized for performance, which means that your reporting and analytics queries will run faster. @@ -79,14 +78,13 @@ Implementing a medallion architecture provides several benefits: - Click on `Workspaces`, then select either your existing workspace or create a new one by clicking `New Workspace`: - Provide a name and other required details, then create the workspace. - image - Now, assign the Fabric Capacity to your workspace by clicking on `Workspace settings` and selecting the fabric capacity under the license. image - https://github.com/user-attachments/assets/c524741c-be91-4fe4-82bc-c841fae8c6c9 + 2. **Create Lakehouses**: Set up three lakehouses for the Bronze, Silver, and Gold layers. @@ -98,7 +96,7 @@ Implementing a medallion architecture provides several benefits: image - https://github.com/user-attachments/assets/fdb64dd2-a6ec-4da0-a385-e55f875c8f8e + ### Step 2: Ingest Data into the Bronze Layer @@ -116,7 +114,7 @@ Implementing a medallion architecture provides several benefits: | --- | --- | | image | image | - https://github.com/user-attachments/assets/56308a58-cf72-4f0f-bf3e-e9e1669fa0df + > Suppose you need to extract data from your `sql database` @@ -145,7 +143,7 @@ VALUES (5, 'Sarah', 'Davis', '1995-09-30', '2020-11-20', 'Marketing Specialist', 60000.0000); ``` -https://github.com/user-attachments/assets/357184bf-cc49-4311-84d4-6369514b3366 + > [!IMPORTANT] > Besides using Data pipelines to bring your SQL information, you can also leverage Microsoft Fabric's mirrored SQL capability. This feature allows you to create a mirrored copy of your SQL database, improving data availability, reliability, and disaster recovery. By maintaining a synchronized copy of your database in a different location, it ensures that your data is always accessible, even in the event of a failure or outage. @@ -155,8 +153,7 @@ https://github.com/user-attachments/assets/357184bf-cc49-4311-84d4-6369514b3366 > `For example, both Azure SQL Database and Microsoft Fabric are Microsoft products. However, the concept of outbound connections still applies because the data is moving from one service (Azure SQL Database) to another service (Microsoft Fabric), even though they are both within the Microsoft ecosystem. This movement of data is considered outbound because it is leaving the Azure SQL Database environment and entering the Microsoft Fabric environment`.

> Under the Zero Trust Architecture, both inbound and outbound connections are treated with the same level of scrutiny and security protocols. This means that whether the connection is inbound or outbound, it is subject to strict verification processes to ensure it is safe and authorized. Key principles of Zero Trust include verification of every access request, least privilege access, continuous monitoring, and micro-segmentation. By applying these principles, Azure ensures that both inbound and outbound connections are secure, reducing the risk of unauthorized access and data breaches. - -https://github.com/user-attachments/assets/2a64762a-f120-4448-b0fb-7a49f4d1bedb + 2. **Create Dataflows or Pipelines**: Use Data Factory to create dataflows or pipelines that ingest data into the Bronze lakehouse. - In Data Factory, create a new pipeline. @@ -182,6 +179,7 @@ https://github.com/user-attachments/assets/2a64762a-f120-4448-b0fb-7a49f4d1bedb image ### Step 3: Transform Data in the Silver Layer + 1. **Create Notebooks or Dataflows**: Use Fabric's notebooks or dataflows to read data from the Bronze layer. - In the Fabric workspace, create a new notebook. @@ -198,6 +196,7 @@ https://github.com/user-attachments/assets/2a64762a-f120-4448-b0fb-7a49f4d1bedb - Use the `write.format("delta").save()` method to save the data to the `cleansed_Silver` lakehouse. > **PySpark Code to Move Data from Bronze to Silver**: + ```python # Read data from the Bronze layer bronze_df = spark.read.format("delta").load("abfss://@.dfs.core.windows.net/.Lakehouse/Tables/
") @@ -216,6 +215,7 @@ https://github.com/user-attachments/assets/2a64762a-f120-4448-b0fb-7a49f4d1bedb image ### Step 4: Curate Data in the Gold Layer + 1. **Read Data from Silver Layer**: Use notebooks or dataflows to read data from the Silver lakehouse. - In a new notebook, connect to the `cleansed_Silver` lakehouse. 2. **Apply Business Logic**: Apply any additional business logic or aggregations. @@ -231,6 +231,7 @@ https://github.com/user-attachments/assets/2a64762a-f120-4448-b0fb-7a49f4d1bedb > Applying some transformations: If you want see more, click [here](./src/1_notebook_silver_to_gold.ipynb) to see a sample of the notebook. > **PySpark Code to Move Data from Silver to Gold**: + ```python # Read data from the Silver layer silver_df = spark.read.format("delta").load("abfss://@.dfs.core.windows.net/.Lakehouse/Tables/
") @@ -245,9 +246,11 @@ https://github.com/user-attachments/assets/2a64762a-f120-4448-b0fb-7a49f4d1bedb # Write data to the Gold layer gold_df.write.mode("overwrite").option("mergeSchema", "true").format("delta").save("abfss://@.dfs.core.windows.net/.Lakehouse/Tables/") ``` + image ### Step 5: Set Up Pipelines for Orchestration + 1. **Create Pipelines**: Create pipelines to automate the movement of data from the Bronze layer to the Silver layer, and from the Silver layer to the Gold layer. - In Data Factory, create a new pipeline. - Add a copy activity to move data from the `raw_Bronze` lakehouse to the `cleansed_Silver` lakehouse. @@ -257,6 +260,7 @@ https://github.com/user-attachments/assets/2a64762a-f120-4448-b0fb-7a49f4d1bedb - Consider the frequency of data updates and the latency that is acceptable for your use case. ### Step 6: Enable Data Access for Reporting + 1. **Configure SQL Analytics Endpoint**: - Validate if you have the SQL Analytics Endpoint configured, you can review it from workspace view, primarly is required for Gold layer to be accessible to your reporting tools.