-
Kyle Doherty authored
* Default wrapper padding left & right For show cards padding on mobile view * restructure visualization settings markup to fix label wrapping (#8816) * Change query result hashing to convert integers to floats first When the FE returns the query result metadata, any integer values will be converted to a floating point number. Those doubles hash different than the original integers which causes the hashes not to match and the query to be reran when saving the question. This commit just converts the integer to a double before computing the hash. Fixes #8824 * Ensure queries to compute metadata include user information When saving a question and the included metadata is incorrect or different we will execute another query to compute that metadata. This commit adds the `:info` map needed to include the user and query hash information we use in the SQL remark. Fixes #8825 * Metastore code SHOULD NOT barf it API response includes unrecognized keys * Fix minification * Update copyright year (#8711) * Update copyright year * 2018 year * Could the admin nav bar use a little color? (#8819) * purple admin nav bar * decouple admin navbar color from accent7 * filter out hidden tables in table entity (#8831) * Dropped tables should appear in a schema's data browse page When the database had only a single schema, the dropped tables were being hidden correctly. When multiple schemas were present, viewing those tables their the schema route caused the inactive tables to appear in the result. Fixes #8822 fixes #8363 * Ensure consistent ordering of maps/sets when hashing metadata This commit will ensure all hashes and sets are ordered before serializing them to JSON and hashing that string. This will prevent surprising behavior when the number of items in a map reach 9 or if the order of elements changes between machines or JDK versions. Fixes #8826 * Far-future cache header for JS/CSS files with cache-busting query strings * Fix import on TableSettings page (#8829) * fix import * clean up nav * Fix test checksum test failure on MySQL [ci drivers] The newly added checksum tests fail when running on MySQL in Circle. The MySQL tests include a secret key for encryption which are used when computing the checksum. Because of that encryption, the checksum string is different every time (it must be decrypted before compared). The test isn't covering the encryption code but is only concerned with ensure the datastructure hashes consitently. This commit uses a `with-redefs` to set that secret key to `nil` so that encryption won't be used on those two tests. * Add better error messages to loading GeoJSON files Previously the only error message was a schema validation failure. The same error would be given for an unreachable host, unparsable JSON, bad URL etc. This commit attempts to separate that out and provide a better message in the failure case. Fixes #8793 * Only include a CSV attachment for pulses when XLS is not selected Previously we would always include a CSV attachment when there were more rows/columns than would be included in the table. This ended up being redundant for users that would prefer an XLS attachment and have indicated that the pulse should include an XLS attachment. This commit will only not attach a CSV if the user has select an XLS attachment for that pulse. Fixes #7302 * Add a C3P0 exclusion to Quartzite [ci drivers] * Merge release 0.31.0 into master (#8858) * Dash card display fixes (#8777) * fix scalar long title ellipsification and description * fix table simple in night mode * check for description * v0.31.0-RC1 * add scroll to outer container for database / schema selector (#8782) add scroll to outer container for database / schema selector * Fix minification * Far-future cache header for JS/CSS files with cache-busting query strings * Add Snowflake to list of supported databases in dox [ci skip] * scroll table selector (#8857) * Use compressed bytes for caching size comparison Previously we would serialize rows as strings and use that as an estimate for how big the cache would be. This commit changes that to use actual compressed bytes to determine size. * Switch to a stream based cache serialization/compression This commit switches to a stream based nippy compression/serialization. This has the benefit of being able to stop serialization once the threshold for cache size has been reached. Fixes #7479 * Bump the `java.classpath` and `tools.namespace` versions Bumping `java.classpath` to `0.3.0` fixes the `classpath` function on JDK 9+. * Don't strip insights from response in public links * update tests * Bump Jetty server version * Better-organized HTTP client used for tests and add full-response option. * Use middleware impl for test util fn bind-current-user * Add some i18n tags and wrap in str where missing * Namespace form & indentation cleanup; docstring improvments * Remove dead code in tests
* MBQL schema tweaks; make SQL QP nested-query-level available to public * Ignore results_metadata in revision tests * Add test for updating permissions graph from API * Add u/hexadecimal-string? util fn * Add query-perms/can-run-query? helper fn * Record database_id in QueryExecution; record query in Query * Add a few util fns; other minor code tweaks * Change query perms-set fn to take kwargs for opts * Support backslashes in DB/schema/table names for permissions checks * Bump docstring checker -> 1.0.3 * Fix bug where Snowflake driver used wrong DB name to filter tables [ci snowflake] * Add new bird-count dataset; fix division by zero in MBQL expressions * Add test profiling info & don't suppress dataset load output [ci drivers] * Remove unused default-schema; share Presto catalog for all test data [ci drivers] * Add format-name for SparkSQL test extensions [ci drivers] * Fix presto tests [ci presto] * handle smaller smart scalar cards better (#8897) * handle smaller cards better * handle automatic dashboard sidebar case * make more specific * Fix presto test [ci presto] (#8900)Kyle Doherty authored* Default wrapper padding left & right For show cards padding on mobile view * restructure visualization settings markup to fix label wrapping (#8816) * Change query result hashing to convert integers to floats first When the FE returns the query result metadata, any integer values will be converted to a floating point number. Those doubles hash different than the original integers which causes the hashes not to match and the query to be reran when saving the question. This commit just converts the integer to a double before computing the hash. Fixes #8824 * Ensure queries to compute metadata include user information When saving a question and the included metadata is incorrect or different we will execute another query to compute that metadata. This commit adds the `:info` map needed to include the user and query hash information we use in the SQL remark. Fixes #8825 * Metastore code SHOULD NOT barf it API response includes unrecognized keys * Fix minification * Update copyright year (#8711) * Update copyright year * 2018 year * Could the admin nav bar use a little color? (#8819) * purple admin nav bar * decouple admin navbar color from accent7 * filter out hidden tables in table entity (#8831) * Dropped tables should appear in a schema's data browse page When the database had only a single schema, the dropped tables were being hidden correctly. When multiple schemas were present, viewing those tables their the schema route caused the inactive tables to appear in the result. Fixes #8822 fixes #8363 * Ensure consistent ordering of maps/sets when hashing metadata This commit will ensure all hashes and sets are ordered before serializing them to JSON and hashing that string. This will prevent surprising behavior when the number of items in a map reach 9 or if the order of elements changes between machines or JDK versions. Fixes #8826 * Far-future cache header for JS/CSS files with cache-busting query strings * Fix import on TableSettings page (#8829) * fix import * clean up nav * Fix test checksum test failure on MySQL [ci drivers] The newly added checksum tests fail when running on MySQL in Circle. The MySQL tests include a secret key for encryption which are used when computing the checksum. Because of that encryption, the checksum string is different every time (it must be decrypted before compared). The test isn't covering the encryption code but is only concerned with ensure the datastructure hashes consitently. This commit uses a `with-redefs` to set that secret key to `nil` so that encryption won't be used on those two tests. * Add better error messages to loading GeoJSON files Previously the only error message was a schema validation failure. The same error would be given for an unreachable host, unparsable JSON, bad URL etc. This commit attempts to separate that out and provide a better message in the failure case. Fixes #8793 * Only include a CSV attachment for pulses when XLS is not selected Previously we would always include a CSV attachment when there were more rows/columns than would be included in the table. This ended up being redundant for users that would prefer an XLS attachment and have indicated that the pulse should include an XLS attachment. This commit will only not attach a CSV if the user has select an XLS attachment for that pulse. Fixes #7302 * Add a C3P0 exclusion to Quartzite [ci drivers] * Merge release 0.31.0 into master (#8858) * Dash card display fixes (#8777) * fix scalar long title ellipsification and description * fix table simple in night mode * check for description * v0.31.0-RC1 * add scroll to outer container for database / schema selector (#8782) add scroll to outer container for database / schema selector * Fix minification * Far-future cache header for JS/CSS files with cache-busting query strings * Add Snowflake to list of supported databases in dox [ci skip] * scroll table selector (#8857) * Use compressed bytes for caching size comparison Previously we would serialize rows as strings and use that as an estimate for how big the cache would be. This commit changes that to use actual compressed bytes to determine size. * Switch to a stream based cache serialization/compression This commit switches to a stream based nippy compression/serialization. This has the benefit of being able to stop serialization once the threshold for cache size has been reached. Fixes #7479 * Bump the `java.classpath` and `tools.namespace` versions Bumping `java.classpath` to `0.3.0` fixes the `classpath` function on JDK 9+. * Don't strip insights from response in public links * update tests * Bump Jetty server version * Better-organized HTTP client used for tests and add full-response option. * Use middleware impl for test util fn bind-current-user * Add some i18n tags and wrap in str where missing * Namespace form & indentation cleanup; docstring improvments * Remove dead code in tests
* MBQL schema tweaks; make SQL QP nested-query-level available to public * Ignore results_metadata in revision tests * Add test for updating permissions graph from API * Add u/hexadecimal-string? util fn * Add query-perms/can-run-query? helper fn * Record database_id in QueryExecution; record query in Query * Add a few util fns; other minor code tweaks * Change query perms-set fn to take kwargs for opts * Support backslashes in DB/schema/table names for permissions checks * Bump docstring checker -> 1.0.3 * Fix bug where Snowflake driver used wrong DB name to filter tables [ci snowflake] * Add new bird-count dataset; fix division by zero in MBQL expressions * Add test profiling info & don't suppress dataset load output [ci drivers] * Remove unused default-schema; share Presto catalog for all test data [ci drivers] * Add format-name for SparkSQL test extensions [ci drivers] * Fix presto tests [ci presto] * handle smaller smart scalar cards better (#8897) * handle smaller cards better * handle automatic dashboard sidebar case * make more specific * Fix presto test [ci presto] (#8900)
Metabase
Metabase is the easy, open source way for everyone in your company to ask questions and learn from data.
Features
- 5 minute setup (We're not kidding)
- Let anyone on your team ask questions without knowing SQL
- Rich beautiful dashboards with auto refresh and fullscreen
- SQL Mode for analysts and data pros
- Create canonical segments and metrics for your team to use
- Send data to Slack or email on a schedule with Pulses
- View data in Slack anytime with MetaBot
- Humanize data for your team by renaming, annotating and hiding fields
For more information check out metabase.com
Supported databases
- Postgres
- MySQL
- Druid
- SQL Server
- Redshift
- MongoDB
- Google BigQuery
- SQLite
- H2
- CrateDB
- Oracle
- Vertica
- Presto
- Snowflake
Don't see your favorite database? File an issue to let us know.
Installation
Metabase can be run just about anywhere so checkout our Installation Guides for detailed instructions for various deployments. Here's the TLDR:
Docker
To run Metabase via Docker, just type
docker run -d -p 3000:3000 --name metabase metabase/metabase
JVM Jar
To run the jar you will need to have a Java Runtime installed. As a quick check to see if you system already has one, try
java -version
If you see something like
java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)
you are good to go. Otherwise, download the Java Runtime Environment at http://java.com/
Go to the Metabase Download Page and download the current build. Place the downloaded jar into a newly created directory (as it will create some files when it is run), and run it on the command line:
java -jar metabase.jar
Now, open a browser and go to http://localhost:3000 , and you will be asked a set of questions that will set up a user account, and then you can add a database connection. For this to work you will need to get some information about which database you want to connect to, such as the Host Name and Port that it is running on, the Database Name and the User and Password that you will be using.
Once you have added this connection, you will be taken into the app and you'll be ready to ask your first question.
For a more detailed walkthrough, check out our Getting Started guide.
Frequently Asked Questions
Some questions come up over and over again. Check here first: FAQ
Security Disclosure
Security is very important to us. If you discover any issue regarding security, please disclose the information responsibly by sending an email to security@metabase.com and not by creating a GitHub issue.
Contributing
To get started with a development installation of the Metabase, follow the instructions at our Developers Guide.
Then take a look at our Contribution Guide for information about our process and where you can fit in!
Talk to other contributors in our Gitter room.
Internationalization
We want Metabase to be avaliable in as many languages as possible. See what translations are avaliable and help contribute to internationalization using our project over at POEditor
Extending and Deep Integrations
Metabase also allows you to hit our Query API directly from Javascript to integrate the simple analytics we provide with your own application or third party services to do things like:
- Build moderation interfaces
- Export subsets of your users to third party marketing automation software
- Provide a specialized customer lookup application for the people in your company
Danger zone
The button below will deploy the branch where this README.md lives onto Heroku. Metabase developers use it to deploy branches of Metabase to test our PRs, etc. We DO NOT recommend you using this for production. Instead, please use a stable build.
License
Unless otherwise noted, all Metabase source files are made available under the terms of the GNU Affero General Public License (AGPL).
See LICENSE.txt for details and exceptions.
Unless otherwise noted, all files © 2018 Metabase, Inc.