Skip to content
Apache Kylin Python Client Library
Python Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs/picture update readme Feb 13, 2019
examples Refactor kylinpy (#16) Nov 13, 2018
kylinpy Increase UT coverage / badge (#23) May 5, 2019
tests Increase UT coverage / badge (#23) May 5, 2019
.gitignore Refactor UT code Apr 17, 2018
.travis.yml Increase UT coverage / badge (#23) May 5, 2019
LICENSE Initial commit Dec 22, 2017
MANIFEST.in Fix setuptools package issue Nov 13, 2018
README.rst Increase UT coverage / badge (#23) May 5, 2019
requirements-dev.txt
requirements.txt Remove six dependence Nov 13, 2018
setup.cfg publish to python repo Dec 25, 2017
setup.py Compatible with Python3.7+ Feb 28, 2019
tox.ini Increase UT coverage / badge (#23) May 5, 2019
upload-pypi.sh Flake8 coding style check Sep 21, 2018

README.rst

Apache Kylin Python Client Library

Apache Kylin Python Client Library is a python-based Apache Kylin client.

Any application that uses SQLAlchemy can now query Apache Kylin with this Apache Kylin dialect installed.

Installation

The easiest way to install Apache Kylin Python Client Library is to use pip:

pip install --upgrade kylinpy

Alternatiely, you may install this library from local project path, You are welcomed to also commit to this library:

git clone https://github.com/Kyligence/kylinpy.git
pip install -e kylinpy

Apache Kylin dialect for SQLAlchemy

Any application that uses SQLAlchemy can now query Apache Kylin with this Apache Kylin dialect installed. It is part of the Apache Kylin Python Client Library, so if you already installed this library in the previous step, you are ready to use.

You may use below template to build DSN to connect Apache Kylin:

kylin://<username>:<password>@<hostname>:<port>/<project>
DSN Field Default Value
username  
password  
hostname  
port 7070
project  

SQLAlchemy create_engine takes an argument connect_args which is an additional dictionary that will be passed to connect().

key Default Value
is_ssl False
prefix kylin/api
timeout(unit: seconds) 30
unverified True
version v1
is_pushdown False

From SQLAlchemy access Apache Kylin

$ python
>>> import sqlalchemy as sa
>>> kylin_engine = sa.create_engine('kylin://ADMIN:KYLIN@sandbox/learn_kylin', connect_args={'is_ssl': True, 'timeout': 60})
>>> results = kylin_engine.execute('SELECT count(*) FROM KYLIN_SALES')
>>> [e for e in results]
[(4953,)]
>>> kylin_engine.table_names()
[u'KYLIN_ACCOUNT',
 u'KYLIN_CAL_DT',
 u'KYLIN_CATEGORY_GROUPINGS',
 u'KYLIN_COUNTRY',
 u'KYLIN_SALES',
 u'KYLIN_STREAMING_TABLE']

From Pandas access Apache Kylin

$ python
 >>> import sqlalchemy as sa
 >>> import pandas as pd
 >>> kylin_engine = sa.create_engine('kylin://ADMIN:KYLIN@sandbox/learn_kylin', connect_args={'is_ssl': True, 'timeout': 60})
 >>> sql = 'select * from kylin_sales limit 10'
 >>> pd.read_sql(sql, kylin_engine)

From Superset access Apache Kylin

Now you can configure the DSN in your application to establish the connection with Apache Kylin.

For example, you may install Apache Kylin Python Client Library in your Superset environment and configure connection to Apache Kylin in Superset

https://raw.githubusercontent.com/Kyligence/kylinpy/master/docs/picture/superset1.png

then you may be able to query Apache Kylin one table at a time from Superset

https://raw.githubusercontent.com/Kyligence/kylinpy/master/docs/picture/superset2.png

you may also be able to query detail data

https://raw.githubusercontent.com/Kyligence/kylinpy/master/docs/picture/superset3.png

Alternatively, you may also be able to query multiple tables from Apache Kylin by using SQL Lab in Superset.

https://raw.githubusercontent.com/Kyligence/kylinpy/master/docs/picture/superset4.png

You can’t perform that action at this time.