This project is a data integration tool that collects information from the SafetyCulture API v1.0 and inserts it into Databricks Delta tables. It is designed to automate the extraction, transformation, and loading (ETL) of SafetyCulture data for analytics and reporting in Databricks.
appsettings.json
.appsettings.json
.appsettings.json
.Before running the application, you must create and configure an appsettings.json
file. This file contains all necessary settings for SafetyCulture and Databricks integration.
appsettings.json
in the same directory as SafetyCultureToDatabricks.exe
(the published executable).{
"SafetyCulture": {
"BaseUrl": "https://api.safetyculture.io",
"TokenSecret": "your-safetyculture-token"
},
"Parquet": {
"InspectionsFileName": "sc_inspections.parquet",
"InspectionItemsFileName": "sc_inspection_items.parquet",
"SitesFileName": "sc_sites.parquet",
"ActionsFileName": "sc_actions.parquet",
"ActionTimelineItemsFileName": "sc_action_timeline_items.parquet",
"ActionAssigneesFileName": "sc_action_assignees.parquet",
"Users": "sc_users.parquet",
"GroupUsersFileName": "sc_group_users.parquet",
"SiteMembersFileName": "sc_site_members.parquet",
"TemplatesFileName": "sc_templates.parquet",
"TemplatePermissionsFileName": "sc_template_permissions.parquet"
},
"Databricks": {
"Host": "https://your-databricks-instance.databricks.azure.com",
"PersonalAccessToken": "your-databricks-token",
"VolumePath": "/Volumes/your_catalog/your_schema/your_volume",
"DatabaseName": "your_catalog.your_schema",
"WarehouseId": "your_warehouse_id"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
},
"Console": {
"IncludeScopes": false
}
}
}
appsettings.json
with your SafetyCulture and Databricks configuration..\\SafetyCultureToDatabricks.exe
Extraction/
— Extractors for different SafetyCulture entities (Inspections, Actions, Users, etc.).Parsers/
— JSON parsers for SafetyCulture API responses.Jobs/
— Job classes orchestrating extraction, transformation, and loading for each entity.Models/
— Data models representing SafetyCulture entities.Services/
— Service classes for API communication.Utils/
— Utility classes for configuration, Parquet writing, Databricks uploading, and SQL execution.Program.cs
— Main entry point for running jobs.appsettings.json
— Configuration file for API keys, Databricks connection, and other settings.appsettings.json
with your SafetyCulture API token and Databricks connection details.dotnet build
dotnet run
dotnet restore
dotnet publish -c Release -r win-x64 --self-contained true /p:PublishSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true -o publish
publish
folder.Compress-Archive -Path publish\\* -DestinationPath SafetyCultureToDatabricks-win-x64.zip
BuildXJob(...)
similar to BuildInspectionsJob
and append to the jobs array.See LICENSE for details.