-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement MatchingStats for SQL mode #3278
Conversation
backend/src/main/java/com/bakdata/conquery/models/jobs/SqlUpdateMatchingStatsJob.java
Outdated
Show resolved
Hide resolved
b07ec64
to
b23898d
Compare
@awildturtok Jetzt mit Parallelisierung: Pro ConceptTreeElement wird ein Runnable erstellt, was dann die 3 Queries für die MatchingStats ausführt und Werte setzt. |
backend/src/main/java/com/bakdata/conquery/models/jobs/SqlUpdateMatchingStatsJob.java
Outdated
Show resolved
Hide resolved
Das generierte SQL im postgres modus ist lieder falsch:
oberes ist das von uns erzeugte. Zusätzlich ist mir aufgefallen, dass wir die Verundung mit den Elternknoten hier noch nicht umgesetzt haben. |
Performance Metriken zu bekommen ist relativ schwierig, die Query Ausführungszeiten variieren stark nach load und sind somit nicht besonders aussagekräftig. (habe hier was 8s vs 800ms braucht je nach Load) |
Hey, das liegt daran dass weder an der |
@jnsrnhld die Primary Column ist gesetzt in der config.json |
Ok, das ist strange. Ich schau mir nochmal an woran es liegen könnte. |
b1d759c
to
88f3b99
Compare
# Conflicts: # backend/src/main/java/com/bakdata/conquery/apiv1/query/concept/filter/FilterValue.java # backend/src/main/java/com/bakdata/conquery/models/config/SqlConnectorConfig.java # backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/filters/Filter.java # backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/filters/specific/BigMultiSelectFilter.java # backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/filters/specific/CountFilter.java # backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/filters/specific/CountQuartersFilter.java # backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/filters/specific/DateDistanceFilter.java # backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/filters/specific/FlagFilter.java # backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/filters/specific/MultiSelectFilter.java # backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/filters/specific/NumberFilter.java # backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/filters/specific/SingleSelectFilter.java # backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/filters/specific/SumFilter.java # backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/select/Select.java # backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/select/concept/specific/EventDateUnionSelect.java # backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/select/concept/specific/EventDurationSumSelect.java # backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/select/concept/specific/ExistsSelect.java # backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/select/connector/FirstValueSelect.java # backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/select/connector/LastValueSelect.java # backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/select/connector/RandomValueSelect.java # backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/select/connector/specific/CountQuartersSelect.java # backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/select/connector/specific/CountSelect.java # backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/select/connector/specific/DateDistanceSelect.java # backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/select/connector/specific/FlagSelect.java # backend/src/main/java/com/bakdata/conquery/models/datasets/concepts/select/connector/specific/SumSelect.java # backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/CQConceptConverter.java # backend/src/main/java/com/bakdata/conquery/sql/conversion/cqelement/concept/TablePath.java # backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/CommonAggregationSelect.java # backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/CountQuartersSqlAggregator.java # backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/CountSqlAggregator.java # backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/FlagSqlAggregator.java # backend/src/main/java/com/bakdata/conquery/sql/conversion/model/aggregator/SumSqlAggregator.java # backend/src/main/java/com/bakdata/conquery/sql/conversion/model/filter/MultiSelectFilterConverter.java
@awildturtok Spricht aus deiner Sicht was dagegen den PR hier zu mergen, auch wenn das Performance-Thema noch nicht angegangen wurde? Für Demos usw. ist es ganz nice, wenn die MatchingStats funktionieren, auch wenn noch nicht performant. |
Ah sorry ich wusste nicht, dass es noch nicht gemerged ist. Können wir da am Dienstag nochmal drüber sprechen. Ich hatte eine Idee wie man das evtl umsetzen könnte mit case-when |
Bevor du hier zu tief in eine Implementierung gehst, wollen wir uns nochmal dran setzen Ansätze zu besprechen? |
@awildturtok Ich muss aktuell das überhaupt erstmal wieder zum Laufen bekommen. Der große PR mit der |
@thoniTUB kannst du dich mit Jonas per Mail kurzschließen, was du für das matching stats persistenz geplant hast. Tut mir Leid, die Änderung war riesig und ist nervig aber auf lange sicht wollen wir so viel magic wie möglich entfernen |
MatchingStats
, copied the existing implementation toWorkerMatchingStats
and added newSqlMatchingStats
SqlUpdateMatchingStatsJob
which walks the concept tree and collects the respective statsTable
For a single TreeConcept, we do:
count(*)
on each connector,union
these tables and finallysum()
the count per connector to obtain the concepts event countunion
these tables and do acountDistinct(pid)
to obtain the concepts entity countmin(start)
andmax(end)
to obtain the concepts date span