func NewDNAQuery(cfg *Configuration) (*DNAQuery, error) {
	if len(cfg.Apps) < 1 {
		return nil, errors.New("Configuration needs at least 1 app")
	}
	dna := &DNAQuery{
		Configuration: cfg,
		appNames:      cfg.extractAppNames(),
	}
	dna.compileRegex()
	err := dna.setupDirectory()
	if err != nil {
		return nil, errors.Wrap(err, "Error setting up directory")
	}
	return dna, nil
}
NewDNAQuery returns a DNAQuery instance all setup complete
package main
import (
	"bufio"
	"compress/gzip"
	"context"
	"encoding/csv"
	"fmt"
	"io"
	"log"
	"os"
	"path/filepath"
	"strings"
	"time"
	"cloud.google.com/go/bigquery"
	"cloud.google.com/go/storage"
	"github.com/buger/jsonparser"
	"github.com/pkg/errors"
	"github.com/urfave/cli"
	"google.golang.org/api/option"
)
var version = "0.3.1"
type DNAQuery struct {
	*Configuration
	appNames map[string]struct{}
}