Coder Social home page Coder Social logo

metabase / metabase Goto Github PK

View Code? Open in Web Editor NEW
36.4K 644.0 4.9K 520.86 MB

The simplest, fastest way to get business intelligence and analytics to everyone in your company :yum:

Home Page: https://metabase.com

License: Other

JavaScript 19.99% Clojure 50.79% HTML 0.01% CSS 0.30% Emacs Lisp 0.01% Shell 0.07% Dockerfile 0.01% Mustache 0.08% TypeScript 28.37% MDX 0.38%
analytics businessintelligence dashboard reporting slack clojure database metabase postgres postgresql

metabase's Introduction

Metabase

Metabase is the easy, open-source way for everyone in your company to ask questions and learn from data.

Metabase Product Screenshot

Latest Release codecov Docker Pulls

Get started

The easiest way to get started with Metabase is to sign up for a free trial of Metabase Cloud. You get support, backups, upgrades, an SMTP server, SSL certificate, SoC2 Type 2 security auditing, and more (plus your money goes toward improving Metabase). Check out our quick overview of cloud vs self-hosting. If you need to, you can always switch to self-hosting Metabase at any time (or vice versa).

Features

Take a tour of Metabase.

Supported databases

Installation

Metabase can be run just about anywhere. Check out our Installation Guides.

Contributing

Quick Setup: Dev environment

In order to spin up a development environment, you need to start the front end and the backend as follows:

Frontend quick setup

The following command will install the Javascript dependencies:

$ yarn install

To build and run without watching changes:

$ yarn build

To build and run with hot-reload:

$ yarn build-hot

Backend quick setup

In order to run the backend, you'll need to build the drivers first, and then start the backend:

$ ./bin/build-drivers.sh
$ clojure -M:run

For a more detailed setup of a dev environment for Metabase, check out our Developers Guide.

Internationalization

We want Metabase to be available in as many languages as possible. See which translations are available and help contribute to internationalization using our project over at POEditor. You can also check out our policies on translations.

Extending Metabase

Hit our Query API from Javascript to integrate analytics. Metabase enables your application to:

  • Build moderation interfaces.
  • Export subsets of your users to third party marketing automation software.
  • Provide a custom customer lookup application for the people in your company.

Check out our guide, Working with the Metabase API.

Security Disclosure

See SECURITY.md for details.

License

This repository contains the source code for both the Open Source edition of Metabase, released under the AGPL, as well as the commercial editions of Metabase, which are released under the Metabase Commercial Software License.

See LICENSE.txt for details.

Unless otherwise noted, all files © 2024 Metabase, Inc.

If you’d like more technical resources to set up your data stack with Metabase, connect with a Metabase Expert.

metabase's People

Contributors

agilliland avatar alxnddr avatar ariya avatar attekei avatar bshepherdson avatar calherries avatar camsaul avatar daltojohnso avatar dpsutton avatar gusaiani avatar iethree avatar jeff-bruemmer avatar kdoh avatar kulyk avatar lewisl9029 avatar mazameli avatar metamben avatar nemanjaglumac avatar noahmoss avatar npfitz avatar paoliniluis avatar paulrosenzweig avatar qnkhuat avatar ranquild avatar salsakran avatar sbelak avatar senior avatar snoe avatar tlrobinson avatar winlost avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

metabase's Issues

issue with mongo connection state

this came out of the logs but it's not entirely clear what triggered it. I believe it happened as part of the sync process.

