Giter VIP home page Giter VIP logo

analyst's Introduction

Analyst

Go Report Card Build Status

Purpose

Analyst is a tool to validate and run Analyst Query Language (AQL) scripts. AQL is an ETL configuration language for developers that aims to be:

  • Declarative: the developer defines the components, how they depend on one another, and any additional synchronization (i.e. AFTER); the runtime figures out the DAG and executes it
  • Intuitive: similar syntax to SQL, but any options for external programs such as MS Excel use native conventions such as Excel Ranges
  • Maintainable: support large jobs and code reuse through language features like INCLUDE and EXTERN
  • Extensible: use stdin/stdout protocol and pipes to write ETL logic in any language. Native support for Python and Javascript.
  • Stateful: Components can persist state in an SQLite3 database unique to each job run (GLOBAL source/destination).

It has connectors to:

  • MS SQL Server (source/destination)
  • Postgres (source/destination)
  • SQLite3 (source/destination)
  • Mandrill transactional email API (destination)
  • Web APIs (source)
  • Slack (for logging only)
  • Flat file (source)
  • Console (destination)
  • Built-in in-memory SQLite3 database (source/destination)
  • JSON-RPC plugins (source/destination)

Getting Started

  1. Grab the latest binary from the releases tab and place it on your PATH.
  2. Create and save an AQL script.
  3. Run analyst run --script <path-to-your-script>.

For a "hello world" example, try

DATA 'MyMessage' (
	[
	  ["Hello, World"]
	]
) INTO CONSOLE WITH (COLUMNS = 'Message')

Documentation

Docs are on Github pages here.

Table of Contents

  1. Get Started
  2. Recipes
  3. Blocks

Contributing

All contributions are welcome:

  • To report any bugs or feature suggestion, please open an issue
  • If you wish to fix a minor bug or issue, please open a PR directly
  • For enhancements, refactoring, or major issues, please open an issue before opening a PR

License

All source code and artifacts are released under GNU General Public License v3.0, as detailed in LICENSE.md. This means, among other things, that if you wish to use any part of the code or artifacts in your own project, it must be distributed under the same license.

If this not suitable for your use case please get in touch by opening an issue or Twitter @MikeBrno.

analyst's People

Contributors

michaelbironneau avatar tappoz avatar

Watchers

 avatar  avatar

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.