Skip to content

Commit

Permalink
Cleanup and restructure sql conversion dir (#3298)
Browse files Browse the repository at this point in the history
  • Loading branch information
jnsrnhld authored Feb 15, 2024
1 parent 5a570e8 commit 053a7c6
Show file tree
Hide file tree
Showing 51 changed files with 143 additions and 183 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
import com.bakdata.conquery.models.query.queryplan.filter.FilterNode;
import com.bakdata.conquery.sql.conversion.cqelement.concept.ConnectorCteStep;
import com.bakdata.conquery.sql.conversion.cqelement.concept.FilterContext;
import com.bakdata.conquery.sql.conversion.model.aggregator.CountSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.filter.SqlFilters;
import com.bakdata.conquery.sql.conversion.model.select.CountSqlAggregator;
import lombok.Data;
import lombok.NoArgsConstructor;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
import com.bakdata.conquery.models.query.queryplan.filter.FilterNode;
import com.bakdata.conquery.sql.conversion.cqelement.concept.ConnectorCteStep;
import com.bakdata.conquery.sql.conversion.cqelement.concept.FilterContext;
import com.bakdata.conquery.sql.conversion.model.aggregator.CountQuartersSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.filter.SqlFilters;
import com.bakdata.conquery.sql.conversion.model.select.CountQuartersSqlAggregator;
import lombok.Getter;
import lombok.Setter;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
import com.bakdata.conquery.models.query.queryplan.filter.FilterNode;
import com.bakdata.conquery.sql.conversion.cqelement.concept.ConnectorCteStep;
import com.bakdata.conquery.sql.conversion.cqelement.concept.FilterContext;
import com.bakdata.conquery.sql.conversion.model.aggregator.DateDistanceSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.filter.SqlFilters;
import com.bakdata.conquery.sql.conversion.model.select.DateDistanceSqlAggregator;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
import com.bakdata.conquery.models.query.queryplan.filter.FilterNode;
import com.bakdata.conquery.sql.conversion.cqelement.concept.ConnectorCteStep;
import com.bakdata.conquery.sql.conversion.cqelement.concept.FilterContext;
import com.bakdata.conquery.sql.conversion.model.aggregator.FlagSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.filter.SqlFilters;
import com.bakdata.conquery.sql.conversion.model.select.FlagSqlAggregator;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.dropwizard.validation.ValidationMethod;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@
import com.bakdata.conquery.models.query.queryplan.filter.FilterNode;
import com.bakdata.conquery.sql.conversion.cqelement.concept.ConnectorCteStep;
import com.bakdata.conquery.sql.conversion.cqelement.concept.FilterContext;
import com.bakdata.conquery.sql.conversion.model.aggregator.NumberSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.filter.SqlFilters;
import com.bakdata.conquery.sql.conversion.model.select.NumberSqlAggregator;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,5 +34,4 @@ public EnumSet<MajorTypeId> getAcceptedColumnTypes() {
public FilterNode createFilterNode(String value) {
return new PrefixTextFilterNode(getColumn(), value);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@
import com.bakdata.conquery.models.query.queryplan.filter.FilterNode;
import com.bakdata.conquery.sql.conversion.cqelement.concept.ConnectorCteStep;
import com.bakdata.conquery.sql.conversion.cqelement.concept.FilterContext;
import com.bakdata.conquery.sql.conversion.model.aggregator.SumDistinctSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.aggregator.SumSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.filter.SqlFilters;
import com.bakdata.conquery.sql.conversion.model.select.SumDistinctSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.select.SumSqlAggregator;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import lombok.NoArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import com.bakdata.conquery.models.datasets.concepts.select.concept.UniversalSelect;
import com.bakdata.conquery.models.query.queryplan.aggregators.specific.ExistsAggregator;
import com.bakdata.conquery.sql.conversion.cqelement.concept.SelectContext;
import com.bakdata.conquery.sql.conversion.model.select.ExistsSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.aggregator.ExistsSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.select.SqlSelects;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Getter;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import com.bakdata.conquery.models.query.queryplan.aggregators.Aggregator;
import com.bakdata.conquery.models.query.queryplan.aggregators.specific.value.FirstValueAggregator;
import com.bakdata.conquery.sql.conversion.cqelement.concept.SelectContext;
import com.bakdata.conquery.sql.conversion.model.select.FirstValueSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.aggregator.FirstValueSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.select.SqlSelects;
import com.fasterxml.jackson.annotation.JsonCreator;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import com.bakdata.conquery.models.query.queryplan.aggregators.Aggregator;
import com.bakdata.conquery.models.query.queryplan.aggregators.specific.value.LastValueAggregator;
import com.bakdata.conquery.sql.conversion.cqelement.concept.SelectContext;
import com.bakdata.conquery.sql.conversion.model.select.LastValueSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.aggregator.LastValueSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.select.SqlSelects;
import com.fasterxml.jackson.annotation.JsonCreator;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import com.bakdata.conquery.models.query.queryplan.aggregators.Aggregator;
import com.bakdata.conquery.models.query.queryplan.aggregators.specific.value.RandomValueAggregator;
import com.bakdata.conquery.sql.conversion.cqelement.concept.SelectContext;
import com.bakdata.conquery.sql.conversion.model.select.RandomValueSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.aggregator.RandomValueSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.select.SqlSelects;
import com.fasterxml.jackson.annotation.JsonCreator;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
import com.bakdata.conquery.models.query.queryplan.aggregators.specific.CountQuartersOfDateRangeAggregator;
import com.bakdata.conquery.models.query.queryplan.aggregators.specific.CountQuartersOfDatesAggregator;
import com.bakdata.conquery.sql.conversion.cqelement.concept.SelectContext;
import com.bakdata.conquery.sql.conversion.model.select.CountQuartersSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.aggregator.CountQuartersSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.select.SqlSelects;
import com.fasterxml.jackson.annotation.JsonCreator;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import com.bakdata.conquery.models.query.queryplan.aggregators.DistinctValuesWrapperAggregator;
import com.bakdata.conquery.models.query.queryplan.aggregators.specific.CountAggregator;
import com.bakdata.conquery.sql.conversion.cqelement.concept.SelectContext;
import com.bakdata.conquery.sql.conversion.model.select.CountSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.aggregator.CountSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.select.SqlSelects;
import lombok.Data;
import lombok.NoArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import com.bakdata.conquery.models.query.queryplan.aggregators.Aggregator;
import com.bakdata.conquery.models.query.queryplan.aggregators.specific.DateDistanceAggregator;
import com.bakdata.conquery.sql.conversion.cqelement.concept.SelectContext;
import com.bakdata.conquery.sql.conversion.model.select.DateDistanceSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.aggregator.DateDistanceSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.select.SqlSelects;
import com.fasterxml.jackson.annotation.JsonCreator;
import lombok.Getter;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import com.bakdata.conquery.models.query.queryplan.aggregators.Aggregator;
import com.bakdata.conquery.models.query.queryplan.aggregators.specific.FlagsAggregator;
import com.bakdata.conquery.sql.conversion.cqelement.concept.SelectContext;
import com.bakdata.conquery.sql.conversion.model.select.FlagSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.aggregator.FlagSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.select.SqlSelects;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnore;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

import com.bakdata.conquery.io.cps.CPSType;
import com.bakdata.conquery.io.jackson.serializer.NsIdRef;
import com.bakdata.conquery.models.datasets.Column;
import com.bakdata.conquery.models.datasets.concepts.select.Select;
import com.bakdata.conquery.models.datasets.concepts.select.connector.SingleColumnSelect;
import com.bakdata.conquery.models.datasets.Column;
import com.bakdata.conquery.models.events.MajorTypeId;
import com.bakdata.conquery.models.query.queryplan.aggregators.Aggregator;
import com.bakdata.conquery.models.query.queryplan.aggregators.specific.PrefixTextAggregator;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,9 @@
import com.bakdata.conquery.models.query.queryplan.aggregators.specific.sum.RealSumAggregator;
import com.bakdata.conquery.sql.conversion.cqelement.concept.ConnectorCteStep;
import com.bakdata.conquery.sql.conversion.cqelement.concept.SelectContext;
import com.bakdata.conquery.sql.conversion.model.aggregator.SumDistinctSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.aggregator.SumSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.select.SqlSelects;
import com.bakdata.conquery.sql.conversion.model.select.SumDistinctSqlAggregator;
import com.bakdata.conquery.sql.conversion.model.select.SumSqlAggregator;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.dropwizard.validation.ValidationMethod;
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,4 @@

interface DateAggregationCteStep extends CteStep {

@Override
default String cteName(String nodeLabel) {
return "%s%s".formatted(nodeLabel, getSuffix());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ public class DateAggregationDates {

private static final String RANGE_START = "RANGE_START";
private static final String RANGE_END = "RANGE_END";
private static final AtomicInteger validityDateCounter = new AtomicInteger();
private final List<ColumnDateRange> validityDates;

public static DateAggregationDates forSingleStep(QueryStep queryStep) {
Expand All @@ -36,9 +35,10 @@ public static DateAggregationDates forSingleStep(QueryStep queryStep) {
}

public static DateAggregationDates forSteps(List<QueryStep> querySteps) {
AtomicInteger validityDateCounter = new AtomicInteger(0);
List<ColumnDateRange> validityDates = querySteps.stream()
.filter(queryStep -> queryStep.getSelects().getValidityDate().isPresent())
.map(DateAggregationDates::numerateValidityDate)
.map(queryStep -> numerateValidityDate(queryStep, validityDateCounter))
.toList();
return new DateAggregationDates(validityDates);
}
Expand Down Expand Up @@ -70,7 +70,7 @@ public DateAggregationDates qualify(String qualifier) {
return new DateAggregationDates(qualified);
}

private static ColumnDateRange numerateValidityDate(QueryStep queryStep) {
private static ColumnDateRange numerateValidityDate(QueryStep queryStep, AtomicInteger validityDateCounter) {
ColumnDateRange validityDate = queryStep.getQualifiedSelects().getValidityDate().get();

if (validityDate.isSingleColumnRange()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@
@RequiredArgsConstructor
enum IntersectCteStep implements DateAggregationCteStep {

OVERLAP("_overlap", OverlapCte::new, null),
INTERMEDIATE_TABLE("_no_overlap", IntermediateTableCte::new, null),
MERGE("_merge", MergeCte::new, OVERLAP);
OVERLAP("overlap", OverlapCte::new, null),
INTERMEDIATE_TABLE("no_overlap", IntermediateTableCte::new, null),
MERGE("merge", MergeCte::new, OVERLAP);

private static final Set<IntersectCteStep> REQUIRED_STEPS = Set.of(values());
private final String suffix;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
@RequiredArgsConstructor
enum InvertCteStep implements DateAggregationCteStep {

ROW_NUMBER("_row_numbers", RowNumberCte::new, null),
INVERT("_inverted_dates", InvertCte::new, InvertCteStep.ROW_NUMBER);
ROW_NUMBER("row_numbers", RowNumberCte::new, null),
INVERT("inverted_dates", InvertCte::new, InvertCteStep.ROW_NUMBER);

private static final Set<InvertCteStep> REQUIRED_STEPS = Set.of(values());
private final String suffix;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@
@RequiredArgsConstructor
enum MergeCteStep implements DateAggregationCteStep {

OVERLAP("_overlap", OverlapCte::new, null),
INTERMEDIATE_TABLE("_no_overlap", IntermediateTableCte::new, null),
NODE_NO_OVERLAP("_node_no_overlap", NodeNoOverlapCte::new, INTERMEDIATE_TABLE),
MERGE("_merge", MergeCte::new, OVERLAP);
OVERLAP("overlap", OverlapCte::new, null),
INTERMEDIATE_TABLE("no_overlap", IntermediateTableCte::new, null),
NODE_NO_OVERLAP("node_no_overlap", NodeNoOverlapCte::new, INTERMEDIATE_TABLE),
MERGE("merge", MergeCte::new, OVERLAP);

private static final Set<MergeCteStep> REQUIRED_STEPS = Set.of(values());
private final String suffix;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,23 +14,20 @@
import com.bakdata.conquery.sql.conversion.model.Selects;
import com.bakdata.conquery.sql.conversion.model.select.SqlSelect;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.jooq.Field;
import org.jooq.impl.DSL;

public class PostgreSqlDateAggregator implements SqlDateAggregator {

@Getter
@RequiredArgsConstructor
private enum PostgresDateAggregationCteStep implements DateAggregationCteStep {

DATE_AGGREGATED("dates_aggregated"),
DATES_INVERTED("dates_inverted");

private final String suffix;

PostgresDateAggregationCteStep(String suffix) {
this.suffix = suffix;
}

}

private final SqlFunctionProvider functionProvider;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,23 @@

import java.util.List;

import com.bakdata.conquery.sql.conversion.model.QualifyingUtil;
import com.bakdata.conquery.sql.conversion.model.QueryStep;
import com.bakdata.conquery.sql.conversion.model.Selects;
import com.bakdata.conquery.sql.conversion.model.filter.WhereCondition;
import com.bakdata.conquery.sql.conversion.model.select.SqlSelect;
import org.jooq.Condition;
import org.jooq.Field;

class AggregationFilterCte extends ConnectorCte {

@Override
public QueryStep.QueryStepBuilder convertStep(CQTableContext tableContext) {

String predecessorTableName = tableContext.getConnectorTables().getPredecessor(cteStep());
Field<Object> primaryColumn = QualifyingUtil.qualify(tableContext.getPrimaryColumn(), predecessorTableName);
Selects aggregationFilterSelects = Selects.builder()
.primaryColumn(tableContext.getPrimaryColumn())
.primaryColumn(primaryColumn)
.sqlSelects(getForAggregationFilterSelects(tableContext))
.build()
.qualify(predecessorTableName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,33 @@

import java.util.List;

import com.bakdata.conquery.sql.conversion.model.QualifyingUtil;
import com.bakdata.conquery.sql.conversion.model.QueryStep;
import com.bakdata.conquery.sql.conversion.model.Selects;
import com.bakdata.conquery.sql.conversion.model.select.SqlSelect;
import org.jooq.Field;

class AggregationSelectCte extends ConnectorCte {

@Override
public QueryStep.QueryStepBuilder convertStep(CQTableContext tableContext) {

String predecessor = tableContext.getConnectorTables().getPredecessor(ConnectorCteStep.AGGREGATION_SELECT);
Field<Object> primaryColumn = QualifyingUtil.qualify(tableContext.getPrimaryColumn(), predecessor);

List<SqlSelect> requiredInAggregationFilterStep = tableContext.allSqlSelects().stream()
.flatMap(sqlSelects -> sqlSelects.getAggregationSelects().stream())
.distinct()
.toList();

Selects aggregationSelectSelects = Selects.builder()
.primaryColumn(tableContext.getPrimaryColumn())
.primaryColumn(primaryColumn)
.sqlSelects(requiredInAggregationFilterStep)
.build();

return QueryStep.builder()
.selects(aggregationSelectSelects)
.groupBy(List.of(tableContext.getPrimaryColumn()));
.groupBy(List.of(primaryColumn));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,8 @@ public enum ConnectorCteStep implements CteStep {
private final ConnectorCteStep predecessor;

public static Set<ConnectorCteStep> withOptionalSteps(ConnectorCteStep... connectorCteStep) {
HashSet<ConnectorCteStep> steps = new HashSet<>(MANDATORY_STEPS);
Set<ConnectorCteStep> steps = new HashSet<>(MANDATORY_STEPS);
steps.addAll(Set.of(connectorCteStep));
return steps;
}

@Override
public String cteName(String conceptLabel) {
return "%s-%s".formatted(conceptLabel, this.suffix);
}

}
Loading

0 comments on commit 053a7c6

Please sign in to comment.