pyDrill-dsl

https://img.shields.io/travis/PythonicNinja/pydrill_dsl.svg https://img.shields.io/pypi/v/pydrill_dsl.svg Documentation Status https://coveralls.io/repos/github/PythonicNinja/pydrill_dsl/badge.svg

Pythonic DSL for Apache Drill.

Schema-free SQL Query Engine for Hadoop, NoSQL and Cloud Storage

Features

  • Uses Peewee syntax
  • Support for all storage plugins
  • Support for drivers PyODBC and pyDrill

Sample usage

from pydrill_dsl.resource import Resource

class Employee(Resource):
    first_name = Field()
    salary = Field()
    position_id = Field()
    department_id = Field()

    class Meta:
        storage_plugin = 'cp'
        path = 'employee.json'


Employee.select().filter(salary__gte=17000)

Employee.select().paginate(page=1, paginate_by=5)


salary_gte_17K = (Employee.salary >= 17000)
salary_lte_25K = (Employee.salary <= 25000)
Employee.select().where(salary_gte_17K & salary_lte_25K)

Employee.select(
    fn.Min(Employee.salary).alias('salary_min'),
    fn.Max(Employee.salary).alias('salary_max')
).scalar(as_tuple=True)

# creation of resource can be done without creation of class:
employee = Resource(storage_plugin='cp', path='employee.json',
                    fields=('first_name', 'salary', 'position_id', 'department_id'))