Skip to content

Commit

Permalink
[ML] Data Frame transform: Ensure preview table displays scripted fie…
Browse files Browse the repository at this point in the history
…lds and timestamps are formatted correctly. (#44701) (#44771)

* ensure scripted fields are included in preview

* ensure expanded tab preview table has correct date formatting

* use ColumnType

* update to correct column type
  • Loading branch information
alvarezmelissa87 committed Sep 4, 2019
1 parent ddeee24 commit c9b8d15
Show file tree
Hide file tree
Showing 2 changed files with 76 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -229,43 +229,41 @@ export const PivotPreview: SFC<PivotPreviewProps> = React.memo(({ aggs, groupBy,
const columnKeys = getFlattenedFields(dataFramePreviewData[0]);
columnKeys.sort(sortColumns(groupByArr));

const columns = columnKeys
.filter(k => typeof dataFramePreviewMappings.properties[k] !== 'undefined')
.map(k => {
const column: ColumnType = {
field: k,
name: k,
sortable: true,
truncateText: true,
};
if (typeof dataFramePreviewMappings.properties[k] !== 'undefined') {
const esFieldType = dataFramePreviewMappings.properties[k].type;
switch (esFieldType) {
case ES_FIELD_TYPES.BOOLEAN:
column.dataType = 'boolean';
break;
case ES_FIELD_TYPES.DATE:
column.align = 'right';
column.render = (d: any) => formatHumanReadableDateTimeSeconds(moment(d).unix() * 1000);
break;
case ES_FIELD_TYPES.BYTE:
case ES_FIELD_TYPES.DOUBLE:
case ES_FIELD_TYPES.FLOAT:
case ES_FIELD_TYPES.HALF_FLOAT:
case ES_FIELD_TYPES.INTEGER:
case ES_FIELD_TYPES.LONG:
case ES_FIELD_TYPES.SCALED_FLOAT:
case ES_FIELD_TYPES.SHORT:
column.dataType = 'number';
break;
case ES_FIELD_TYPES.KEYWORD:
case ES_FIELD_TYPES.TEXT:
column.dataType = 'string';
break;
}
const columns = columnKeys.map(k => {
const column: ColumnType = {
field: k,
name: k,
sortable: true,
truncateText: true,
};
if (typeof dataFramePreviewMappings.properties[k] !== 'undefined') {
const esFieldType = dataFramePreviewMappings.properties[k].type;
switch (esFieldType) {
case ES_FIELD_TYPES.BOOLEAN:
column.dataType = 'boolean';
break;
case ES_FIELD_TYPES.DATE:
column.align = 'right';
column.render = (d: any) => formatHumanReadableDateTimeSeconds(moment(d).unix() * 1000);
break;
case ES_FIELD_TYPES.BYTE:
case ES_FIELD_TYPES.DOUBLE:
case ES_FIELD_TYPES.FLOAT:
case ES_FIELD_TYPES.HALF_FLOAT:
case ES_FIELD_TYPES.INTEGER:
case ES_FIELD_TYPES.LONG:
case ES_FIELD_TYPES.SCALED_FLOAT:
case ES_FIELD_TYPES.SHORT:
column.dataType = 'number';
break;
case ES_FIELD_TYPES.KEYWORD:
case ES_FIELD_TYPES.TEXT:
column.dataType = 'string';
break;
}
return column;
});
}
return column;
});

if (columns.length === 0) {
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,12 @@

import React, { FC, useState } from 'react';
import { i18n } from '@kbn/i18n';
import { SortDirection, SORT_DIRECTION } from '../../../../../../common/types/eui/in_memory_table';
import moment from 'moment-timezone';
import {
SortDirection,
SORT_DIRECTION,
FieldDataColumnType,
} from '../../../../../../common/types/eui/in_memory_table';

import { ml } from '../../../../../services/ml_api_service';

Expand All @@ -16,15 +21,10 @@ import {
PreviewRequestBody,
DataFrameTransformPivotConfig,
} from '../../../../common';
import { ES_FIELD_TYPES } from '../../../../../../common/constants/field_types';
import { formatHumanReadableDateTimeSeconds } from '../../../../../util/date_utils';
import { TransformTable } from './transform_table';

interface Column {
field: string;
name: string;
sortable: boolean;
truncateText: boolean;
}

interface Props {
transformConfig: DataFrameTransformPivotConfig;
}
Expand Down Expand Up @@ -72,7 +72,7 @@ function getDataFromTransform(

export const ExpandedRowPreviewPane: FC<Props> = ({ transformConfig }) => {
const [dataFramePreviewData, setDataFramePreviewData] = useState([]);
const [columns, setColumns] = useState<Column[] | []>([]);
const [columns, setColumns] = useState<FieldDataColumnType[] | []>([]);
const [pageIndex, setPageIndex] = useState(0);
const [pageSize, setPageSize] = useState(10);
const [sortField, setSortField] = useState<string>('');
Expand All @@ -99,13 +99,44 @@ export const ExpandedRowPreviewPane: FC<Props> = ({ transformConfig }) => {
if (resp.preview.length > 0) {
const columnKeys = getFlattenedFields(resp.preview[0]);
columnKeys.sort(sortColumns(groupByArr));
const tableColumns = columnKeys.map(k => {
return {

const tableColumns: FieldDataColumnType[] = columnKeys.map(k => {
const column: FieldDataColumnType = {
field: k,
name: k,
sortable: true,
truncateText: true,
};

if (typeof resp.mappings.properties[k] !== 'undefined') {
const esFieldType = resp.mappings.properties[k].type;
switch (esFieldType) {
case ES_FIELD_TYPES.BOOLEAN:
column.dataType = 'boolean';
break;
case ES_FIELD_TYPES.DATE:
column.align = 'right';
column.render = (d: any) =>
formatHumanReadableDateTimeSeconds(moment(d).unix() * 1000);
break;
case ES_FIELD_TYPES.BYTE:
case ES_FIELD_TYPES.DOUBLE:
case ES_FIELD_TYPES.FLOAT:
case ES_FIELD_TYPES.HALF_FLOAT:
case ES_FIELD_TYPES.INTEGER:
case ES_FIELD_TYPES.LONG:
case ES_FIELD_TYPES.SCALED_FLOAT:
case ES_FIELD_TYPES.SHORT:
column.dataType = 'number';
break;
case ES_FIELD_TYPES.KEYWORD:
case ES_FIELD_TYPES.TEXT:
column.dataType = 'string';
break;
}
}

return column;
});

setDataFramePreviewData(resp.preview);
Expand Down

0 comments on commit c9b8d15

Please sign in to comment.