{"id":16199416,"url":"https://github.com/bbenzikry/metabase-neo4j-driver","last_synced_at":"2025-11-06T12:03:30.212Z","repository":{"id":95864946,"uuid":"281950012","full_name":"bbenzikry/metabase-neo4j-driver","owner":"bbenzikry","description":"Provides SQL and Cypher support for working with neo4j from metabase","archived":false,"fork":false,"pushed_at":"2024-12-12T14:40:12.000Z","size":240,"stargazers_count":36,"open_issues_count":7,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-17T04:11:20.806Z","etag":null,"topics":["business-intelligence","cypher","graph","graphs","jdbc","jdbc-connector","metabase","neo4j","sql"],"latest_commit_sha":null,"homepage":"","language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bbenzikry.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2020-07-23T12:49:13.000Z","updated_at":"2025-02-24T05:43:08.000Z","dependencies_parsed_at":"2023-08-31T20:34:21.537Z","dependency_job_id":null,"html_url":"https://github.com/bbenzikry/metabase-neo4j-driver","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbenzikry%2Fmetabase-neo4j-driver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbenzikry%2Fmetabase-neo4j-driver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbenzikry%2Fmetabase-neo4j-driver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bbenzikry%2Fmetabase-neo4j-driver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bbenzikry","download_url":"https://codeload.github.com/bbenzikry/metabase-neo4j-driver/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244364666,"owners_count":20441458,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","cypher","graph","graphs","jdbc","jdbc-connector","metabase","neo4j","sql"],"created_at":"2024-10-10T09:25:20.460Z","updated_at":"2025-11-06T12:03:30.067Z","avatar_url":"https://github.com/bbenzikry.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Neo4j Metabase driver\n\n![Metabase v0.36.2](https://img.shields.io/badge/metabase-v0.36.2-purple?)\n![Neo4j 4.0.0+](https://img.shields.io/badge/Neo4j-4.0.0+-blue?)\n[![Latest Release](https://img.shields.io/github/v/release/bbenzikry/metabase-neo4j-driver.svg?label=latest%20release\u0026include_prereleases)](https://github.com/bbenzikry/metabase-neo4j-driver/releases)\n[![GitHub license](https://img.shields.io/github/license/bbenzikry/metabase-neo4j-driver)](https://raw.githubusercontent.com/bbenzikry/metabase-neo4j-driver/master/LICENSE)\n\n**SQL** and **Cypher** support for Neo4j on Metabase\n\n\u003c!-- markdownlint-disable MD033 --\u003e\n\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"125\" height=\"125\" src=\"https://user-images.githubusercontent.com/1993348/92579335-bc372180-f295-11ea-9620-847a74789193.png\" /\u003e\n\u003cimg width=\"100\" src=\"https://user-images.githubusercontent.com/1993348/92579314-b7726d80-f295-11ea-9147-9a9b06c8e1b6.png\" /\u003e\n\u003cimg width=\"135\" height=\"100\" src=\"https://user-images.githubusercontent.com/1993348/92579340-be00e500-f295-11ea-892e-5a10cd8f31c7.png\" /\u003e\n\u003cimg width=\"100\" src=\"https://user-images.githubusercontent.com/1993348/92579326-ba6d5e00-f295-11ea-8846-bad272f11760.png\"\u003e\n\u003cimg width=\"150\" height=\"\" src=\"https://user-images.githubusercontent.com/1993348/92581303-2cdf3d80-f298-11ea-8f08-4a169a01efba.gif\"\u003e\n\u003c/div\u003e\n\n## Neo4j Prerequisites\n- Make sure your neo4j instance / cluster has [APOC](https://github.com/neo4j-contrib/neo4j-apoc-procedures) enabled.\n\u003e Without APOC, the underlying BI connector will not be usable. \n  For more information on the permission set required, download the [BI connector docs](https://neo4j.com/bi-connector/)\n\n## Installation\n\n### Run with Docker\n\n```bash\ngit clone https://github.com/bbenzikry/metabase-neo4j-driver.git\ncd metabase-neo4j-driver\ndocker build -t metabase/neo4j .\ndocker run --name metabase-neo4j -p 3000:3000 metabase/neo4j\n```\n\n### JAR installation\n\n- Download the latest metabase version from [here](https://metabase.com/start/jar.html)\n- Download the latest `neo4j.metabase-driver.jar` from the [releases](https://github.com/bbenzikry/metabase-neo4j-driver/releases) page\n- Create a metabase folder and place your metabase.jar\n- Copy neo4j.metabase-driver.jar to the `plugins/` folder\n  ```bash\n  .\n  ├── metabase.jar\n  └── plugins\n      └── neo4j.metabase-driver.jar\n  ```\n- Run `java -jar metabase.jar`\n\n## Using Cypher\n\n- Cypher is currently only implemented for explicit querying\n- All cypher queries must return column based results ( aggregation results or column values )\n  ![cypher_use](./screenshots/cypher.png)\n\n## Working with a relational model on graphs\n\nThe JDBC driver exposes schemas for **Relationships** and **Nodes**\n\n- Relationships\n\n  - The driver creates one table for each distinct combination of source label, relationship type, and target label.\n\n- Nodes\n\n  - The driver only creates tables for nodes that have labels.\n  - The driver creates one table for each distinct combination of node labels.\n\n  Given\n\n  - Node1, with the label [Alphabet]\n  - Node2, with the label [Google]\n  - Node3, with the labels[Alphabet,Google]\n\n  The following tables will be created:\n\n  - Alphabet\n  - Google\n  - Alphabet_Google\n\n- Naming\n  Separators between node label names and relationship names is an underscore by default\n\nTo change the Node name seperator, you can use the LabelSeparator JDBC property, or RelNodeSeperator for Relationship tables.\n\nJDBC properties can be added via the driver configuration as shown in the image below.\n\n\u003e For an up to date list of allowed configuration values, please download the [JDBC driver](https://neo4j.com/bi-connector/)\n\n![configuration](screenshots/db.png)\n\n## Building the driver\n\n### Prerequisites\n\n#### Install Metabase as a local maven dependency, compiled for building drivers\n\nClone the [Metabase repo](https://github.com/metabase/metabase)\n\n```bash\ncd /path/to/metabase_source\nlein install-for-building-drivers\n```\n\n#### Download and install the Neo4j BI connector\n\n- Get the connector [here](https://neo4j.com/bi-connector/)\n\n```bash\n# cp the jar to the maven dir\nmkdir -p ~/.m2/repository/neo4j/neo4j-bi-jdbc/1.0.0 \u0026\u0026 cp JAR_PATH ~/.m2/repository/neo4j/neo4j-bi-jdbc/1.0.0/\n```\n\n### Build the driver\n\n```bash\n# (In the directory where you cloned this repository)\nlein clean\nDEBUG=1 LEIN_SNAPSHOTS_IN_RELEASE=true lein uberjar\n```\n\n### Copy it to your plugins dir and restart Metabase\n\n```bash\nmkdir -p /path/to/metabase/plugins/\ncp target/uberjar/neo4j.metabase-driver.jar /path/to/metabase/plugins/\njar -jar /path/to/metabase/metabase.jar\n```\n\n_or:_\n\n```bash\nmkdir -p /path/to/metabase_source/plugins\ncp target/uberjar/neo4j.metabase-driver.jar /path/to/metabase_source/plugins/\ncd /path/to/metabase_source\nlein run\n```\n\n## Caveats\n\n**This is a WIP.**\n\nIt is not heavily tested and is not compatible with neo4j 3.5 ( even though the underlying JDBC driver is )\n\n## TODO\n\n- ~~Edge properties~~\n- ~~Timestamp casting support~~\n- ~~Cypher support~~\n- ~~Multiple database support~~\n- ~~Metabase variable substitution~~ \n- Testing\n\n- CI\n\n## Future\n\n- Support complex results in cypher ( e.g. non relational projections )\n- Graph viz support\n\n## Known issues\n\n- Initial DB creation and/or sync may time out. You can configure a higher timeout value with the `MB_DB_CONNECTION_TIMEOUT_MS` environment variable.\n\n- In a standalone neo4j installation, if you encounter the error below, use ``StrictlyUseBoltScheme=true`` in the JDBC options ( see: [#12](https://github.com/bbenzikry/metabase-neo4j-driver/issues/12) )\n\u003e \\[Simba\\] \\[Neo4jJDBCDriver]\\(100041) An error has occurred during data source connection: Failed to obtain connection towards READ server\n\n\n\u003cdiv align=\"center\"\u003e\n\u003csub\u003e\u003csup\u003eLogos and images used in this document are licensed to their original creators and do not indicate any affiliation with this project\u003c/sup\u003e\u003c/sub\u003e\n\u003c/div\u003e\n\n\u003c!--\u003cdiv align=\"center\"\u003e\nDid this project help you out? \n\u003cp\u003e\n\u003ca href=\"https://etherscan.io/address/0x10c97e3e727cb3ee0bafb4f99f63225525150a35\"\u003ebbenzikry.eth / 0x10c97e3e727cb3ee0bafb4f99f63225525150a35\u003c/a\u003e\n\u003c/p\u003e\n\u003cimg src=\"https://user-images.githubusercontent.com/1993348/221440410-bec29828-dbf8-4908-aa18-dc41e70592bb.png\" width=\"200\" /\u003e\n\u003c/div\u003e--\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbbenzikry%2Fmetabase-neo4j-driver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbbenzikry%2Fmetabase-neo4j-driver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbbenzikry%2Fmetabase-neo4j-driver/lists"}