diff --git a/datahub-web-react/src/app/entity/dataset/profile/__tests__/translateFieldPath.test.tsx b/datahub-web-react/src/app/entity/dataset/profile/__tests__/schema/translateFieldPath.test.tsx similarity index 93% rename from datahub-web-react/src/app/entity/dataset/profile/__tests__/translateFieldPath.test.tsx rename to datahub-web-react/src/app/entity/dataset/profile/__tests__/schema/translateFieldPath.test.tsx index 74c97e2838..bb2c0121ef 100644 --- a/datahub-web-react/src/app/entity/dataset/profile/__tests__/translateFieldPath.test.tsx +++ b/datahub-web-react/src/app/entity/dataset/profile/__tests__/schema/translateFieldPath.test.tsx @@ -1,4 +1,4 @@ -import translateFieldPath from '../schema/utils/translateFieldPath'; +import translateFieldPath from '../../schema/utils/translateFieldPath'; describe('translateFieldPath', () => { it('translates qualified unions', () => { diff --git a/datahub-web-react/src/app/entity/dataset/profile/__tests__/translateFieldPathSegment.test.tsx b/datahub-web-react/src/app/entity/dataset/profile/__tests__/schema/translateFieldPathSegment.test.tsx similarity index 93% rename from datahub-web-react/src/app/entity/dataset/profile/__tests__/translateFieldPathSegment.test.tsx rename to datahub-web-react/src/app/entity/dataset/profile/__tests__/schema/translateFieldPathSegment.test.tsx index 5f30944581..2ddfe7d19e 100644 --- a/datahub-web-react/src/app/entity/dataset/profile/__tests__/translateFieldPathSegment.test.tsx +++ b/datahub-web-react/src/app/entity/dataset/profile/__tests__/schema/translateFieldPathSegment.test.tsx @@ -1,4 +1,4 @@ -import translateFieldPathSegment from '../schema/utils/translateFieldPathSegment'; +import translateFieldPathSegment from '../../schema/utils/translateFieldPathSegment'; describe('translateFieldPathSegment', () => { it('translates unions', () => { diff --git a/datahub-web-react/src/app/entity/dataset/profile/__tests__/schema/utils.test.tsx b/datahub-web-react/src/app/entity/dataset/profile/__tests__/schema/utils.test.tsx new file mode 100644 index 0000000000..8d41161380 --- /dev/null +++ b/datahub-web-react/src/app/entity/dataset/profile/__tests__/schema/utils.test.tsx @@ -0,0 +1,49 @@ +import { SchemaFieldDataType } from '../../../../../../types.generated'; +import { filterKeyFieldPath } from '../../schema/utils/utils'; + +describe('utils', () => { + describe('filterKeyFieldPath', () => { + it('allows keys when looking for keys', () => { + expect( + filterKeyFieldPath(true, { + fieldPath: '[version=2.0].[key=True].[type=long].field', + nullable: false, + type: SchemaFieldDataType.Number, + recursive: false, + }), + ).toEqual(true); + }); + it('blocks non-keys when looking for keys', () => { + expect( + filterKeyFieldPath(true, { + fieldPath: '[version=2.0].[type=long].field', + nullable: false, + type: SchemaFieldDataType.Number, + recursive: false, + }), + ).toEqual(false); + }); + + it('allows non-keys when looking for non-keys', () => { + expect( + filterKeyFieldPath(false, { + fieldPath: '[version=2.0].[type=long].field', + nullable: false, + type: SchemaFieldDataType.Number, + recursive: false, + }), + ).toEqual(true); + }); + + it('blocks keys when looking for non-keys', () => { + expect( + filterKeyFieldPath(false, { + fieldPath: '[version=2.0].[key=True].[type=long].field', + nullable: false, + type: SchemaFieldDataType.Number, + recursive: false, + }), + ).toEqual(false); + }); + }); +}); diff --git a/datahub-web-react/src/app/entity/dataset/profile/schema/Schema.tsx b/datahub-web-react/src/app/entity/dataset/profile/schema/Schema.tsx index 9ed49b52a0..b50a8597a1 100644 --- a/datahub-web-react/src/app/entity/dataset/profile/schema/Schema.tsx +++ b/datahub-web-react/src/app/entity/dataset/profile/schema/Schema.tsx @@ -64,7 +64,7 @@ export default function SchemaView({ }); const hasKeySchema = useMemo( - () => (schema?.fields?.findIndex((field) => field.fieldPath.startsWith(KEY_SCHEMA_PREFIX)) || -1) !== -1, + () => (schema?.fields?.findIndex((field) => field.fieldPath.indexOf(KEY_SCHEMA_PREFIX) > -1) || -1) !== -1, [schema], ); diff --git a/datahub-web-react/src/app/entity/dataset/profile/schema/utils/utils.ts b/datahub-web-react/src/app/entity/dataset/profile/schema/utils/utils.ts index f217e2049d..a43937820e 100644 --- a/datahub-web-react/src/app/entity/dataset/profile/schema/utils/utils.ts +++ b/datahub-web-react/src/app/entity/dataset/profile/schema/utils/utils.ts @@ -46,7 +46,7 @@ export function convertEditableSchemaMetadataForUpdate( } export function filterKeyFieldPath(showKeySchema: boolean, field: SchemaField) { - return field.fieldPath.startsWith(KEY_SCHEMA_PREFIX) ? showKeySchema : !showKeySchema; + return field.fieldPath.indexOf(KEY_SCHEMA_PREFIX) > -1 ? showKeySchema : !showKeySchema; } export function downgradeV2FieldPath(fieldPath?: string | null) { diff --git a/metadata-ingestion/examples/mce_files/bootstrap_mce.json b/metadata-ingestion/examples/mce_files/bootstrap_mce.json index 672c19a064..86d52128b4 100644 --- a/metadata-ingestion/examples/mce_files/bootstrap_mce.json +++ b/metadata-ingestion/examples/mce_files/bootstrap_mce.json @@ -206,7 +206,7 @@ }, "fields": [ { - "fieldPath": "field_foo_2", + "fieldPath": "[version=2.0].[type=boolean].field_foo_2", "jsonPath": null, "nullable": false, "description": { @@ -224,7 +224,7 @@ "recursive": false }, { - "fieldPath": "field_bar", + "fieldPath": "[version=2.0].[type=boolean].field_bar", "jsonPath": null, "nullable": false, "description": { @@ -237,6 +237,21 @@ }, "nativeDataType": "boolean", "recursive": false + }, + { + "fieldPath": "[version=2.0].[key=True].[type=int].id", + "jsonPath": null, + "nullable": false, + "description": { + "string": "Id specifying which partition the message should go to" + }, + "type": { + "type": { + "com.linkedin.pegasus2avro.schema.BooleanType": {} + } + }, + "nativeDataType": "boolean", + "recursive": false } ], "primaryKeys": null,