{"id":34034354,"url":"https://github.com/visokio/omniscope-custom-blocks","last_synced_at":"2026-04-06T06:33:02.931Z","repository":{"id":55843642,"uuid":"172076020","full_name":"visokio/omniscope-custom-blocks","owner":"visokio","description":"Public repository for custom blocks for Omniscope","archived":false,"fork":false,"pushed_at":"2026-03-05T19:12:38.000Z","size":14301,"stargazers_count":5,"open_issues_count":0,"forks_count":3,"subscribers_count":6,"default_branch":"master","last_synced_at":"2026-03-05T20:26:36.925Z","etag":null,"topics":["business-intelligence","data-science","dataanalytics","datapreparation","python","rstats"],"latest_commit_sha":null,"homepage":"https://visokio.com/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/visokio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-02-22T14:02:42.000Z","updated_at":"2026-03-05T19:12:42.000Z","dependencies_parsed_at":"2024-06-05T15:44:29.671Z","dependency_job_id":"62bb6222-e6d3-495c-90fb-146ce1a32a28","html_url":"https://github.com/visokio/omniscope-custom-blocks","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/visokio/omniscope-custom-blocks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/visokio%2Fomniscope-custom-blocks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/visokio%2Fomniscope-custom-blocks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/visokio%2Fomniscope-custom-blocks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/visokio%2Fomniscope-custom-blocks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/visokio","download_url":"https://codeload.github.com/visokio/omniscope-custom-blocks/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/visokio%2Fomniscope-custom-blocks/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31463014,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"online","status_checked_at":"2026-04-06T02:00:07.287Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["business-intelligence","data-science","dataanalytics","datapreparation","python","rstats"],"created_at":"2025-12-13T19:43:29.150Z","updated_at":"2026-04-06T06:33:02.925Z","avatar_url":"https://github.com/visokio.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Omniscope Custom Blocks \u0026middot; [![Refresh index](https://github.com/visokio/omniscope-custom-blocks/actions/workflows/refresh_index.yml/badge.svg)](https://github.com/visokio/omniscope-custom-blocks/actions/workflows/refresh_index.yml)[![Refresh readme](https://github.com/visokio/omniscope-custom-blocks/actions/workflows/refresh_readme.yml/badge.svg)](https://github.com/visokio/omniscope-custom-blocks/actions/workflows/refresh_readme.yml)\n\nPublic repository for custom blocks for Omniscope Evo.\n\n#### [Python / R API docs](https://help.visokio.com/support/solutions/articles/42000071109-custom-block-r-python-api-reference)\n\n## How to add a block to this repository\n### The simple way\n1. Design your custom block in Omniscope Evo 2020.1 or later.\n   The source code should be reasonably documented and potentially contain sections to describe input fields and parameters.\n2. Export as a ZIP file from the block dialog.\n3. Send the file to support@visokio.com and we will include it for you.\n\n### The hard way\n1. Follow points 1-2 from the simple way.\n2. Fork the repository.\n3. Create or use a directory in the forked repository under one of the main sections that specifies the general area of what the block does.\n4. Extract the ZIP file into this directory.\n5. Consider adding a README.md for convenience, and a thumbnail.png.\n6. Run the python scripts create_index.py and create_readme.py located in the root of the repository.\n7. Create a pull request.\n\n## Table of blocks (Omniscope 2020+)\n1. Analytics\n   1. Clustering\n      1. [DBScan](#AnalyticsClusteringDBScan)\n      2. [KMeans](#AnalyticsClusteringKMeans)\n      3. [Gaussian Mixture Model](#AnalyticsClusteringGMM)\n   2. Network Analysis\n      1. [Attribute Analysis](#AnalyticsNetwork-AnalysisAttribute-Analysis)\n      2. [TSNE](#AnalyticsNetwork-AnalysisTSNE)\n   3. Prediction\n      1. [K-Nearest-Neighbours](#AnalyticsPredictionKNN)\n      2. [Support Vector Machine](#AnalyticsPredictionSVM)\n   4. Validation\n      1. [Model Validation](#AnalyticsValidationModel-Validation)\n   5. Website\n      1. [Website Analysis](#AnalyticsWebsitesWebsite-Analysis)\n   6. [Data Profiler](#AnalyticsData-Profiler)\n   7. [Survival Analysis](#AnalyticsSurvival)\n2. Preparation\n   1. ForEach\n      1. [ForEach multi stage](#PreparationForEachForEachMultiStage)\n      2. [Project Parameters Batch Setting](#PreparationForEachProjectParameters)\n   2. Geo\n      1. [Gridsquare](#PreparationGeoGridsquare)\n      2. [Shapefile](#PreparationGeoShapefile)\n   3. Interfaces\n      1. [Kedro](#PreparationInterfacesKedro)\n   4. JSON\n      1. [JSON Expand fields](#PreparationJSONExpand_Fields)\n      2. [JSON Normalise](#PreparationJSONNormalise)\n   5. Join\n      1. [Interval Join](#PreparationJoinInterval-Join)\n      2. [Fuzzy Terms Join](#PreparationJoinFuzzy-Join)\n      3. [Inequality Join](#PreparationJoinInequality-Join)\n   6. Partition\n      1. [Partition](#PreparationPartition)\n   7. Pivot\n      1. [Melt De-pivot](#PreparationPivotMelt-De-pivot)\n   8. Standardisation\n      1. [Standardise](#PreparationStandardisationStandardise)\n   9. Workflow\n      1. [For Each (Separate Workflows)](#PreparationForEachForEach)\n   10. [Time Duration Unit Converter](#PreparationTime-Duration-Unit-Converter)\n   11. [Markdown to HTML](#PreparationMarkdown-to-HTML)\n   12. [Smart Schema Normaliser](#PreparationSmart-Schema-Normaliser)\n   13. [Split Address](#PreparationSplit-Address)\n   14. [Expand Date Fields](#PreparationExpand-Date-Fields)\n   15. [Data Quality Analyser](#PreparationData-Quality-Analyser)\n   16. [Set Project Parameters](#PreparationSetProjectParameters)\n   17. [Add row ID field](#PreparationAdd-row-ID-field)\n   18. [Anonymise](#PreparationAnonymise)\n   19. [Unstack Records](#PreparationUnstack-rows)\n   20. [Conditional Execution](#PreparationConditionalExecution)\n   21. [URL Encode](#PreparationURL-Encode)\n   22. [Streaming Field Renamer](#PreparationStreaming-Field-Renamer)\n   23. [Canonical Schema Mapper](#PreparationCanonical-Schema-Mapper)\n   24. [Smart Date Parser](#PreparationSmart-Date-Parser)\n   25. [Unescape HTML](#PreparationUnescape-HTML)\n   26. [Field Renamer](#PreparationField-Renamer)\n   27. [Sort fields](#PreparationSort-fields)\n   28. [Centroids from GeoJSON](#PreparationGeoCentroids)\n3. Connectors\n   1. Azure\n      1. [Azure Data Lake Storage Gen2 Blob](#ConnectorsAzure-Data-Lake-Blob)\n   2. Flightstats\n      1. [Flightstats Airports](#ConnectorsFlightstatsAirports)\n      2. [Flightstats Flights](#ConnectorsFlightstatsFlights)\n      3. [Flightstats Airlines](#ConnectorsFlightstatsAirlines)\n   3. Overpass\n      1. [Overpass Street Coordinates](#ConnectorsOverpassStreet-Coordinates)\n   4. Slack\n      1. [Slack API WebClient](#ConnectorsSlack-API-WebClient)\n   5. Weather\n      1. [OpenWeatherMap](#ConnectorsWeatherOpenWeatherMap)\n   6. [Trello](#ConnectorsTrello)\n   7. [Yahoo Finance](#ConnectorsYahooFinance)\n   8. [Etherscan](#ConnectorsEtherscan)\n   9. [Dune](#ConnectorsDune)\n   10. [HubSpot](#ConnectorsHubSpot)\n   11. [Jira](#ConnectorsJira)\n   12. [Slim CD Transaction](#ConnectorsSlim-CD)\n   13. [Google BigQuery Custom SQL](#ConnectorsBigQueryGoogle-BigQuery-Custom-SQL)\n   14. [Google BigQuery Import Table](#ConnectorsBigQueryGoogle-BigQuery-Import-Table)\n   15. [XPT Reader](#ConnectorsXPT-Reader)\n   16. [AirTable](#ConnectorsAirtable)\n   17. [Flipside](#ConnectorsFlipside)\n4. Code \u0026 AI\n   1. [AI Chat - Google Gemini](#ConnectorsAI-Chat-Google-Gemini)\n   2. [AI Chat - OpenAI GPT](#ConnectorsOpenAI-GPT)\n   3. [AI Chat - Local LLM](#ConnectorsAI-Chat-Local-LLM)\n   4. [AI Chat - Claude](#ConnectorsAI-Chat-Anthropic-Claude)\n   5. [AI Chat - DeepSeek](#ConnectorsAI-Chat-DeepSeek)\n   6. [Execute Command](#Custom-scriptsExecuteCommand)\n5. Outputs\n   1. API\n      1. [Multipart Form Upload](#OutputsMulti-Form-Upload)\n   2. BigQuery\n      1. [Google BigQuery Export](#OutputsGoogle-BigQuery-Writer)\n   3. Github\n      1. [GitHub](#OutputsGitHub)\n   4. Messenger\n      1. [Send to Telegram](#OutputsTelegram)\n   5. PDF\n      1. [Web Image-PDF output](#OutputsWeb-Image-PDF-output)\n      2. [Append PDF files](#OutputsAppend-PDF-files)\n      3. [Multi-tenant Report to PDF](#OutputsReport-to-PDF-batch-output)\n      4. [Report tab to PDF](#OutputsReport-tab-to-PDF)\n   6. PowerPoint\n      1. [Report to PowerPoint](#OutputsReport-to-PowerPoint)\n   7. Slack\n      1. [Slack Bot](#OutputsSlack-Bot)\n   8. [Send Report to Slack](#OutputsReport-to-Slack)\n6. Inputs\n   1. Databases\n      1. [MongoDB](#InputsDatabasesMongoDB)\n      2. [Snowflake Custom Query](#InputsDatabasesSnowflake-custom-query)\n   2. R\n      1. [Rds Batch Append](#InputsRds-Batch-Append)\n      2. [R Data Reader](#InputsRdata)\n   3. [SFTP Downloader](#InputsSFTP-Downloader)\n   4. [Sharepoint Online Downloader](#InputsSharepoint-Online)\n   5. [PDF Reader](#InputsPDF-Reader)\n## Block Overview\n\u003cdiv id=\"AnalyticsClusteringDBScan\"/\u003e\n\n### DBScan\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Analytics/Clustering/DBScan/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nPerforms DBScan clustering on the first input data provided. The output consists of the original input with a Cluster field appended. If a second input is available, it will be used as output instead.\n\n[Link to Github page](Analytics/Clustering/DBScan)\n\n\u003cdiv id=\"AnalyticsClusteringKMeans\"/\u003e\n\n### KMeans\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Analytics/Clustering/KMeans/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nPerforms KMeans clustering on the first input data provided. The output consists of the original input with a Cluster field appended. If a second input is available, it will be used as output instead.\n\n[Link to Github page](Analytics/Clustering/KMeans)\n\n\u003cdiv id=\"AnalyticsClusteringGMM\"/\u003e\n\n### Gaussian Mixture Model\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Analytics/Clustering/GMM/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nPerforms GMM clustering on the first input data provided. The output consists of the original input with a Cluster field appended. If a second input is available, it will be used as output instead.\n\n[Link to Github page](Analytics/Clustering/GMM)\n\n\u003cdiv id=\"AnalyticsNetwork-AnalysisAttribute-Analysis\"/\u003e\n\n### Attribute Analysis\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Analytics/Network-Analysis/Attribute-Analysis/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nGiven a dataset in which each record represents an edge between two nodes of a network, and each node has an associated categorical attribute, the block analyses connections between attributes, based on connections between associated nodes. The result of the analysis is a list of records in which each record specifies a connection from one attribute to another. The connection contains a probability field, which gives an answer to the question that if a node has the specified categorical attribute, how probable it is that it has a connection to another node with the linked categorical attribute.\n\n[Link to Github page](Analytics/Network-Analysis/Attribute-Analysis)\n\n\u003cdiv id=\"AnalyticsNetwork-AnalysisTSNE\"/\u003e\n\n### TSNE\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Analytics/Network-Analysis/TSNE/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nGiven a dataset in which each record represents an edge between two nodes of a network, the block will project all the nodes onto a (e.g. 2)- dimensional plane in such a way that nodes which share many connections are close together, and nodes that do not share many connections are far apart.\n\n[Link to Github page](Analytics/Network-Analysis/TSNE)\n\n\u003cdiv id=\"AnalyticsPredictionKNN\"/\u003e\n\n### K-Nearest-Neighbours\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Analytics/Prediction/KNN/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nPerforms k-nearest-neighbour prediction on the data. The prediction for a new point depends on the k-nearest-neighbours around the point. The majority class is used as the prediction.\n\n[Link to Github page](Analytics/Prediction/KNN)\n\n\u003cdiv id=\"AnalyticsPredictionSVM\"/\u003e\n\n### Support Vector Machine\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Analytics/Prediction/SVM/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nPredicts classes of new data from old data by drawing a boundary between two classes whereas the margin around the bondary is made as large as possible to avoid touching the points.\n\n[Link to Github page](Analytics/Prediction/SVM)\n\n\u003cdiv id=\"AnalyticsValidationModel-Validation\"/\u003e\n\n### Model Validation\n\nComputes a confusion matrix as well as model validation statistics\n\n[Link to Github page](Analytics/Validation/Model-Validation)\n\n\u003cdiv id=\"AnalyticsWebsitesWebsite-Analysis\"/\u003e\n\n### Website Analysis\n\nExtracts the structure and content of a website and its pages.\n\n[Link to Github page](Analytics/Websites/Website-Analysis)\n\n\u003cdiv id=\"AnalyticsData-Profiler\"/\u003e\n\n### Data Profiler\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Analytics/Data-Profiler/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nProvides detailed statistics about a dataset\n\n[Link to Github page](Analytics/Data-Profiler)\n\n\u003cdiv id=\"AnalyticsSurvival\"/\u003e\n\n### Survival Analysis\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Analytics/Survival/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nComputes an estimate of a survival curve for truncated and/or censored data using the Kaplan-Meier or Fleming-Harrington method\n\n[Link to Github page](Analytics/Survival)\n\n\u003cdiv id=\"PreparationForEachForEachMultiStage\"/\u003e\n\n### ForEach multi stage\n\nThe ForEach multi stage block allows to orchestrate the execution of another Omniscope project and running the workflow multiple times, each time with a different set of parameter values. Unlike the ForEach block allows multiple stages of execution, executing/refreshing from source a different set of blocks in each stage.\n\n[Link to Github page](Preparation/ForEach/ForEachMultiStage)\n\n\u003cdiv id=\"PreparationForEachProjectParameters\"/\u003e\n\n### Project Parameters Batch Setting\n\nNone\n\n[Link to Github page](Preparation/ForEach/ProjectParameters)\n\n\u003cdiv id=\"PreparationGeoGridsquare\"/\u003e\n\n### Gridsquare\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Preparation/Geo/Gridsquare/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nConverts gridsquare / Maidenhead \n\n[Link to Github page](Preparation/Geo/Gridsquare)\n\n\u003cdiv id=\"PreparationGeoShapefile\"/\u003e\n\n### Shapefile\n\nMatch regions in shapefile with geographical points having latitude and longitude\n\n[Link to Github page](Preparation/Geo/Shapefile)\n\n\u003cdiv id=\"PreparationInterfacesKedro\"/\u003e\n\n### Kedro\n\nIntefaces with kedro workflows\n\n[Link to Github page](Preparation/Interfaces/Kedro)\n\n\u003cdiv id=\"PreparationJSONExpand_Fields\"/\u003e\n\n### JSON Expand fields\n\nExpands JSON strings in a specified field into separate columns, optionally including the original input data\n\n[Link to Github page](Preparation/JSON/Expand_Fields)\n\n\u003cdiv id=\"PreparationJSONNormalise\"/\u003e\n\n### JSON Normalise\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Preparation/JSON/Normalise/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nNormalise semi-structured JSON strings into a flat table, appending data record by record.\n\n[Link to Github page](Preparation/JSON/Normalise)\n\n\u003cdiv id=\"PreparationJoinInterval-Join\"/\u003e\n\n### Interval Join\n\nPerforms a join between values in the first input and intervals in the second input. Rows are joined if the value is contained in an interval.\n\n[Link to Github page](Preparation/Join/Interval-Join)\n\n\u003cdiv id=\"PreparationJoinFuzzy-Join\"/\u003e\n\n### Fuzzy Terms Join\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Preparation/Join/Fuzzy-Join/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nPerforms a join between the first (left) and second (right) input. The field on which the join is performed must be text containing multiple terms. The result will contain joined records based on how many terms they share, weighted by inverse document frequency.\n\n[Link to Github page](Preparation/Join/Fuzzy-Join)\n\n\u003cdiv id=\"PreparationJoinInequality-Join\"/\u003e\n\n### Inequality Join\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Preparation/Join/Inequality-Join/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nPerforms a join between the first (left) and second (right) input. The join can be performed using equality/inequality comparators ==, \u003c=, \u003e=, \u003c, \u003e , which means the result will be a constraint cartesian join including all records that match the inequalities.\n\n[Link to Github page](Preparation/Join/Inequality-Join)\n\n\u003cdiv id=\"PreparationPartition\"/\u003e\n\n### Partition\n\nPartitions the data into chunks of the desired size. There will be a new field called \"Partition\" which contains a number unique to each partition.\n\n[Link to Github page](Preparation/Partition)\n\n\u003cdiv id=\"PreparationPivotMelt-De-pivot\"/\u003e\n\n### Melt De-pivot\n\nKeep all selected fixed fields in the output, de-pivot all other fields\n\n[Link to Github page](Preparation/Pivot/Melt-De-pivot)\n\n\u003cdiv id=\"PreparationStandardisationStandardise\"/\u003e\n\n### Standardise\n\nStandardises the values in the selected fields so that they are in the range between 0 and 1. I.e. The new value of the highest value in each field is going to be 1, and the lowest value 0. All other values are scaled proportionally.\n\n[Link to Github page](Preparation/Standardisation/Standardise)\n\n\u003cdiv id=\"PreparationForEachForEach\"/\u003e\n\n### For Each (Separate Workflows)\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Preparation/ForEach/ForEach/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nExecutes another Omniscope project multiple times, each time with a different set of parameter values.\n\n[Link to Github page](Preparation/ForEach/ForEach)\n\n\u003cdiv id=\"PreparationTime-Duration-Unit-Converter\"/\u003e\n\n### Time Duration Unit Converter\n\nConverts specified datetime, time duration, or time string fields into a chosen time unit\n\n[Link to Github page](Preparation/Time-Duration-Unit-Converter)\n\n\u003cdiv id=\"PreparationMarkdown-to-HTML\"/\u003e\n\n### Markdown to HTML\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Preparation/Markdown-to-HTML/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nNone\n\n[Link to Github page](Preparation/Markdown-to-HTML)\n\n\u003cdiv id=\"PreparationSmart-Schema-Normaliser\"/\u003e\n\n### Smart Schema Normaliser\n\nAutomatically cleans and stabilises incoming datasets by normalising field names, merging duplicates, and inferring data types, with zero configuration.\n\n[Link to Github page](Preparation/Smart-Schema-Normaliser)\n\n\u003cdiv id=\"PreparationSplit-Address\"/\u003e\n\n### Split Address\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Preparation/Split-Address/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nSplits an address field into streetname, streetnumber, and suffix.\n\n[Link to Github page](Preparation/Split-Address)\n\n\u003cdiv id=\"PreparationExpand-Date-Fields\"/\u003e\n\n### Expand Date Fields\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Preparation/Expand-Date-Fields/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nExpands selected date fields into separate year, month, day, and other date-part fields for easier analysis\n\n[Link to Github page](Preparation/Expand-Date-Fields)\n\n\u003cdiv id=\"PreparationData-Quality-Analyser\"/\u003e\n\n### Data Quality Analyser\n\nChecks datasets for common quality issues and outputs detailed issue logs and cleaned, annotated data.\n\n[Link to Github page](Preparation/Data-Quality-Analyser)\n\n\u003cdiv id=\"PreparationSetProjectParameters\"/\u003e\n\n### Set Project Parameters\n\nThe block updates project parameters using the input data\n\n[Link to Github page](Preparation/Set%20Project%20Parameters)\n\n\u003cdiv id=\"PreparationAdd-row-ID-field\"/\u003e\n\n### Add row ID field\n\nAdds a Row ID field with a sequential number.\n\n[Link to Github page](Preparation/Add-row-ID-field)\n\n\u003cdiv id=\"PreparationAnonymise\"/\u003e\n\n### Anonymise\n\nAnonymise sensitive text data within the input data.\n\n[Link to Github page](Preparation/Anonymise)\n\n\u003cdiv id=\"PreparationUnstack-rows\"/\u003e\n\n### Unstack Records\n\nUnstack all records by splitting on text fields with stacked values, filling records with empty strings where needed.\n\n[Link to Github page](Preparation/Unstack-rows)\n\n\u003cdiv id=\"PreparationConditionalExecution\"/\u003e\n\n### Conditional Execution\n\nThis block conditionally triggers the execution of specified workflow blocks via the Workflow API, running them only when the Conditional Parameter is set to true.\n\n[Link to Github page](Preparation/Conditional%20Execution)\n\n\u003cdiv id=\"PreparationURL-Encode\"/\u003e\n\n### URL Encode\n\nURL encode strings in a field using the UTF-8 encoding scheme\n\n[Link to Github page](Preparation/URL-Encode)\n\n\u003cdiv id=\"PreparationStreaming-Field-Renamer\"/\u003e\n\n### Streaming Field Renamer\n\nRenames the fields of a input data, optimised for streaming and big data, given a set of rules  defined in a CSV file\n\n[Link to Github page](Preparation/Streaming-Field-Renamer)\n\n\u003cdiv id=\"PreparationCanonical-Schema-Mapper\"/\u003e\n\n### Canonical Schema Mapper\n\nEnforces a stable, business-defined schema by mapping aliases to canonical fields, coalescing values, and applying consistent types and defaults.\n\n[Link to Github page](Preparation/Canonical-Schema-Mapper)\n\n\u003cdiv id=\"PreparationSmart-Date-Parser\"/\u003e\n\n### Smart Date Parser\n\nAutomatically parse date fields with mixed or unknown formats into ISO datetime\n\n[Link to Github page](Preparation/Smart-Date-Parser)\n\n\u003cdiv id=\"PreparationUnescape-HTML\"/\u003e\n\n### Unescape HTML\n\nConvert all named and numeric character references to the corresponding Unicode characters\n\n[Link to Github page](Preparation/Unescape-HTML)\n\n\u003cdiv id=\"PreparationField-Renamer\"/\u003e\n\n### Field Renamer\n\nRenames the fields of a data set given a list of current names and new names.\n\n[Link to Github page](Preparation/Field-Renamer)\n\n\u003cdiv id=\"PreparationSort-fields\"/\u003e\n\n### Sort fields\n\nSort fields in the input data by name or type\n\n[Link to Github page](Preparation/Sort-fields)\n\n\u003cdiv id=\"PreparationGeoCentroids\"/\u003e\n\n### Centroids from GeoJSON\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Preparation/Geo/Centroids/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nCalculates the centroid points (lat,long) and output them together with the shape ID from a specified GeoJSON file.\n\n[Link to Github page](Preparation/Geo/Centroids)\n\n\u003cdiv id=\"ConnectorsAzure-Data-Lake-Blob\"/\u003e\n\n### Azure Data Lake Storage Gen2 Blob\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Connectors/Azure-Data-Lake-Blob/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nStorage Gen2 Blob connector to load a CSV or Parquet blob/file in Omniscope.\n\n[Link to Github page](Connectors/Azure-Data-Lake-Blob)\n\n\u003cdiv id=\"ConnectorsFlightstatsAirports\"/\u003e\n\n### Flightstats Airports\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Connectors/Flightstats/Airports/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nDownloads a list of airports as provided by flightstats (https://www.flightstats.com). The script needs your flightstats app id and key which needs to be obtained either through buying their service or signing up for a test account.\n\n[Link to Github page](Connectors/Flightstats/Airports)\n\n\u003cdiv id=\"ConnectorsFlightstatsFlights\"/\u003e\n\n### Flightstats Flights\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Connectors/Flightstats/Flights/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nRequests information about flights specified in the input data from flightstats (https://www.flightstats.com). If the flight exists the result will contain live information, otherwise it will not be part of it. The script needs your flightstats app id and key which needs to be obtained either through buying their service or signing up for a test account.\n\n[Link to Github page](Connectors/Flightstats/Flights)\n\n\u003cdiv id=\"ConnectorsFlightstatsAirlines\"/\u003e\n\n### Flightstats Airlines\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Connectors/Flightstats/Airlines/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nDownloads a list of airlines as provided by flightstats (https://www.flightstats.com). The script needs your flightstats app id and key which needs to be obtained either through buying their service or signing up for a test account.\n\n[Link to Github page](Connectors/Flightstats/Airlines)\n\n\u003cdiv id=\"ConnectorsOverpassStreet-Coordinates\"/\u003e\n\n### Overpass Street Coordinates\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Connectors/Overpass/Street-Coordinates/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nFinds all matching streets given a street name and requests multiple coordinates along the street using data from Overpass API. It will create a row for each point found that is part of a street that matches the given street name. The resulting rows will include the street name, the street Id and the coordinates of the point. The script needs an input with a field with the street name.\n\n[Link to Github page](Connectors/Overpass/Street-Coordinates)\n\n\u003cdiv id=\"ConnectorsSlack-API-WebClient\"/\u003e\n\n### Slack API WebClient\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Connectors/Slack-API-WebClient/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nAllows you to call public Slack endpoints.\n\n[Link to Github page](Connectors/Slack-API-WebClient)\n\n\u003cdiv id=\"ConnectorsWeatherOpenWeatherMap\"/\u003e\n\n### OpenWeatherMap\n\nRetrieves current weather and forecasts from OpenWeatherMap\n\n[Link to Github page](Connectors/Weather/OpenWeatherMap)\n\n\u003cdiv id=\"ConnectorsTrello\"/\u003e\n\n### Trello\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Connectors/Trello/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nRetrieves boards, lists and cards, and allows you to search in Trello.\n\n[Link to Github page](Connectors/Trello)\n\n\u003cdiv id=\"ConnectorsYahooFinance\"/\u003e\n\n### Yahoo Finance\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Connectors/YahooFinance/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nFetches price data for tickers from Yahoo Finance\n\n[Link to Github page](Connectors/YahooFinance)\n\n\u003cdiv id=\"ConnectorsEtherscan\"/\u003e\n\n### Etherscan\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Connectors/Etherscan/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nThe Ethereum Blockchain Explorer.\n\n[Link to Github page](Connectors/Etherscan)\n\n\u003cdiv id=\"ConnectorsDune\"/\u003e\n\n### Dune\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Connectors/Dune/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nExecute queries and retrieve blockchain data from any public query on dune.com, as well as any personal private queries your Dune account has access to\n\n[Link to Github page](Connectors/Dune)\n\n\u003cdiv id=\"ConnectorsHubSpot\"/\u003e\n\n### HubSpot\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Connectors/HubSpot/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nRetrieves contacts, companies, deals and lists\n\n[Link to Github page](Connectors/HubSpot)\n\n\u003cdiv id=\"ConnectorsJira\"/\u003e\n\n### Jira\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Connectors/Jira/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nRetrieves projects and issues from Jira\n\n[Link to Github page](Connectors/Jira)\n\n\u003cdiv id=\"ConnectorsSlim-CD\"/\u003e\n\n### Slim CD Transaction\n\nPull Slim CD gateway transactions\n\n[Link to Github page](Connectors/Slim-CD)\n\n\u003cdiv id=\"ConnectorsBigQueryGoogle-BigQuery-Custom-SQL\"/\u003e\n\n### Google BigQuery Custom SQL\n\nExecutes a SQL query on Google BigQuery and imports the query results\n\n[Link to Github page](Connectors/BigQuery/Google-BigQuery-Custom-SQL)\n\n\u003cdiv id=\"ConnectorsBigQueryGoogle-BigQuery-Import-Table\"/\u003e\n\n### Google BigQuery Import Table\n\nAllows to import a table from Google BigQuery.\n\n[Link to Github page](Connectors/BigQuery/Google-BigQuery-Import-Table)\n\n\u003cdiv id=\"ConnectorsXPT-Reader\"/\u003e\n\n### XPT Reader\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Connectors/XPT-Reader/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nReads a SAS Transport *xpt* file, extracting a dataset.\n\n[Link to Github page](Connectors/XPT-Reader)\n\n\u003cdiv id=\"ConnectorsAirtable\"/\u003e\n\n### AirTable\n\nRetrieve records from an AirTable table using the REST API\n\n[Link to Github page](Connectors/Airtable)\n\n\u003cdiv id=\"ConnectorsFlipside\"/\u003e\n\n### Flipside\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Connectors/Flipside/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nExecutes a SQL query on Flipside and retrieves the blockchain data\n\n[Link to Github page](Connectors/Flipside)\n\n\u003cdiv id=\"ConnectorsAI-Chat-Google-Gemini\"/\u003e\n\n### AI Chat - Google Gemini\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Connectors/AI-Chat-Google-Gemini/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nExecutes a one-off prompt to Google Gemini and returns the generated text result\n\n[Link to Github page](Connectors/AI-Chat-Google-Gemini)\n\n\u003cdiv id=\"ConnectorsOpenAI-GPT\"/\u003e\n\n### AI Chat - OpenAI GPT\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Connectors/OpenAI-GPT/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nExecutes a one-off prompt to OpenAI GPT and returns the generated text result\n\n[Link to Github page](Connectors/OpenAI-GPT)\n\n\u003cdiv id=\"ConnectorsAI-Chat-Local-LLM\"/\u003e\n\n### AI Chat - Local LLM\n\nExecutes a one-off prompt to a local LLM and returns the generated text result\n\n[Link to Github page](Connectors/AI-Chat-Local-LLM)\n\n\u003cdiv id=\"ConnectorsAI-Chat-Anthropic-Claude\"/\u003e\n\n### AI Chat - Claude\n\nExecutes a one-off prompt to Anthropic Claude and returns the generated text result\n\n[Link to Github page](Connectors/AI-Chat-Anthropic-Claude)\n\n\u003cdiv id=\"ConnectorsAI-Chat-DeepSeek\"/\u003e\n\n### AI Chat - DeepSeek\n\nExecutes a one-off prompt to DeepSeek and returns the generated text result\n\n[Link to Github page](Connectors/AI-Chat-DeepSeek)\n\n\u003cdiv id=\"Custom-scriptsExecuteCommand\"/\u003e\n\n### Execute Command\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Custom-scripts/ExecuteCommand/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nExecute a system command.\n\n[Link to Github page](Custom-scripts/ExecuteCommand)\n\n\u003cdiv id=\"OutputsMulti-Form-Upload\"/\u003e\n\n### Multipart Form Upload\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Outputs/Multi-Form-Upload/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nUploads files from a path column to a remote HTTP endpoint using multipart/form-data.\n\n[Link to Github page](Outputs/Multi-Form-Upload)\n\n\u003cdiv id=\"OutputsGoogle-BigQuery-Writer\"/\u003e\n\n### Google BigQuery Export\n\nAllows to write data to a Google BigQuery table. The table can be created/replaced, or records can be appended to an existing table\n\n[Link to Github page](Outputs/Google-BigQuery-Writer)\n\n\u003cdiv id=\"OutputsGitHub\"/\u003e\n\n### GitHub\n\nReads from and writes data to GitHub\n\n[Link to Github page](Outputs/GitHub)\n\n\u003cdiv id=\"OutputsTelegram\"/\u003e\n\n### Send to Telegram\n\nSends data to Telegram\n\n[Link to Github page](Outputs/Telegram)\n\n\u003cdiv id=\"OutputsWeb-Image-PDF-output\"/\u003e\n\n### Web Image-PDF output\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Outputs/Web-Image-PDF-output/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nGrabs screenshots of webpages, optionally producing a PDF document.\n\n[Link to Github page](Outputs/Web-Image-PDF-output)\n\n\u003cdiv id=\"OutputsAppend-PDF-files\"/\u003e\n\n### Append PDF files\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Outputs/Append-PDF-files/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nAppend multiple PDF files combining them into one PDF file.\n\n[Link to Github page](Outputs/Append-PDF-files)\n\n\u003cdiv id=\"OutputsReport-to-PDF-batch-output\"/\u003e\n\n### Multi-tenant Report to PDF\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Outputs/Report-to-PDF-batch-output/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nPrints Report tabs to PDF files for each record of the input data.\n\n[Link to Github page](Outputs/Report-to-PDF-batch-output)\n\n\u003cdiv id=\"OutputsReport-tab-to-PDF\"/\u003e\n\n### Report tab to PDF\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Outputs/Report-tab-to-PDF/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nPrints Report tabs to PDF files for each record of the input data.\n\n[Link to Github page](Outputs/Report-tab-to-PDF)\n\n\u003cdiv id=\"OutputsReport-to-PowerPoint\"/\u003e\n\n### Report to PowerPoint\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Outputs/Report-to-PowerPoint/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nExport a Report to a PowerPoint pptx file\n\n[Link to Github page](Outputs/Report-to-PowerPoint)\n\n\u003cdiv id=\"OutputsSlack-Bot\"/\u003e\n\n### Slack Bot\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Outputs/Slack-Bot/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nPosts messages on a channel.\n\n[Link to Github page](Outputs/Slack-Bot)\n\n\u003cdiv id=\"OutputsReport-to-Slack\"/\u003e\n\n### Send Report to Slack\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Outputs/Report-to-Slack/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nSend a Report link with screenshots and optional PDF to a Slack channel with a message\n\n[Link to Github page](Outputs/Report-to-Slack)\n\n\u003cdiv id=\"InputsDatabasesMongoDB\"/\u003e\n\n### MongoDB\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Inputs/Databases/MongoDB/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nA connector for MongoDB\n\n[Link to Github page](Inputs/Databases/MongoDB)\n\n\u003cdiv id=\"InputsDatabasesSnowflake-custom-query\"/\u003e\n\n### Snowflake Custom Query\n\nExecutes a SQL query on a Snowflake database.\n\n[Link to Github page](Inputs/Databases/Snowflake-custom-query)\n\n\u003cdiv id=\"InputsRds-Batch-Append\"/\u003e\n\n### Rds Batch Append\n\nReads multiple rds files either from an upstream block, or a folder, and appends them\n\n[Link to Github page](Inputs/Rds-Batch-Append)\n\n\u003cdiv id=\"InputsRdata\"/\u003e\n\n### R Data Reader\n\nJoins regions defined in a shapefile with points defined as latitudes and longitudes, and gives meta information about the content of the shapefile\n\n[Link to Github page](Inputs/Rdata)\n\n\u003cdiv id=\"InputsSFTP-Downloader\"/\u003e\n\n### SFTP Downloader\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Inputs/SFTP-Downloader/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nDownload files from a SFTP server folder.\n\n[Link to Github page](Inputs/SFTP-Downloader)\n\n\u003cdiv id=\"InputsSharepoint-Online\"/\u003e\n\n### Sharepoint Online Downloader\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Inputs/Sharepoint-Online/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nDownload a file from a Sharepoint Online site.\n\n[Link to Github page](Inputs/Sharepoint-Online)\n\n\u003cdiv id=\"InputsPDF-Reader\"/\u003e\n\n### PDF Reader\n\n\u003cimg align=\"right\" src=\"https://github.com/visokio/omniscope-custom-blocks/blob/master/Inputs/PDF-Reader/thumbnail.png\" width=\"125\" height=\"125\"/\u003e\n\nExtract text from PDF files.\n\n[Link to Github page](Inputs/PDF-Reader)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvisokio%2Fomniscope-custom-blocks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvisokio%2Fomniscope-custom-blocks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvisokio%2Fomniscope-custom-blocks/lists"}