Skip to content
Snippets Groups Projects
Commit 97f5ed89 authored by Tom Robinson's avatar Tom Robinson
Browse files

Distribution drill

parent 8cb88ef4
No related branches found
No related tags found
No related merge requests found
......@@ -21,6 +21,7 @@ import {
pivot,
filter,
breakout,
distribution,
toUnderlyingRecords,
drillUnderlyingRecords,
} from "metabase/qb/lib/actions";
......@@ -298,6 +299,9 @@ export default class Question {
toUnderlyingData(): Question {
return this.setDisplay("table");
}
distribution(column) {
return this.setCard(distribution(this.card(), column));
}
composeThisQuery(): ?Question {
const SAVED_QUESTIONS_FAUX_DATABASE = -1337;
......
/* @flow */
import { t } from "c-3po";
import type {
ClickAction,
ClickActionProps,
} from "metabase/meta/types/Visualization";
import { isPK } from "metabase/lib/schema_metadata";
export default ({ question, clicked }: ClickActionProps): ClickAction[] => {
if (
!clicked ||
!clicked.column ||
clicked.value !== undefined ||
clicked.column.source !== "fields"
) {
return [];
}
const { column } = clicked;
if (!isPK(column)) {
return [
{
name: "distribution",
title: t`Distribution`,
section: "averages",
question: () => question.distribution(column),
},
];
} else {
return [];
}
};
......@@ -9,6 +9,7 @@ import CountByTimeAction from "../actions/CountByTimeAction";
import SummarizeColumnDrill from "../drill/SummarizeColumnDrill";
import SummarizeColumnByTimeDrill from "../drill/SummarizeColumnByTimeDrill";
import CountByColumnDrill from "../drill/CountByColumnDrill";
import DistributionDrill from "../drill/DistributionDrill";
// import PlotSegmentField from "../actions/PlotSegmentField";
import type { QueryMode } from "metabase/meta/types/Visualization";
......@@ -28,6 +29,7 @@ const SegmentMode: QueryMode = {
SummarizeColumnDrill,
SummarizeColumnByTimeDrill,
CountByColumnDrill,
DistributionDrill,
],
};
......
......@@ -16,6 +16,7 @@ import {
isState,
isCountry,
isCoordinate,
isNumber,
} from "metabase/lib/schema_metadata";
import Utils from "metabase/lib/utils";
......@@ -232,6 +233,23 @@ export const breakout = (card, breakout, tableMetadata) => {
return newCard;
};
export const distribution = (card, column) => {
const breakout = isDate(column)
? ["datetime-field", getFieldRefFromColumn(column), "month"]
: isNumber(column)
? ["binning-strategy", getFieldRefFromColumn(column), "default"]
: getFieldRefFromColumn(column);
const newCard = startNewCard("query");
newCard.dataset_query = Utils.copy(card.dataset_query);
newCard.dataset_query.query.aggregation = [["count"]];
newCard.dataset_query.query.breakout = [breakout];
delete newCard.dataset_query.query.order_by;
delete newCard.dataset_query.query.fields;
newCard.display = "bar";
return newCard;
};
// min number of points when switching units
const MIN_INTERVALS = 4;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment