diff --git a/frontend/src/metabase-lib/metadata/utils/models.ts b/frontend/src/metabase-lib/metadata/utils/models.ts index d4d3af3914b0140f89ddf3ee955463525b7314d1..0811389c900678ffbd2b060f33cd44e209a3ce4d 100644 --- a/frontend/src/metabase-lib/metadata/utils/models.ts +++ b/frontend/src/metabase-lib/metadata/utils/models.ts @@ -14,7 +14,7 @@ import type Database from "metabase-lib/metadata/Database"; import type Question from "metabase-lib/Question"; import type NativeQuery from "metabase-lib/queries/NativeQuery"; import { isSameField } from "metabase-lib/queries/utils/field-ref"; -import { isStructured } from "metabase-lib/queries/utils"; +import { isNative } from "metabase-lib/queries/utils/card"; type FieldMetadata = { id?: FieldId | FieldReference; @@ -114,7 +114,7 @@ export function checkCanBeModel(question: Question) { } export function isAdHocModelQuestionCard(card: Card, originalCard?: Card) { - if (!originalCard || !isStructured(card.dataset_query)) { + if (!originalCard || isNative(card)) { return false; } diff --git a/frontend/src/metabase-lib/queries/utils/card.js b/frontend/src/metabase-lib/queries/utils/card.js index 0a30c07aa93d5d4c745518dee77b23905328b51a..be6425a6e06d660e9922554d47e9fb06cbcd9844 100644 --- a/frontend/src/metabase-lib/queries/utils/card.js +++ b/frontend/src/metabase-lib/queries/utils/card.js @@ -7,8 +7,8 @@ import { normalizeParameterValue } from "metabase-lib/parameters/utils/parameter import { deriveFieldOperatorFromParameter } from "metabase-lib/parameters/utils/operators"; import * as Q_DEPRECATED from "metabase-lib/queries/utils"; // legacy -export function isStructured(card) { - return card.dataset_query?.type === "query"; +export function isNative(card) { + return card?.dataset_query?.type === "native"; } function cardVisualizationIsEquivalent(cardA, cardB) { diff --git a/frontend/src/metabase-lib/queries/utils/index.js b/frontend/src/metabase-lib/queries/utils/index.js index bf40c6c1595c027920686a6185963910fe3f838c..c7ee41ad73da364134dddc7b9a252e5f5a7b79a0 100644 --- a/frontend/src/metabase-lib/queries/utils/index.js +++ b/frontend/src/metabase-lib/queries/utils/index.js @@ -9,10 +9,6 @@ export * from "./field-ref"; // need to communicate or use that, use this constant export const HARD_ROW_LIMIT = 2000; -export function isStructured(dataset_query) { - return dataset_query && dataset_query.type === "query"; -} - export function cleanQuery(query) { if (!query) { return query; diff --git a/frontend/src/metabase/services.js b/frontend/src/metabase/services.js index 2b8e995f3a65b6ceafec10ecf6fa45064a79ed16..2efb113bb7bbee7143d2c3ca6f884e3fd4d4ac76 100644 --- a/frontend/src/metabase/services.js +++ b/frontend/src/metabase/services.js @@ -4,7 +4,7 @@ import { IS_EMBED_PREVIEW } from "metabase/lib/embed"; import Question from "metabase-lib/Question"; import { normalizeParameters } from "metabase-lib/parameters/utils/parameter-values"; -import { isStructured } from "metabase-lib/queries/utils/card"; +import { isNative } from "metabase-lib/queries/utils/card"; import { getPivotColumnSplit } from "metabase-lib/queries/utils/pivot"; import { injectTableMetadata } from "metabase-lib/metadata/utils/tables"; @@ -60,7 +60,7 @@ export function maybeUsePivotEndpoint(api, card, metadata) { } if ( question.display() !== "pivot" || - !isStructured(card) || + isNative(card) || // if we have metadata for the db, check if it supports pivots (question.database() && !question.database().supportsPivots()) ) { diff --git a/frontend/src/metabase/visualizations/lib/LineAreaBarRenderer.js b/frontend/src/metabase/visualizations/lib/LineAreaBarRenderer.js index 712016402dd20090028ea1187c58aab718de24b8..e20a0a089234112a403943c24f203b2dea812974 100644 --- a/frontend/src/metabase/visualizations/lib/LineAreaBarRenderer.js +++ b/frontend/src/metabase/visualizations/lib/LineAreaBarRenderer.js @@ -8,7 +8,7 @@ import { lighten } from "metabase/lib/colors"; import { keyForSingleSeries } from "metabase/visualizations/lib/settings/series"; import * as Lib from "metabase-lib"; -import { isStructured } from "metabase-lib/queries/utils/card"; +import { isNative } from "metabase-lib/queries/utils/card"; import Question from "metabase-lib/Question"; import { @@ -74,7 +74,7 @@ const enableBrush = (series, onChangeCardAndRun) => !!( onChangeCardAndRun && !isMultiCardSeries(series) && - isStructured(series[0].card) && + !isNative(series[0].card) && !isRemappedToString(series) && !hasClickBehavior(series) ); diff --git a/frontend/src/metabase/visualizations/lib/renderer_utils.js b/frontend/src/metabase/visualizations/lib/renderer_utils.js index 18d0788d634200e04ed8027884b5acb53a53c370..2ca7a51b25428177fa2d6e98daab91a91b9486f8 100644 --- a/frontend/src/metabase/visualizations/lib/renderer_utils.js +++ b/frontend/src/metabase/visualizations/lib/renderer_utils.js @@ -11,7 +11,7 @@ import { import { formatNullable } from "metabase/lib/formatting/nullable"; import { datasetContainsNoResults } from "metabase-lib/queries/utils/dataset"; -import { isStructured } from "metabase-lib/queries/utils/card"; +import { isNative } from "metabase-lib/queries/utils/card"; import { isNumeric } from "metabase-lib/types/utils/isa"; import { computeTimeseriesDataInverval, @@ -358,7 +358,7 @@ export function xValueForWaterfallTotal({ settings, series }) { const uniqueCards = series => _.uniq(series.map(({ card }) => card.id)).length; const getMetricColumnsCount = series => { - const metricColumnPredicate = isStructured(series[0]?.card) + const metricColumnPredicate = !isNative(series[0]?.card) ? column => column.source === "aggregation" : column => isNumeric(column); diff --git a/frontend/src/metabase/visualizations/visualizations/Table.tsx b/frontend/src/metabase/visualizations/visualizations/Table.tsx index a9f386c6302612f5b53808a70047163f006d3489..06a2dcfbc90273086660330acd6244ac5e23ab7a 100644 --- a/frontend/src/metabase/visualizations/visualizations/Table.tsx +++ b/frontend/src/metabase/visualizations/visualizations/Table.tsx @@ -43,7 +43,7 @@ import { isAvatarURL, } from "metabase-lib/types/utils/isa"; import { findColumnIndexForColumnSetting } from "metabase-lib/queries/utils/dataset"; -import * as Q_DEPRECATED from "metabase-lib/queries/utils"; +import { isNative } from "metabase-lib/queries/utils/card"; import type { ColumnSettingDefinition, VisualizationProps } from "../types"; import { TableSimple } from "../components/TableSimple"; @@ -93,7 +93,7 @@ class Table extends Component<TableProps, TableState> { if ( !data || data.cols.length !== 3 || - !Q_DEPRECATED.isStructured(card.dataset_query) || + isNative(card) || data.cols.filter(isMetric).length !== 1 || data.cols.filter(isDimension).length !== 2 ) {