mirror of
https://github.com/apache/superset.git
synced 2026-04-20 00:24:38 +00:00
Added FAQ and db dependencies to docs
This commit is contained in:
34
docs/faq.rst
Normal file
34
docs/faq.rst
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
FAQ
|
||||||
|
===
|
||||||
|
|
||||||
|
|
||||||
|
Can I query/join multiple tables at one time?
|
||||||
|
---------------------------------------------
|
||||||
|
Not directly no. A Caravel SQLAlchemy datasource can only be a single table
|
||||||
|
or a view.
|
||||||
|
|
||||||
|
When working with tables, the solution would be to materialize
|
||||||
|
a table that contains all the fields needed for your analysis, most likely
|
||||||
|
through some scheduled batch process.
|
||||||
|
|
||||||
|
A view is a simple logical layer that abstract an arbitrary SQL queries as
|
||||||
|
a virtual table. This can allow you to join and union multiple tables, and
|
||||||
|
to apply some transformation using arbitrary SQL expressions. The limitation
|
||||||
|
there is your database performance as Caravel effectively will run a query
|
||||||
|
on top of your query (view). A good practice may be to limit yourself to
|
||||||
|
joining your main large table to one or many small tables only, and avoid
|
||||||
|
using ``GROUP BY`` where possible as Caravel will do its own ``GROUP BY`` and
|
||||||
|
doing the work twice might slow down performance.
|
||||||
|
|
||||||
|
Whether you use a table or a view, the important factor is whether your
|
||||||
|
database is fast enough to serve it in an interactive fashion to provide
|
||||||
|
a good user experience in Caravel.
|
||||||
|
|
||||||
|
|
||||||
|
How BIG can my data source be?
|
||||||
|
------------------------------
|
||||||
|
|
||||||
|
It can be gigantic! As mentioned above, the main criteria is whether your
|
||||||
|
database can execute queries and return results in a time frame that is
|
||||||
|
acceptable to your users. Many distributed databases out there can execute
|
||||||
|
queries that scan through terabytes in an interactive fashion.
|
||||||
@@ -34,6 +34,7 @@ Contents
|
|||||||
tutorial
|
tutorial
|
||||||
videos
|
videos
|
||||||
gallery
|
gallery
|
||||||
|
faq
|
||||||
|
|
||||||
|
|
||||||
Indices and tables
|
Indices and tables
|
||||||
|
|||||||
@@ -121,6 +121,40 @@ the `Flask App Builder Documentation
|
|||||||
<http://flask-appbuilder.readthedocs.org/en/latest/config.html>`_
|
<http://flask-appbuilder.readthedocs.org/en/latest/config.html>`_
|
||||||
for more information on how to configure Caravel.
|
for more information on how to configure Caravel.
|
||||||
|
|
||||||
|
Database dependencies
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Caravel does not ship bundled with connectivity to databases, except
|
||||||
|
for Sqlite, which is part of the Python standard library.
|
||||||
|
You'll need to install the required packages for the database you
|
||||||
|
want to use as your metadata database as well as the packages needed to
|
||||||
|
connect to the databases you want to access through Caravel.
|
||||||
|
|
||||||
|
Here's a list of some of the recommended packages.
|
||||||
|
|
||||||
|
+---------------+-------------------------------------+-------------------------------------------------+
|
||||||
|
| database | pypi package | SQLAlchemy URI prefix |
|
||||||
|
+===============+=====================================+=================================================+
|
||||||
|
| MySQL | ``pip install mysqlclient`` | ``mysql://`` |
|
||||||
|
+---------------+-------------------------------------+-------------------------------------------------+
|
||||||
|
| Postgres | ``pip install psycopg2`` | ``postgresql+psycopg2://`` |
|
||||||
|
+---------------+-------------------------------------+-------------------------------------------------+
|
||||||
|
| Presto | ``pip install pyhive`` | ``presto://`` |
|
||||||
|
+---------------+-------------------------------------+-------------------------------------------------+
|
||||||
|
| Oracle | ``pip install cx_Oracle`` | ``oracle://`` |
|
||||||
|
+---------------+-------------------------------------+-------------------------------------------------+
|
||||||
|
| sqlite | | ``sqlite://`` |
|
||||||
|
+---------------+-------------------------------------+-------------------------------------------------+
|
||||||
|
| Redshift | ``pip install sqlalchemy-redshift`` | ``redshift+psycopg2://`` |
|
||||||
|
+---------------+-------------------------------------+-------------------------------------------------+
|
||||||
|
| MSSQL | ``pip install pymssql`` | ``mssql://`` |
|
||||||
|
+---------------+-------------------------------------+-------------------------------------------------+
|
||||||
|
|
||||||
|
Note that many other database are supported, the main criteria being the
|
||||||
|
existence of a functional SqlAlchemy dialect and Python driver. Googling
|
||||||
|
the keyword ``sqlalchemy`` in addition of a keyword that describes the
|
||||||
|
database you want to connect to should get you to the right place.
|
||||||
|
|
||||||
|
|
||||||
Caching
|
Caching
|
||||||
-------
|
-------
|
||||||
@@ -147,7 +181,7 @@ parameters exposed by SQLAlchemy. In the ``Database`` edit view, you will
|
|||||||
find an ``extra`` field as a ``JSON`` blob.
|
find an ``extra`` field as a ``JSON`` blob.
|
||||||
|
|
||||||
.. image:: _static/img/tutorial/add_db.png
|
.. image:: _static/img/tutorial/add_db.png
|
||||||
:scale: 50 %
|
:scale: 30 %
|
||||||
|
|
||||||
This JSON string contains extra configuration elements. The ``engine_params``
|
This JSON string contains extra configuration elements. The ``engine_params``
|
||||||
object gets unpacked into the
|
object gets unpacked into the
|
||||||
|
|||||||
Reference in New Issue
Block a user