brave-secretary-27487
03/07/2022, 9:43 AMDatasetPropertiesClass
Or can I use this object to also change the scheme of a dataset?better-orange-49102
03/07/2022, 11:04 AMbrave-secretary-27487
03/07/2022, 1:15 PMbetter-orange-49102
03/07/2022, 1:28 PMimport datahub.emitter.mce_builder as builder
from datahub.emitter.mcp import MetadataChangeProposalWrapper
from datahub.metadata.schema_classes import ChangeTypeClass, EditableSchemaMetadataClass, EditableSchemaFieldInfoClass
from datahub.emitter.rest_emitter import DatahubRestEmitter
# Create an emitter to DataHub over REST
emitter = DatahubRestEmitter(gms_server="<http://localhost:8080>", extra_headers={})
# Test the connection
emitter.test_connection()
# Construct a dataset properties object
dataset_schema = EditableSchemaMetadataClass(editableSchemaFieldInfo=[
EditableSchemaFieldInfoClass(fieldPath = 'colA', description='this is the desc for A'),
EditableSchemaFieldInfoClass(fieldPath = 'colB', description='this is the desc for B'),
],
)
# Construct a MetadataChangeProposalWrapper object.
metadata_event = MetadataChangeProposalWrapper(
entityType="dataset",
changeType=ChangeTypeClass.UPSERT,
entityUrn=builder.make_dataset_urn("bigquery", "my-project.my-dataset.user-table"),
aspectName="editableSchemaMetadata",
aspect=dataset_schema,
)
# Emit metadata! This is a blocking call
emitter.emit(metadata_event)
better-orange-49102
03/07/2022, 1:30 PMbrave-secretary-27487
03/07/2022, 1:49 PMbetter-orange-49102
03/07/2022, 1:55 PMhowever, this will overwrite any other ui edits to other fields that you didn't specify
for instance, if there are 3 fields in the dataset, and all 3 of them already have descriptions inputted via UI, now when you emit this, the 3th field's description will disappear.brave-secretary-27487
03/07/2022, 3:05 PM