• Stars
    star
    394
  • Rank 109,295 (Top 3 %)
  • Language
    Julia
  • License
    Other
  • Created about 9 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Query almost anything in julia

Query

Project Status: Active - The project has reached a stable, usable state and is being actively developed. Build Status Build status codecov

Overview

Query is a package for querying julia data sources. It can filter, project, join and group data from any iterable data source, including all the sources supported in IterableTables.jl. One can for example query any of the following data sources: any array, DataFrames, DataStreams (including CSV, Feather, SQLite, ODBC), DataTables, IndexedTables, TimeSeries, Temporal, TypedTables and DifferentialEquations (any DESolution).

The package currently provides working implementations for in-memory data sources, but will eventually be able to translate queries into e.g. SQL. There is a prototype implementation of such a "query provider" for SQLite in the package, but it is experimental at this point and only works for a very small subset of queries.

Query is heavily inspired by LINQ, in fact right now the package is largely an implementation of the LINQ part of the C# specification. Future versions of Query will most likely add features that are not found in the original LINQ design.

Alternatives

Query.jl is not the only julia initiative for querying data, there are many other packages that have similar goals. Take a look at DataFramesMeta.jl, and SplitApplyCombine.jl. If I missed other initiatives, please let me know and I'll add them to this list!

Installation

You can add the package with:

Pkg.add("Query")

Getting started

To get started, take a look at the documentation.

Getting help

Please ask any usage question in the Data Domain on the julia Discourse forum. If you find a bug or have an improvement suggestion for this package, please open an issue in this github repository.

Highlights

  • Query is an almost complete implementation of the query expression section of the C# specification, with some additional julia specific features added in.
  • The package supports a large number of data sources: DataFrames, DataStreams (including CSV, Feather, SQLite, ODBC), DataTables, IndexedTables, TimeSeries, Temporal, TypedTables, DifferentialEquations (any DESolution), arrays any type that can be iterated.
  • The results of a query can be materialized into a range of different data structures: iterators, DataFrames, DataTables, IndexedTables, TimeSeries, Temporal, TypedTables, arrays, dictionaries or any DataStream sink (this includes CSV and Feather files).
  • One can mix and match almost all sources and sinks within one query. For example, one can easily perform a join of a DataFrame with a CSV file and write the results into a Feather file, all within one query.
  • The type instability problems that one can run into with DataFrames do not affect Query, i.e. queries against DataFrames are completely type stable.
  • There are three different APIs that package authors can use to make their data sources queryable with this package. The most simple API only requires a data source to provide an iterator. Another API provides a data source with a complete graph representation of the query and the data source can e.g. rewrite that query graph as a SQL statement to execute the query. The final API allows a data source to provide its own data structures that can represent a query graph.
  • The package is completely documented.

More Repositories

1

VegaLite.jl

Julia bindings to Vega-Lite
Julia
269
star
2

Queryverse.jl

A meta package for data science in julia
Julia
153
star
3

DataVoyager.jl

Julia wrapper for the Voyager data exploration tool
JavaScript
128
star
4

ElectronDisplay.jl

An Electron.jl based figure and table display.
CSS
85
star
5

IterableTables.jl

Implementations of the TableTraits.jl interface for various packages
Julia
79
star
6

ReadStat.jl

Read files from Stata, SAS, and SPSS
Julia
78
star
7

ExcelReaders.jl

ExcelReaders is a package that provides functionality to read Excel files.
Julia
58
star
8

TextParse.jl

A bunch of fast text parsing tools
Julia
57
star
9

CSVFiles.jl

FileIO.jl integration for CSV files
Julia
50
star
10

ExcelFiles.jl

FileIO.jl integration for Excel files
Julia
42
star
11

StatFiles.jl

FileIO.jl integration for Stata, SPSS, and SAS files
Julia
24
star
12

VegaDatasets.jl

Julia package for loading the standard Vega data sets
Julia
20
star
13

ParquetFiles.jl

FileIO.jl integration for Parquet files
Julia
19
star
14

DataValues.jl

Missing values for julia
Julia
14
star
15

TableTraits.jl

Traits for julia tables
Julia
13
star
16

QueryOperators.jl

Query operators for julia
Julia
11
star
17

IteratorInterfaceExtensions.jl

Traits for julia iterators
Julia
11
star
18

FeatherFiles.jl

FileIO.jl integration for Feather files
Julia
8
star
19

Vega.jl

Julia bindings to Vega
Julia
6
star
20

QuickVega.jl

Julia
6
star
21

QuerySQLite.jl

SQLite backend for Query.jl
Julia
4
star
22

FeatherLib.jl

Low level Julia library for reading feather files
Julia
4
star
23

Lyra.jl

Julia wrapper for the Lyra Visualization Design Environment
Julia
3
star
24

DataTables.jl

A simple read-only table type for the Queryverse
Julia
3
star
25

NamedTupleUtilities.jl

Various helper functions for named tuples
Julia
3
star
26

SandDance.jl

TypeScript
2
star
27

TableTraitsUtils.jl

Utilities for implementing the TableTraits.jl interfaces
Julia
2
star
28

FstFiles.jl

FileIO.jl integration for fst files
Julia
2
star
29

QueryTables.jl

A simple table type for the Queryverse
Julia
2
star
30

TableShowUtils.jl

Low level package that provides some helpers for implementing show for TableTraits.jl types
Julia
2
star
31

queryverse.github.io

Queryverse homepage
HTML
2
star
32

QueryverseTests

Queryverse integration tests
1
star
33

LibXLS.jl

Julia
1
star
34

QueryableBackend.jl

Low level package to support custom Query.jl backends
Julia
1
star
35

VegaLiteBuilder

Julia
1
star