fix(ui/v2): Remove code around usage and storage features (#13049)

This commit is contained in:
Andrew Sikowitz 2025-04-14 12:05:42 -07:00 committed by GitHub
parent 3fd0e37111
commit c971cdaebc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
20 changed files with 21 additions and 490 deletions

View File

@ -85,19 +85,6 @@ export const getChartPopularityTier = (viewCountPercentileLast30Days, uniqueUser
return PopularityTier.TIER_4;
};
export const getQueryPopularityTier = (runsPercentileLast30days: number) => {
if (runsPercentileLast30days > 80) {
return PopularityTier.TIER_1;
}
if (runsPercentileLast30days > 30) {
return PopularityTier.TIER_2;
}
if (runsPercentileLast30days > 0) {
return PopularityTier.TIER_3;
}
return PopularityTier.TIER_4;
};
/**
* Returns true if the user "exists", e.g. there exists some information about
* the user in DataHub already.

View File

@ -141,9 +141,7 @@ export default function QueriesListSection({
createdDateColumn,
powersColumn,
usedByColumn,
popularityColumn,
columnsColumn,
lastRunColumn,
editColumn,
} = useQueryTableColumns({
queries,
@ -166,11 +164,11 @@ export default function QueriesListSection({
editColumn,
];
const popularQueriesColumns = [queryTextColumn(), usedByColumn, lastRunColumn, columnsColumn, popularityColumn];
const popularQueriesColumns = [queryTextColumn(), usedByColumn, columnsColumn];
const downstreamQueriesColumns = [queryTextColumn(550), powersColumn, lastRunColumn];
const downstreamQueriesColumns = [queryTextColumn(550), powersColumn];
const recentQueriesColumns = [queryTextColumn(550), lastRunColumn];
const recentQueriesColumns = [queryTextColumn(550)];
const pagionationOptions: false | TablePaginationConfig = showPagination
? ({

View File

@ -54,17 +54,8 @@ export default function QueriesTab() {
/**
* Fetch the List of Popular Queries
*/
const {
popularQueries,
loading: popularQueriesLoading,
pagination: popularQueriesPagination,
total,
sorting: popularSorting,
selectedUsersFilter,
setSelectedUsersFilter,
selectedColumnsFilter,
setSelectedColumnsFilter,
} = usePopularQueries({ entityUrn, siblingUrn, filterText });
const { selectedUsersFilter, setSelectedUsersFilter, selectedColumnsFilter, setSelectedColumnsFilter } =
usePopularQueries({ entityUrn, siblingUrn, filterText });
/**
* Fetch the List of Downstream Queries
@ -90,18 +81,9 @@ export default function QueriesTab() {
};
// can add something about initalLoading if there was never data, or have state that is like finishedInitialLoad = false, with useEffect
const isLoading =
!entityUrn ||
highlightedQueriesLoading ||
popularQueriesLoading ||
downstreamQueriesLoading ||
recentQueriesLoading;
const isLoading = !entityUrn || highlightedQueriesLoading || downstreamQueriesLoading || recentQueriesLoading;
const showEmptyView =
!isLoading &&
!recentQueries.length &&
!highlightedQueries.length &&
!downstreamQueries.length &&
!popularQueries.length;
!isLoading && !recentQueries.length && !highlightedQueries.length && !downstreamQueries.length;
// shared props with all of the QueriesListSection components below
const props = {
@ -159,19 +141,6 @@ export default function QueriesTab() {
onButtonClick={() => setShowQueryBuilder(true)}
/>
)}
{(popularQueries.length > 0 || popularQueriesLoading) && (
<QueriesListSection
title="Popular Queries"
section={QueriesTabSection.Popular}
tooltip="The most popular queries that were run against this dataset"
queries={popularQueries}
loading={popularQueriesLoading}
totalQueries={total}
pagination={popularQueriesPagination}
sorting={popularSorting}
{...props}
/>
)}
{downstreamQueries.length > 0 && (
<QueriesListSection
title="Downstream Queries"

View File

@ -7,7 +7,6 @@ import SearchFilter from '../../../../../../searchV2/filters/SearchFilter';
import SelectedSearchFilters from '../../../../../../searchV2/filters/SelectedSearchFilters';
import { UnionType } from '../../../../../../searchV2/utils/constants';
import { ANTD_GRAY_V2, REDESIGN_COLORS } from '../../../../constants';
import useUsersFilter from './useUsersFilter';
import useColumnsFilter from './useColumnsFilter';
const ColumnsFilterWrapper = styled.div`
@ -33,18 +32,11 @@ interface Props {
export default function QueryFilters({
selectedColumnsFilter,
setSelectedColumnsFilter,
setSelectedUsersFilter,
setSelectedUsersFilter, // eslint-disable-line @typescript-eslint/no-unused-vars
selectedUsersFilter,
setPage,
}: Props) {
const onChangeFilters = (newFilters: FacetFilterInput[]) => {
const usedByFilter = newFilters.find((f) => f.field === 'topUsersLast30DaysFeature');
if (usedByFilter) {
setSelectedUsersFilter(usedByFilter);
} else {
setSelectedUsersFilter({ field: 'topUsersLast30DaysFeature', values: [] });
}
const columnsFilter = newFilters.find((f) => f.field === 'entities');
if (columnsFilter) {
setSelectedColumnsFilter(columnsFilter);
@ -55,15 +47,13 @@ export default function QueryFilters({
setPage(1);
};
const usersFilter = useUsersFilter({ selectedColumnsFilter, selectedUsersFilter });
const columnsFilter = useColumnsFilter({ selectedColumnsFilter, selectedUsersFilter, setSelectedColumnsFilter });
const filterPredicates: FilterPredicate[] = convertToAvailableFilterPredictes(
[selectedUsersFilter, selectedColumnsFilter],
[usersFilter, columnsFilter],
[columnsFilter],
);
let selectedFilters: FacetFilterInput[] = selectedColumnsFilter.values?.length ? [selectedColumnsFilter] : [];
selectedFilters = selectedUsersFilter.values?.length ? [...selectedFilters, selectedUsersFilter] : selectedFilters;
const selectedFilters: FacetFilterInput[] = selectedColumnsFilter.values?.length ? [selectedColumnsFilter] : [];
const labelStyle = {
backgroundColor: ANTD_GRAY_V2[15],
@ -77,21 +67,13 @@ export default function QueryFilters({
filter={columnsFilter}
filterPredicates={filterPredicates}
onChangeFilters={onChangeFilters}
activeFilters={[selectedColumnsFilter, selectedUsersFilter]}
activeFilters={[selectedColumnsFilter]}
labelStyle={selectedColumnsFilter.values?.length ? undefined : labelStyle}
shouldUseAggregationsFromFilter
/>
<SearchFilter
filter={usersFilter}
filterPredicates={filterPredicates}
onChangeFilters={onChangeFilters}
activeFilters={[selectedUsersFilter, selectedColumnsFilter]}
labelStyle={selectedUsersFilter.values?.length ? undefined : labelStyle}
shouldUseAggregationsFromFilter
/>
</FiltersWrapper>
<SelectedSearchFilters
availableFilters={[columnsFilter, usersFilter]}
availableFilters={[columnsFilter]}
selectedFilters={selectedFilters}
unionType={UnionType.AND}
onChangeFilters={onChangeFilters}

View File

@ -1,56 +0,0 @@
import { useEntityRegistryV2 } from '../../../../../../useEntityRegistry';
import { useEntityData } from '../../../../../../entity/shared/EntityContext';
import { EntityType, FacetFilterInput, QuerySource } from '../../../../../../../types.generated';
import { useAggregateAcrossEntitiesQuery } from '../../../../../../../graphql/search.generated';
import { getAndFilters } from '../utils/filterQueries';
interface Props {
selectedColumnsFilter: FacetFilterInput;
selectedUsersFilter: FacetFilterInput;
}
export default function useUsersFilter({ selectedColumnsFilter, selectedUsersFilter }: Props) {
const entityRegistry = useEntityRegistryV2();
const { entityData } = useEntityData();
const entityUrn = entityData?.urn;
const siblingUrn = entityData?.siblingsSearch?.searchResults?.[0]?.entity?.urn;
const values = siblingUrn ? [entityUrn as string, siblingUrn] : [entityUrn as string];
const entityFilter = { field: 'entities', values };
const sourceFilter = { field: 'source', values: [QuerySource.System] };
const andFilters = getAndFilters(selectedColumnsFilter, { ...selectedUsersFilter, values: [] }, [
entityFilter,
sourceFilter,
]);
const { data } = useAggregateAcrossEntitiesQuery({
variables: {
input: {
facets: ['topUsersLast30DaysFeature'],
query: '*',
types: [EntityType.Query],
orFilters: [{ and: andFilters }],
searchFlags: {
maxAggValues: 100,
},
},
},
skip: !entityUrn,
});
const aggregations = data?.aggregateAcrossEntities?.facets?.find(
(facet) => facet.field === 'topUsersLast30DaysFeature',
)?.aggregations;
const userAggregations =
aggregations
?.map((agg) => ({
value: agg.entity?.urn || agg.value,
displayName: agg.entity?.urn ? entityRegistry.getDisplayName(agg.entity.type, agg.entity) : agg.value,
count: agg.count,
}))
?.sort((aggA, aggB) => aggB.count - aggA.count) || [];
const usersFilter = { aggregations: userAggregations, displayName: 'Users', field: 'topUsersLast30DaysFeature' };
return usersFilter;
}

View File

@ -1,7 +1,6 @@
import DeleteOutlinedIcon from '@mui/icons-material/DeleteOutlined';
import EditOutlinedIcon from '@mui/icons-material/EditOutlined';
import { Modal, Typography, message } from 'antd';
import { Popover } from '@components';
import React, { useState } from 'react';
import styled from 'styled-components';
import MarkdownViewer from '@src/app/entity/shared/components/legacy/MarkdownViewer';
@ -10,11 +9,6 @@ import { CorpUser, EntityType } from '../../../../../../types.generated';
import { useEntityRegistryV2 } from '../../../../../useEntityRegistry';
import ActorAvatar from '../../../ActorAvatar';
import { ActionButton } from '../../../containers/profile/sidebar/SectionActionButton';
import {
getBarsStatusFromPopularityTier,
getQueryPopularityTier,
} from '../../../containers/profile/sidebar/shared/utils';
import { PopularityBars } from '../Schema/components/SchemaFieldDrawer/PopularityBars';
import QueryBuilderModal from './QueryBuilderModal';
import { Query } from './types';
@ -182,37 +176,10 @@ export const EditDeleteColumn = ({ query, hoveredQueryUrn, onEdited, onDeleted }
);
};
/*
* Popularity Column
*/
const PopularityWrapper = styled.div`
display: flex;
justify-content: center;
`;
interface PopularityColumnProps {
interface ColumnProps {
query: Query;
}
export const PopularityColumn = ({ query }: PopularityColumnProps) => {
const { runsPercentileLast30days } = query;
if (!runsPercentileLast30days) return null;
const tier = getQueryPopularityTier(runsPercentileLast30days);
const status = getBarsStatusFromPopularityTier(tier);
return (
<Popover
content={
<>This query has been run more than {runsPercentileLast30days}% of other queries in the last 30 days.</>
}
>
<PopularityWrapper>
<PopularityBars status={status} />
</PopularityWrapper>
</Popover>
);
};
const ColumnsWrapper = styled.div`
text-align: right;
`;
@ -220,6 +187,6 @@ const ColumnsWrapper = styled.div`
/*
* Columns Column
*/
export const ColumnsColumn = ({ query }: PopularityColumnProps) => {
export const ColumnsColumn = ({ query }: ColumnProps) => {
return <ColumnsWrapper>{query.columns?.length ?? 0}</ColumnsWrapper>;
};

View File

@ -17,7 +17,6 @@ export type Query = {
createdBy?: CorpUser | null;
poweredEntity?: Entity;
usedBy?: CorpUser[];
runsPercentileLast30days?: number | null;
columns?: SchemaFieldEntity[];
};

View File

@ -1,6 +1,6 @@
import { useState } from 'react';
import { useListQueriesQuery } from '../../../../../../graphql/query.generated';
import { FacetFilterInput, QueryEntity, QuerySource, SortOrder } from '../../../../../../types.generated';
import { FacetFilterInput, QueryEntity, QuerySource } from '../../../../../../types.generated';
import { filterQueries, getAndFilters, getQueryEntitiesFilter } from './utils/filterQueries';
import usePagination from '../../../../../sharedV2/pagination/usePagination';
import { DEFAULT_PAGE_SIZE } from './utils/constants';
@ -13,16 +13,9 @@ interface Props {
siblingUrn?: string;
filterText: string;
defaultSelectedColumns?: string[];
defaultSelectedUsers?: string[];
}
export const usePopularQueries = ({
entityUrn,
siblingUrn,
filterText,
defaultSelectedColumns,
defaultSelectedUsers,
}: Props) => {
export const usePopularQueries = ({ entityUrn, siblingUrn, filterText, defaultSelectedColumns }: Props) => {
const columnFromQueryParam = useQueryParamValue('column') as string | null;
const siblingColumnFromQueryParam = useQueryParamValue('siblingColumn') as string | null;
let columnsFromQueryParams = columnFromQueryParam ? [decodeURI(columnFromQueryParam)] : [];
@ -34,7 +27,7 @@ export const usePopularQueries = ({
values: [...(columnsFromQueryParams.length ? columnsFromQueryParams : defaultSelectedColumns || [])],
};
const [selectedColumnsFilter, setSelectedColumnsFilter] = useState<FacetFilterInput>(defaultColumnsFilter);
const defaultUsersFilter = { field: 'topUsersLast30DaysFeature', values: [...(defaultSelectedUsers || [])] };
const defaultUsersFilter = { field: '', values: [] }; // Not supported
const [selectedUsersFilter, setSelectedUsersFilter] = useState<FacetFilterInput>(defaultUsersFilter);
const pagination = usePagination(DEFAULT_PAGE_SIZE);
@ -50,11 +43,7 @@ export const usePopularQueries = ({
start,
count,
source: QuerySource.System,
sortInput:
sortField && sortOrder
? { sortCriterion: { field: sortField, sortOrder } }
: { sortCriterion: { field: 'runsPercentileLast30days', sortOrder: SortOrder.Descending } },
sortInput: sortField && sortOrder ? { sortCriterion: { field: sortField, sortOrder } } : null,
orFilters: [{ and: andFilters }],
},
},

View File

@ -1,16 +1,14 @@
import moment from 'moment';
import React from 'react';
import styled from 'styled-components';
import { Tooltip } from '@components';
import { Query } from './types';
import QueryComponent from './Query';
import { EditDeleteColumn, QueryCreatedBy, QueryDescription, PopularityColumn, ColumnsColumn } from './queryColumns';
import { EditDeleteColumn, QueryCreatedBy, QueryDescription, ColumnsColumn } from './queryColumns';
import { CorpUser, Entity } from '../../../../../../types.generated';
import { EntityLink } from '../../../../../homeV2/reference/sections/EntityLink';
import { useEntityRegistryV2 } from '../../../../../useEntityRegistry';
import { Sorting } from '../../../../../sharedV2/sorting/useSorting';
import TopUsersFacepile from '../../../containers/profile/sidebar/shared/TopUsersFacepile';
import { toRelativeTimeString } from '../../../../../shared/time/timeUtils';
const UsersWrapper = styled.div`
display: flex;
@ -145,7 +143,7 @@ export default function useQueryTableColumns({
key: 'usedBy',
className: 'usedBy',
sorter: shouldRelyOnBackendSorting
? false // we don't support sorting by topUsersLast30DaysFeature on backend since it is a text field
? false
: (queryA, queryB) => {
if (!queryA.usedBy || !queryA.usedBy[0] || !queryB.usedBy || !queryB.usedBy[0]) return 0;
const usedByA = entityRegistry.getDisplayName(queryA.usedBy[0].type, queryA.usedBy[0]);
@ -161,17 +159,6 @@ export default function useQueryTableColumns({
},
};
const popularityColumn = {
title: 'Popularity',
key: 'popularity',
field: 'runsPercentileLast30days',
width: 110,
sorter: shouldRelyOnBackendSorting
? true
: (queryA, queryB) => queryA.runsPercentileLast30days - queryB.runsPercentileLast30days,
render: (query: Query) => <PopularityColumn query={query} />,
};
const columnsColumn = {
title: 'Columns',
key: 'columns',
@ -179,25 +166,6 @@ export default function useQueryTableColumns({
render: (query: Query) => <ColumnsColumn query={query} />,
};
const lastRunColumn = {
title: 'Last Run',
dataIndex: 'lastRun',
key: 'lastRun',
field: 'lastExecutedAtFeature',
className: 'lastRun',
sorter: shouldRelyOnBackendSorting ? true : (queryA, queryB) => queryA.lastRun - queryB.lastRun,
render: (lastRun: string) => {
if (!lastRun) return null;
return (
<div>
<Tooltip title={moment(lastRun).format('MM/DD/YYYY')}>
{toRelativeTimeString(new Date(lastRun).getTime())}
</Tooltip>
</div>
);
},
};
const editColumn = {
title: '',
key: 'edit',
@ -220,9 +188,7 @@ export default function useQueryTableColumns({
createdDateColumn,
powersColumn,
usedByColumn,
popularityColumn,
columnsColumn,
lastRunColumn,
editColumn,
};
}

View File

@ -8,7 +8,7 @@ import NoStatsAvailble from '../../../../../../../../images/no-stats-available.s
import { useBaseEntity, useRouteToTab } from '../../../../../../../entity/shared/EntityContext';
import { ANTD_GRAY } from '../../../../../constants';
import Query from '../../../Queries/Query';
import { PopularityColumn, QueryCreatedBy } from '../../../Queries/queryColumns';
import { QueryCreatedBy } from '../../../Queries/queryColumns';
import { usePopularQueries } from '../../../Queries/usePopularQueries';
import { GetDatasetQuery } from '../../../../../../../../graphql/dataset.generated';
import Loading from '../../../../../../../shared/Loading';
@ -57,15 +57,6 @@ const SubtitleSection = styled.div`
flex-direction: row;
`;
const PopularityLabel = styled.span`
line-height: 26px;
margin-right: 8px;
`;
const PopularityColumnContainer = styled.div`
margin-bottom: 5px;
`;
const QUERIES_TO_SHOW = 6;
const SeeAllButton = styled(Button)`
@ -173,12 +164,6 @@ export default function SchemaFieldQueriesSidebarTab({ properties: { fieldPath }
)}
on {moment(query.lastRun).format('MM/DD/YYYY')}
</SubtitleSection>
<SubtitleSection>
<PopularityLabel>Popularity</PopularityLabel>
<PopularityColumnContainer>
<PopularityColumn query={query} />
</PopularityColumnContainer>
</SubtitleSection>
</QuerySubtitleContainer>
</StyledQueryCard>
</StyledQueryContainer>

View File

@ -11,11 +11,7 @@ import { HorizontalListSkeletons } from '../../../../HorizontalListSkeletons';
import { Section } from '../Section';
import { INSIGHT_CARD_MIN_WIDTH } from './cards/SearchListInsightCard';
import { InsightStatusProvider } from './InsightStatusProvider';
import { MOST_FREQUENTLY_UPDATED_ID, MostFrequentlyUpdated } from './cards/MostFrequentlyUpdated';
import { MOST_QUERIED_ID, MostQueriedCard } from './cards/MostQueriedCard';
import { MOST_ROWS_ID, MostRowsCard } from './cards/MostRowsCard';
import { MOST_USERS_ID, MostUsersCard } from './cards/MostUsersCard';
import { MOST_VIEWED_DASHBOARDS_ID, MostViewedDashboardsCard } from './cards/MostViewedDashboards';
import { POPULAR_GLOSSARY_TERMS_ID, PopularGlossaryTerms } from './cards/PopularGlossaryTerms';
import { RECENTLY_CREATED_DATASETS_ID, RecentlyCreatedDatasetsCard } from './cards/RecentlyCreatedDatasetsCard';
import { RECENTLY_UPDATED_ID, RecentlyUpdatedDatasetsCard } from './cards/RecentlyUpdatedDatasetsCard';
@ -30,27 +26,6 @@ type InsightSection = {
};
const ALL_INSIGHTS: InsightSection[] = [
{
id: MOST_USERS_ID,
component: MostUsersCard,
personas: [
PersonaType.TECHNICAL_USER,
PersonaType.DATA_ENGINEER,
PersonaType.DATA_STEWARD,
PersonaType.DATA_LEADER,
],
},
{
id: MOST_VIEWED_DASHBOARDS_ID,
component: MostViewedDashboardsCard,
personas: [
PersonaType.BUSINESS_USER,
PersonaType.DATA_STEWARD,
PersonaType.DATA_LEADER,
PersonaType.TECHNICAL_USER,
PersonaType.DATA_ENGINEER,
],
},
{
id: POPULAR_GLOSSARY_TERMS_ID,
component: PopularGlossaryTerms,
@ -62,27 +37,6 @@ const ALL_INSIGHTS: InsightSection[] = [
PersonaType.BUSINESS_USER,
],
},
{
id: MOST_QUERIED_ID,
component: MostQueriedCard,
personas: [
PersonaType.BUSINESS_USER,
PersonaType.TECHNICAL_USER,
PersonaType.DATA_ENGINEER,
PersonaType.DATA_STEWARD,
PersonaType.DATA_LEADER,
],
},
{
id: MOST_FREQUENTLY_UPDATED_ID,
component: MostFrequentlyUpdated,
personas: [
PersonaType.TECHNICAL_USER,
PersonaType.DATA_ENGINEER,
PersonaType.DATA_STEWARD,
PersonaType.DATA_LEADER,
],
},
{
id: RECENTLY_UPDATED_ID,
component: RecentlyUpdatedDatasetsCard,

View File

@ -1,19 +0,0 @@
import React from 'react';
import { buildMostUpdatedFilters, buildMostUpdatedSort } from './useGetMostUpdated';
import { SearchListInsightCard } from './SearchListInsightCard';
import { EntityType } from '../../../../../../../../types.generated';
export const MOST_FREQUENTLY_UPDATED_ID = 'MostFrequentlyUpdated';
export const MostFrequentlyUpdated = () => {
return (
<SearchListInsightCard
id={MOST_FREQUENTLY_UPDATED_ID}
tip="Tables with the most changes in the past month"
title="Most Updated"
types={[EntityType.Dataset]}
filters={buildMostUpdatedFilters()}
sort={buildMostUpdatedSort()}
/>
);
};

View File

@ -1,19 +0,0 @@
import React from 'react';
import { buildMostQueriedFilters, buildMostQueriedSort } from './useGetMostQueried';
import { SearchListInsightCard } from './SearchListInsightCard';
import { EntityType } from '../../../../../../../../types.generated';
export const MOST_QUERIED_ID = 'MostQueried';
export const MostQueriedCard = () => {
return (
<SearchListInsightCard
id={MOST_QUERIED_ID}
tip="Tables with the most queries in the past month"
title="Most Queried"
types={[EntityType.Dataset]}
filters={buildMostQueriedFilters()}
sort={buildMostQueriedSort()}
/>
);
};

View File

@ -1,19 +0,0 @@
import React from 'react';
import { EntityType } from '../../../../../../../../types.generated';
import { SearchListInsightCard } from './SearchListInsightCard';
import { buildMostUsersFilters, buildMostUsersSort } from './useGetMostUsers';
export const MOST_USERS_ID = 'MostUsers';
export const MostUsersCard = () => {
return (
<SearchListInsightCard
id={MOST_USERS_ID}
tip="Tables with the most unique users in the past month"
types={[EntityType.Dataset]}
title="Most Popular Tables"
filters={buildMostUsersFilters()}
sort={buildMostUsersSort()}
/>
);
};

View File

@ -1,19 +0,0 @@
import React from 'react';
import { EntityType } from '../../../../../../../../types.generated';
import { SearchListInsightCard } from './SearchListInsightCard';
import { buildMostViewedDashboardsFilter, buildMostViewedDashboardsSort } from './useGetMostViewedDashboards';
export const MOST_VIEWED_DASHBOARDS_ID = 'MostViewedDashboards';
export const MostViewedDashboardsCard = () => {
return (
<SearchListInsightCard
id={MOST_VIEWED_DASHBOARDS_ID}
tip="Dashboards with the most views in the past month"
types={[EntityType.Dashboard]}
title="Most Viewed Dashboards"
filters={buildMostViewedDashboardsFilter()}
sort={buildMostViewedDashboardsSort()}
/>
);
};

View File

@ -1,26 +0,0 @@
import { FilterOperator, SortCriterion, SortOrder } from '../../../../../../../../types.generated';
import { FilterSet } from '../../../../../../../entityV2/shared/components/styled/search/types';
import { UnionType } from '../../../../../../../searchV2/utils/constants';
const MIN_QUERIES = '10';
export const buildMostQueriedFilters = (): FilterSet => {
return {
unionType: UnionType.AND,
filters: [
{
field: 'usageCountLast30DaysFeature',
values: [MIN_QUERIES],
condition: FilterOperator.GreaterThanOrEqualTo,
negated: false,
},
],
};
};
export const buildMostQueriedSort = (): SortCriterion => {
return {
field: 'usageCountLast30DaysFeature',
sortOrder: SortOrder.Descending,
};
};

View File

@ -1,26 +0,0 @@
import { FilterOperator, SortCriterion, SortOrder } from '../../../../../../../../types.generated';
import { FilterSet } from '../../../../../../../entityV2/shared/components/styled/search/types';
import { UnionType } from '../../../../../../../searchV2/utils/constants';
const MIN_UPDATES = '10';
export const buildMostUpdatedFilters = (): FilterSet => {
return {
unionType: UnionType.AND,
filters: [
{
field: 'writeCountLast30DaysFeature',
values: [MIN_UPDATES],
condition: FilterOperator.GreaterThanOrEqualTo,
negated: false,
},
],
};
};
export const buildMostUpdatedSort = (): SortCriterion => {
return {
field: 'writeCountLast30DaysFeature',
sortOrder: SortOrder.Descending,
};
};

View File

@ -1,26 +0,0 @@
import { FilterOperator, SortCriterion, SortOrder } from '../../../../../../../../types.generated';
import { FilterSet } from '../../../../../../../entityV2/shared/components/styled/search/types';
import { UnionType } from '../../../../../../../searchV2/utils/constants';
const MIN_USERS = '2';
export const buildMostUsersFilters = (): FilterSet => {
return {
unionType: UnionType.AND,
filters: [
{
field: 'uniqueUserCountLast30DaysFeature',
values: [MIN_USERS],
condition: FilterOperator.GreaterThanOrEqualTo,
negated: false,
},
],
};
};
export const buildMostUsersSort = (): SortCriterion => {
return {
field: 'uniqueUserCountLast30DaysFeature',
sortOrder: SortOrder.Descending,
};
};

View File

@ -1,26 +0,0 @@
import { FilterOperator, SortCriterion, SortOrder } from '../../../../../../../../types.generated';
import { FilterSet } from '../../../../../../../entityV2/shared/components/styled/search/types';
import { UnionType } from '../../../../../../../searchV2/utils/constants';
const MIN_QUERIES = '1';
export const buildMostViewedDashboardsFilter = (): FilterSet => {
return {
unionType: UnionType.AND,
filters: [
{
field: 'viewCountLast30DaysFeature',
values: [MIN_QUERIES],
condition: FilterOperator.GreaterThanOrEqualTo,
negated: false,
},
],
};
};
export const buildMostViewedDashboardsSort = (): SortCriterion => {
return {
field: 'viewCountLast30DaysFeature',
sortOrder: SortOrder.Descending,
};
};

View File

@ -24,32 +24,3 @@ export const SORT_OPTIONS = {
sortOrder: SortOrder.Descending,
},
};
// Extensions
export const ROW_COUNT_FIELD = 'rowCountFeature';
export const SIZE_IN_BYTES_FIELD = 'sizeInBytesFeature';
export const QUERY_COUNT = 'queryCountLast30DaysFeature';
export const UPDATE_COUNT = 'writeCountLast30DaysFeature';
export const DATASET_FEATURES_SORT_OPTIONS = {
[`${ROW_COUNT_FIELD}_${SortOrder.Descending}`]: {
label: 'Table Row Count',
field: ROW_COUNT_FIELD,
sortOrder: SortOrder.Descending,
},
[`${SIZE_IN_BYTES_FIELD}_${SortOrder.Descending}`]: {
label: 'Table Size (Bytes)',
field: SIZE_IN_BYTES_FIELD,
sortOrder: SortOrder.Descending,
},
[`${QUERY_COUNT}_${SortOrder.Descending}`]: {
label: 'Table Query Count (Last 30 Days)',
field: QUERY_COUNT,
sortOrder: SortOrder.Descending,
},
[`${UPDATE_COUNT}_${SortOrder.Descending}`]: {
label: 'Table Update Count (Last 30 Days)',
field: UPDATE_COUNT,
sortOrder: SortOrder.Descending,
},
};