java.lang.IllegalStateException: open
at org.bson.util.Assertions.isTrue(Assertions.java:36)
at com.mongodb.DBTCPConnector.getReplicaSetStatus(DBTCPConnector.java:361)
at com.mongodb.Mongo.getReplicaSetStatus(Mongo.java:446)
at com.mongodb.DB.getCommandReadPreference(DB.java:82)
at com.mongodb.DB.command(DB.java:317)
at com.mongodb.DB.command(DB.java:299)
at com.mongodb.DB.command(DB.java:374)
at com.mongodb.DB.command(DB.java:246)
at monger.core$command.invoke(core.clj:183)
at monger.collection$aggregate.invoke(collection.clj:498)
at clojure.core$eval37504.invoke(NO_SOURCE_FILE)
at clojure.lang.Compiler.eval(Compiler.java:6703)
at clojure.lang.Compiler.eval(Compiler.java:6666)
at clojure.core$eval.invoke(core.clj:2927)
at metabase.driver.mongo.query_processor$process_and_run$f__32758__auto____33362.invoke(query_processor.clj:47)
at metabase.driver.mongo.query_processor$process_and_run.invoke(query_processor.clj:39)
at metabase.driver.mongo.MongoDriver.process_query(mongo.clj:69)
at metabase.driver$process_query$fn__30094.invoke(driver.clj:132)
at metabase.driver$process_query.invoke(driver.clj:131)
at metabase.db.metadata_queries$field_query.invoke(metadata_queries.clj:14)
at metabase.db.metadata_queries$field_distinct_values.invoke(metadata_queries.clj:21)
at clojure.lang.Var.invoke(Var.java:379)
at clojure.lang.AFn.applyToHelper(AFn.java:154)
at clojure.lang.Var.applyTo(Var.java:700)
at clojure.core$apply.invoke(core.clj:624)
at metabase.util$runtime_resolved_fn$fn__6690.doInvoke(util.clj:233)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at metabase.models.field_values$create_field_values.doInvoke(field_values.clj:51)
at clojure.lang.RestFn.invoke(RestFn.java:423)
at metabase.models.field_values$create_field_values_if_needed.doInvoke(field_values.clj:64)
at clojure.lang.RestFn.invoke(RestFn.java:410)
at metabase.models.field$eval14593$fn__14595$fn__14597.invoke(field.clj:122)
at clojure.core$binding_conveyor_fn$fn__4145.invoke(core.clj:1910)
at clojure.lang.AFn.call(AFn.java:18)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

URL-ify categories of questions on the home page

right now "popular", "mine', and "favorites" are just state a page holds.
If they were actual routes, the history would be set and the back button would work, you could pass the link around, etc

Need a way to minimize duplication when using icons between react and angular

So it's cool that we have less duplication between our react icons in the query builder thanks to #425, but there's also the itchy fact that we're currently using the same icon set across react and angular and the path definitions, classnames, etc reside in different places.

I'm thinking it'd be a good idea at some point to try and unify the source of truth for the icon paths and then we can use them in either context.

My current thinking is that we could stuff them into a global icon paths object for now (or a module if we stop partying like its 1999)

var MB_ICON_PATHS = {
   // icon paths
}

In icons.react.js we'd just switch the reference from

/* old this.iconPaths[this.props.name] */
var iconPath = MB_ICON_PATHS[this.props.name]

This would then allow us to clean up our angular icon directive quite a bit and could get rid of the need to have separate angular directives and partials for our icons.

Here's the general gist of the pseudo code for that directive.

angular.module('corvus.components').directive('icon', function () {
  return {
   restrict: 'E',
   templateUrl: 'icon.html'
   scope: {
     name: '@',
     width: '@?',
     height; '@?',
   },
   compile: function (element, attrs) {
      var defaultWidth = '32px',
            defaultHeight = '32px';

       attrs.path = MB_ICON_PATHS[attrs.name]

        attrs.width = attrs.width || defaultWidth;
        attrs.height = attrs.height || defaultHeight;
  }
})

this would also drastically reduce the number of XHR requests in angular land when using icons.

Note that none of that is really a big priority but it'd be nice to do to keep my life sane as we continue to edit and add icons and use them in two contexts.

@salsakran, @agilliland, @tlrobinson what do you guys think?

Enable the ability to switch from gui to sql after running a question

once you start down building a card and run it, there's no way to change to sql without starting over. This is most problematic if you just need to do something more advanced on a card and it's already properly placed on a dash. Makes more sense to be able to write sql for the same card.

better handling for cards when their underlying database is deleted

if you add a database, create some cards against it, then delete the database the cards remain in a defunct state. we should figure out a more graceful way to deal with this scenario and possible 1) delete the cards or 2) show some better messaging about why they aren't working any more.

chart tooltips are rounding values

I noticed this on a card where the values are all from 1.0 to 0.0 and the chart is working fine, but the tooltip shows a rounded integer value instead of the original number in the data.

time series randomly showing month tick

can be confusing and only happens with most recent month, it looks like. occurs in prod and staging

(February '15 shows as a tick which looks like Feb 15th when data is the beginning of month) also would be great to have the OPTION to show the points

also, the line gets weirdly thin at the end of the graph.

remove field values that are no longer available in the db

Over time the set of values that are available for a given Field can change and in specific some values can go away. We should recognize this situation and remove a FieldValue entry if that value is no longer in the data.

An example recently is the Metabase 'timeseries' type display. The metadata for the field report_card.display contained FieldValues for all the charting options that were in use such as 'area', 'line', etc. When we migrated away from 'timeseries' there were no longer any rows with that value and yet it still remained a FieldValue and showed up in lists for filtering and breakouts on that table.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.