Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Op deze pagina wordt beschreven hoe u een gegevensprofiel maakt in Databricks met behulp van de Databricks SDK en de parameters beschrijft die worden gebruikt in API-aanroepen. U kunt ook een gegevensprofiel maken en beheren met behulp van de REST API.
Zie de naslaginformatie over de SDK voor gegevensprofilering en de REST API-verwijzing.
U kunt een profiel maken op elke beheerde of externe Delta-tabel die is geregistreerd in Unity Catalog. Er kan slechts één profiel worden gemaakt in een Unity Catalog-metastore voor elke tabel.
Opmerking
Zie quality_monitorsafgeschafte quality_monitors API.
Requirements
Als u de meest recente versie van de API wilt gebruiken, gebruikt u de volgende opdracht aan het begin van uw notebook om de Python-client te installeren:
%pip install "databricks-sdk>=0.68.0"
Zie Verificatie om te verifiëren voor het gebruik van de Databricks SDK in uw omgeving.
Profieltypen
Wanneer u een profiel maakt, selecteert u een van de volgende profieltypen: TimeSeries, InferenceLogof Snapshot. In deze sectie wordt elke optie kort beschreven. Zie de naslaginformatie over de SDK voor gegevensprofilering of de REST API-verwijzing voor meer informatie.
Opmerking
- Wanneer u voor het eerst een tijdreeks- of deductieprofiel maakt, analyseert Databricks alleen gegevens van de 30 dagen voorafgaand aan het maken ervan. Nadat het profiel is gemaakt, worden alle nieuwe gegevens verwerkt.
- Profielen die zijn gedefinieerd voor gerealiseerde weergaven bieden geen ondersteuning voor incrementele verwerking.
Aanbeveling
Voor TimeSeries en Inference profielen is het een best practice om change data feed (CDF) in te schakelen in uw tabel. Wanneer CDF is ingeschakeld, worden alleen nieuw toegevoegde gegevens verwerkt, in plaats van dat de hele tabel elke vernieuwing opnieuw wordt verwerkt. Dit maakt de uitvoering efficiënter en verlaagt de kosten wanneer u schaalt in veel tabellen.
TimeSeries profiel
Een TimeSeries profiel vergelijkt gegevensdistributies in tijdvensters. Voor een TimeSeries profiel moet u het volgende opgeven:
- Een tijdstempelkolom (
timestamp_column). Het gegevenstype van de tijdstempelkolom moet ofwelTIMESTAMPeen type zijn dat kan worden geconverteerd naar tijdstempels met behulp van deto_timestampfunctie PySpark. - De verzameling
granularitieswaarover de metrische gegevens berekend moeten worden. De volgende granulariteiten zijn beschikbaar:- AGGREGATIE_GROOTHEID_5_MINUTEN
- AGGREGATION_GRANULARITY_30_MINUTES
- AGGREGATION_GRANULARITY_1_HOUR
- AGGREGATIE_GEURAFINITEIT_1_DAG
- AGGREGATIE_GRANULARITEIT_1_WEEK
- AGGREGATIE_GRENSSPECIFICATIE_2_WEKEN
- AGGREGATIE_GRANULARITEIT_3_WEKEN
- AGGREGATIE_GRANULARITEIT_4_WEKEN
- AGGREGATIE_GRANULARITEIT_1_MAAND
- AGGREGATION_GRANULARITY_1_YEAR
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.dataquality import Monitor, DataProfilingConfig, TimeSeriesConfig, AggregationGranularity, DataProfilingStatus, RefreshState, Refresh
w = WorkspaceClient()
schema = w.schemas.get(full_name=f"{catalog}.{schema}")
table = w.tables.get(full_name=f"{catalog}.{schema}.{table_name}")
config = DataProfilingConfig(
output_schema_id=schema.schema_id,
assets_dir=f"/Workspace/Users/{username}/databricks_quality_monitoring/{TABLE_NAME}",
time_series=TimeSeriesConfig(
timestamp_column="ts",
granularities=[AggregationGranularity.AGGREGATION_GRANULARITY_1_DAY]),
slicing_exprs=["type='Red'"]
)
info = w.data_quality.create_monitor(
monitor=Monitor(
object_type="table", # object_type is always "table" for data profiling
object_id=table.table_id,
data_profiling_config=config,
),
)
InferenceLog profiel
Een InferenceLog profiel is vergelijkbaar met een TimeSeries profiel, maar bevat ook metrische gegevens over modelkwaliteit.
InferenceLog profielen gebruiken de volgende parameters:
| Kenmerk | Beschrijving |
|---|---|
problem_type |
MonitorInferenceLogProblemType.PROBLEM_TYPE_CLASSIFICATION of MonitorInferenceLogProblemType.PROBLEM_TYPE_REGRESSION |
prediction_column |
Kolom met de voorspelde waarden van het model. |
timestamp_column |
Kolom met de tijdstempel van de deductieaanvraag. |
model_id_column |
Kolom met de id van het model dat wordt gebruikt voor voorspelling. |
granularities |
Bepaalt hoe de gegevens in vensters in de tijd moeten worden gepartitioneren. Zie TimeSeries het profiel voor beschikbare waarden. |
label_column |
(Optioneel) Kolom met de grondwaar voor modelvoorspellingen. |
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.dataquality import Monitor, DataProfilingConfig, InferenceLogConfig, InferenceProblemType, AggregationGranularity, DataProfilingStatus, RefreshState, Refresh
w = WorkspaceClient()
schema = w.schemas.get(full_name=f"{catalog}.{schema}")
table = w.tables.get(full_name=f"{catalog}.{schema}.{table_name}")
config = DataProfilingConfig(
output_schema_id=schema.schema_id,
assets_dir=f"/Workspace/Users/{username}/databricks_quality_monitoring/{TABLE_NAME}",
inference_log=InferenceLogConfig(
problem_type=InferenceProblemType.INFERENCE_PROBLEM_TYPE_CLASSIFICATION,
prediction_column="preds",
model_id_column="model_ver",
label_column="label", # optional
timestamp_column="ts",
granularities=[AggregationGranularity.AGGREGATION_GRANULARITY_1_DAY])
)
info = w.data_quality.create_monitor(
monitor=Monitor(
object_type="table",
object_id=table.table_id,
data_profiling_config=config,
),
)
Voor InferenceLog profielen worden segmenten automatisch gemaakt op basis van de afzonderlijke waarden van model_id_col.
Snapshot profiel
In tegenstelling tot TimeSeries heeft een Snapshot profiel hoe de volledige inhoud van de tabel in de loop van de tijd verandert. Metrische gegevens worden berekend over alle gegevens in de tabel en geven de tabelstatus weer wanneer het profiel wordt vernieuwd.
Opmerking
De maximale tabelgrootte voor een momentopnameprofiel is 4 TB. Gebruik in plaats daarvan tijdreeksprofielen voor grotere tabellen.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.dataquality import Monitor, DataProfilingConfig, SnapshotConfig, DataProfilingStatus, RefreshState, Refresh
w = WorkspaceClient()
schema = w.schemas.get(full_name=f"{catalog}.{schema}")
table = w.tables.get(full_name=f"{catalog}.{schema}.{table_name}")
table_id = table.table_id
table_object_type = "table"
config = DataProfilingConfig(
output_schema_id=schema.schema_id,
assets_dir=f"/Workspace/Users/{username}/databricks_quality_monitoring/{TABLE_NAME}",
snapshot=SnapshotConfig(),
slicing_exprs=["type='Red'"]
)
Resultaten vernieuwen en weergeven
Als u de vernieuwingsgeschiedenis wilt bekijken, moet u de Databricks-werkruimte gebruiken waaruit gegevensprofilering is ingeschakeld.
Als u tabellen met metrische gegevens wilt vernieuwen, gebruikt u create_refresh. Voorbeeld:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
run_info = w.data_quality.create_refresh(
object_type=table_object_type, object_id=table_id, refresh=Refresh(
object_type=table_object_type,
object_id=table_id,
)
)
Wanneer u create_refresh oproept vanuit een notebook, worden de metrische tabellen gemaakt of bijgewerkt. Deze berekening wordt uitgevoerd op serverloze berekeningen, niet op het cluster waaraan het notebook is gekoppeld. U kunt opdrachten blijven uitvoeren in het notebook terwijl de statistieken worden bijgewerkt.
Zie voor informatie over de statistieken die zijn opgeslagen in metrische tabellen Metrische tabellen bewaken. Metrische tabellen zijn Unity Catalog-tabellen. U kunt query's uitvoeren in notitieblokken of in de SQL-queryverkenner en deze weergeven in Catalog Explorer.
Als u de geschiedenis wilt weergeven van alle vernieuwingen die zijn gekoppeld aan een profiel, gebruikt u list_refreshes.
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
it = w.data_quality.list_refresh(object_type=table_object_type, object_id=table_id)
Als u de status van een specifieke taak wilt ophalen die in de wachtrij staat, wordt uitgevoerd of is voltooid, gebruikt u get_refresh.
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
it = w.data_quality.list_refresh(object_type=table_object_type, object_id=table_id)
run_info = next(it, None)
while run_info.state in (RefreshState.MONITOR_REFRESH_STATE_PENDING, RefreshState.MONITOR_REFRESH_STATE_RUNNING):
run_info = w.data_quality.get_refresh(object_type=table_object_type, object_id=table_id, refresh_id=run_info.refresh_id)
time.sleep(30)
Profielinstellingen weergeven
U kunt profielinstellingen controleren met behulp van de API get_monitor.
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
table = w.tables.get(full_name=f"{catalog}.{schema}.{table_name}")
w.data_quality.get_monitor(object_type="table", object_id=table.table_id)
Schema
Als u een profiel wilt instellen dat op een geplande basis moet worden uitgevoerd, gebruikt u de schedule parameter van create_monitor:
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import MonitorTimeSeries, MonitorCronSchedule
w = WorkspaceClient()
schema = w.schemas.get(full_name=f"{catalog}.{schema}")
table = w.tables.get(full_name=f"{catalog}.{schema}.{table_name}")
config = DataProfilingConfig(
output_schema_id=schema.schema_id,
snapshot=SnapshotConfig(),
schedule=CronSchedule(
quartz_cron_expression="0 0 12 * * ?", # schedules a refresh every day at 12 noon
timezone_id="PST",
)
)
info = w.data_quality.create_monitor(
monitor=Monitor(
object_type="table",
object_id=table.table_id,
data_profiling_config=config,
),
)
Zie cron-expressies voor meer informatie.
Meldingen
Als u meldingen voor een profiel wilt instellen, gebruikt u de notifications parameter van create_monitor:
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.dataquality import Monitor, DataProfilingConfig, SnapshotConfig, NotificationSettings, NotificationDestination
w = WorkspaceClient()
schema = w.schemas.get(full_name=f"{catalog}.{schema}")
table = w.tables.get(full_name=f"{catalog}.{schema}.{table_name}")
config = DataProfilingConfig(
output_schema_id=schema.schema_id,
snapshot=SnapshotConfig(),
notification_settings=NotificationSettings(
# Notify the given email when a monitoring refresh fails or times out.
on_failure=NotificationDestination(
email_addresses=["your_email@domain.com"]
)
)
)
info = w.data_quality.create_monitor(
monitor=Monitor(
object_type="table",
object_id=table.table_id,
data_profiling_config=config,
),
)
Er worden maximaal 5 e-mailadressen ondersteund per gebeurtenistype (bijvoorbeeld 'on_failure').
Toegang tot metrische tabellen beheren
De metrische tabellen en het dashboard die door een profiel zijn gemaakt, zijn eigendom van de gebruiker die het profiel heeft gemaakt. U kunt Unity Catalog-bevoegdheden gebruiken om de toegang tot metrische tabellen te beheren. Als u dashboards in een werkruimte wilt delen, gebruikt u de knop Delen in de rechterbovenhoek van het dashboard.
Een profiel verwijderen
Een profiel verwijderen:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
table = w.tables.get(full_name=f"{catalog}.{schema}.{table_name}")
w.data_quality.delete_monitor(object_type="table", object_id=table.table_id)
Met deze opdracht worden de profieltabellen en het dashboard dat door het profiel is gemaakt, niet verwijderd. U moet deze assets in een afzonderlijke stap verwijderen of u kunt ze opslaan op een andere locatie.
Voorbeeldnotitieblokken
In de volgende voorbeeldnotitieblokken ziet u hoe u een profiel maakt, het profiel vernieuwt en de metrische tabellen bekijkt die worden gemaakt.
Notebook-voorbeeld: Tijdserie-profiel
In dit notebook ziet u hoe u een TimeSeries typeprofiel maakt.
Voorbeeldnotitieboek voor TimeSeries-profiel
Notebook-voorbeeld: Inferentieprofiel (regressie)
In dit notebook ziet u hoe u een InferenceLog typeprofiel maakt voor een regressieprobleem.
Voorbeelddocument voor regressie van inferentieprofiel
Noteboekvoorbeeld: Inferenceprofiel (classificatie)
In dit notebook ziet u hoe u een InferenceLog typeprofiel maakt voor een classificatieprobleem.
Voorbeeldnotebook voor classificatie van afleidingsprofiel
Voorbeeld van notitieblok: Momentopnameprofiel
In dit notebook ziet u hoe u een Snapshot typeprofiel maakt.