tacrpy.datahub package

Submodules

tacrpy.datahub.data_lineage module

Soubor funkcí, které slouží k hromadnému vytváření podkladů k tvorbě a úpravě data lineage v DataHubu přes API.

tacrpy.datahub.data_lineage.create_dataset_lineage(entity_name: str, platform: str, lineage_dict: dict[str, any], field_level: bool = False) dict[str, any][source]

Vytvoří data lineage (vazby) pro daný dataset.

Umožňuje vytvářet data lineage na úrovni datasetů i na úrovni jednotlivých fieldů.

Parameters:
  • entity_name – název datasetu, pro který se data lineage vytváří

  • platform – název platformy, která je zdrojem datasetu (např. etalon, googlesheets, ISTA, Postgres, OpenAPI…)

  • lineage_dict – dict datasetu, který obsahuje jednotlivé vazby (na úrovni datasetů nebo na úrovni fieldů)

  • field_level – informace, jestli obsahuje dataset lineage na úrovni fieldů

Returns:

dict vazeb (data lineage) pro daný dataset

tacrpy.datahub.datasets module

Soubor funkcí, které slouží k vytváření podkladů pro DataHub a k nahrávání dat přes API včetně checků vyplněných údajů.

class tacrpy.datahub.datasets.OwnerType(*values)[source]

Bases: Enum

BUSINESS_OWNER = 'Business Owner'
DATA_STEWARD = 'Data Steward'
TECHNICAL_OWNER = 'Technical Owner'
tacrpy.datahub.datasets.create_etalon(etalon_df: DataFrame, etalon_name: str, platform: str, nested_fields: bool, foreign_keys: bool, subfolder: str = None) dict[str, any][source]

Vytvoří dict datasetu k importu do DataHub pro jednu datovou entitu.

Z načteného souboru získá, případně vytvoří potřebné informace k vytvoření informací o datasetu. Název entity získává z názvu souboru => v názvu souboru musí být název entity.

Povinné sloupce v načteném souboru:

  • field_name

  • field_description

  • field_data_type

Volitelné sloupce:

  • upstream_lineage

  • foreign_key

Parameters:
  • etalon_df – zdrojový dataframe s informacemi o etalonu

  • etalon_name – název etalonu

  • platform – název platformy, která je zdrojem datasetu (např. etalon, googlesheets, ISTA, Postgres, OpenAPI…)

  • nested_fields – informace, jestli dataset obsahuje vnořené fieldy (nested fields)

  • foreign_keys – informace, jestli dataset obsahuje cizí klíče (foreign keys)

  • subfolder – podsložka, v rámci které má být dataset uložený

Returns:

etalon ve formě dict, které je možné převést do JSON a importovat do DataHub

tacrpy.datahub.datasets.create_etalon_bulk(etalon_df: DataFrame, platform: str, nested_fields: bool, foreign_keys: bool, subfolder: str = None) list[dict[str, any]][source]

Vytvoří dict datasetu k importu do DataHub pro více datových entit.

Z načteného souboru získá, případně vytvoří potřebné informace k vytvoření informací o datasetu. Název entity získává ze sloupce entity_name, ten slouží i k filtrování jednotlivých entit a jejich následné zpracování.

Povinné sloupce v načteném souboru:

  • entity_name

  • field_name

  • field_description

  • field_data_type

Volitelné sloupce:

  • upstream_lineage

  • foreign_key

Parameters:
  • etalon_df – zdrojový dataframe s informacemi o etalonu

  • platform – název platformy, která je zdrojem datasetu (např. etalon, googlesheets, ISTA, Postgres, OpenAPI…)

  • nested_fields – informace, jestli dataset obsahuje vnořené fieldy (nested fields)

  • foreign_keys – informace, jestli dataset obsahuje cizí klíče (foreign keys)

  • subfolder – podsložka, v rámci které má být dataset uložený

Returns:

etalon ve formě dict, které je možné převést do JSON a importovat do DataHub

tacrpy.datahub.datasets.dataset_description(urn: str, description: str) list[dict[str, any]][source]

Vytvoří JSON pro přiřazení popisu datové sady k existující datové sadě.

Parameters:
  • urn – URN existujícího datasetu, ve kterém se mají vytvořit/upravit údaje

  • description – popis datasetu

Returns:

list dictů s potřebnými informace k nahrání do DataHub

Vytvoří JSON pro přiřazení odkazů k existujícímu datasetu.

V současné chvíli funguje pouze pro jeden odkaz.

Parameters:
  • urn – URN existujícího datasetu, ve kterém se mají vytvořit/upravit údaje

  • link_name – zobrazený název odkazu

  • link_url – odkaz ve formátu url

  • corpuser – uživatel, který odkaz vytvořil (ve formátu jmeno.prijmeni, bez diakritiky)

Returns:

list dictů s potřebnými informace k nahrání do DataHub

tacrpy.datahub.datasets.dataset_ownership(urn: str, corpuser: str, owner_type: OwnerType) list[dict[str, any]][source]

Vytvoří JSON pro přiřazení vlastníka k existujícímu datasetu.

V současné chvíli funguje pouze pro jednoho vlastníka.

Parameters:
  • urn – URN existujícího datasetu, ve kterém se mají vytvořit/upravit údaje

  • corpuser – uživatel, který se má přiřadit jako vlastník datasetu (ve formátu jmeno.prijmeni, bez diakritiky)

  • owner_type – typ vlastníka (DATA_STEWARD, TECHNICAL_OWNER, BUSINESS_OWNER)

Returns:

list dictů s potřebnými informace k nahrání do DataHub

tacrpy.datahub.datasets.dataset_tag(urn: str, tags: list[str]) list[dict[str, any]][source]

Vytvoří JSON pro přiřazení tagu/tagů k existujícímu datasetu.

Parameters:
  • urn – URN existujícího datasetu, ve kterém se mají vytvořit/upravit údaje

  • tags – list tagů, které se mají přiřadit k datasetu

Returns:

list dictů s potřebnými informace k nahrání do DataHub

tacrpy.datahub.glossary module

Soubor dílčích a agregujících funkcí sloužících k vytváření nových pojmů v DataHubu skrze API post.

tacrpy.datahub.glossary.import_data(df: DataFrame, urn_actor: str, test: bool = True)[source]

Finální agregující funkce (2/2), která otestuje úplnost a správnost vstupních dat a skrze kterou se přes API importují jednotlivé prvky glossary terms do datahubu.

Parameters:
  • df – předpřipravený a otestovaný df, v kterém jsou obsažena veškerá data tvořící jednotlivé glossary terms potřebná pro import do datahubu

  • urn_actor – urn osoby, která glossary terms nahrává (urn:li:corpuser:jmeno.prijmeni nebo urn:li:corpuser:prijmeni - dle struktury gmailu)

  • test – určení, jestli se jedná o test (True) nebo produkci (False)

Returns:

nahrání glossary terms na zvolený server datahubu (s informací o průběhu uploadu na úrovni jednotlivých terms a nově vytvořeném urn pro daný term)

tacrpy.datahub.glossary.preprocess_data(df_entities: DataFrame, df_regs: DataFrame, df_owners: DataFrame, parentnode: str = None) DataFrame[source]

Finální agregující funkce (1/2), která vstupní data (z dataframů) transformuje a doplní do potřebné struktury tak, aby mohla posloužit jako vstup do importovací funkce.

Parameters:
  • df_entities – pd.DataFrame obsahující vstupní data s informacemi o nahrávaných položkách (musí obsahovat následující povinné sloupce:’Název pojmu’, ‘Definice pojmu’, ‘Kód výskyt pojmu’, ‘Garanti pojmů’, ‘Zkratka pojmu’, ‘Název pojmu (EN)’, ‘Zkratka (EN)’, ‘Kategorie’, ‘Datová entita’)

  • df_regs – pd.DataFrame obsahující přehled přespisů (dostupný na intranetu)

  • df_owners – pd.DataFrame obsahující seznam existujících uživatelských účtú v datahubu

  • parentnode – v případě hromadného zařazení všech nahrávaných položek do jedné nadřazené složky

Returns:

pd.DataFrame obsahující všechny položky nutné k importu do datahubu

tacrpy.datahub.glossary.records_into_rows(df: DataFrame, key_column: object, parse_column: object, separator: any) DataFrame[source]

Dílčí funkce, která rozparsuje buňky v cílovém sloupci s více záznamy do jednotlivých řádků (na základě separátoru), přičemž je zachována příslušnost k hlavnímu klíči.

Parameters:
  • df – název pd.DataFrame, v rámci kterého chci danou funkci použít

  • key_column – název sloupce s klíčem/ID, ke kterému chci rozparsované záznamy vztáhnout

  • parse_column – název sloupce, v rámci kterého chci záznamy rozparsovat do řádků

  • separator – volba separátoru, kterým jsou jednotlivé záznamy v buňce odděleny

Returns:

pd.DataFrame obsahující sloupec s rozparsovanými záznamy a klíč, ke kterému se dané záznamy vztahují

tacrpy.datahub.glossary.row_transform(df: DataFrame, new_column: object, key_column: object, base_column_1: object, base_column_2: object) DataFrame[source]

Dílčí funkce agregující řádky vstupního df na základě klíče a ze záznámů z vybraných sloupců vytvoří list slovníků.

Parameters:
  • df – název pd.DataFrame, v rámci kterého chci danou funkci použít

  • new_column – název nového sloupce, jehož obsahem bude agregace záznamů do struktury listu slovníků

  • key_column – název sloupce, který představuje klíč pro agregaci řádků

  • base_column_1 – název prvního sloupce, jehož hodnoty jsou agregovány do struktury listu slovníků

  • base_column_2 – název druhého sloupce, jehož hodnoty jsou agregovány do struktury listu slovníků

Returns:

pd.DataFrame obsahující dva sloupce - klíč a hodnoty ve struktuře listu slovníků

tacrpy.datahub.import_checks module

Modul obsahuje předdefinované funkce, které slouží jako kontrola úplnosti dat importovaných skrze API do datahubu. Primárním využitím je testování skrze tyto předdefinované funkce nad cílovým souborem.

tacrpy.datahub.import_checks.are_all_values_objects_in_column(df: DataFrame, column_name: object) bool[source]

Ověřovací funkce určená primárně jako vstup do testu, indikuje, zda se ve sloupci vyskytují pouze object hodnoty.

Parameters:
  • df – dataframe, v rámci kterého chci danou podmínku ověřovat

  • column_name – sloupec v rámci dataframu, na který chci danou podmínku aplikovat

Returns:

bool hodnota podle toho, jestli je nebo není podmínka pro vybraný sloupec splněna

tacrpy.datahub.import_checks.contains_boolean_values(df: DataFrame, column_name: object) bool[source]

Ověřovací funkce určená primárně jako vstup do testu, indikuje, zda se ve sloupci vyskytují pouze bool hodnoty.

Parameters:
  • df – dataframe, v rámci kterého chci danou podmínku ověřovat

  • column_name – sloupec v rámci dataframu, na který chci danou podmínku aplikovat

Returns:

bool hodnota podle toho, jestli je nebo není podmínka pro vybraný sloupec splněna

tacrpy.datahub.import_checks.has_specific_values(df: DataFrame, column_name: object, predefined_values: list[any]) bool[source]

Ověřovací funkce určená primárně jako vstup do testu, indikuje, zda se ve sloupci vyskytují pouze předdefinované hodnoty.

Parameters:
  • df – dataframe, v rámci kterého chci danou podmínku ověřovat

  • column_name – sloupec v rámci dataframu, na který chci danou podmínku aplikovat

  • predefined_values – list předdefinovaných hodnot

Returns:

bool hodnota podle toho, jestli je nebo není podmínka pro vybraný sloupec splněna

tacrpy.datahub.import_checks.is_column_filled(df: DataFrame, column_name: object) bool[source]

Ověřovací funkce určená primárně jako vstup do testu, indikuje, zda je sloupec kompletně vyplněný, tj. zda v daném sloupci nejsou obsaženy prázdné hodnoty.

Parameters:
  • df – dataframe, v rámci kterého chci danou podmínku ověřovat

  • column_name – sloupec v rámci dataframu, na který chci danou podmínku aplikovat

Returns:

bool hodnota podle toho, jestli je nebo není podmínka pro vybraný sloupec splněna

tacrpy.datahub.import_checks.is_column_list_of_dicts(df: DataFrame, column_name: object) bool[source]

Ověřovací funkce určená primárně jako vstup do testu, ověřuje, zda buňky ve sloupci obsahují pouze obsah strukturovaný do listu slovníků (v případě, že nejsou prázdné).

Parameters:
  • df – dataframe, v rámci kterého chci danou podmínku ověřovat

  • column_name – sloupec v rámci dataframu, na který chci danou podmínku aplikovat

Returns:

bool hodnota podle toho, jestli je nebo není podmínka pro vybraný sloupec splněna

tacrpy.datahub.import_checks.no_duplicates_in_column(df: DataFrame, column_name: object) bool[source]

Ověřovací funkce určená primárně jako vstup do testu, indikuje, zda se ve sloupci vyskytují duplicitní hodnoty.

Parameters:
  • df – dataframe, v rámci kterého chci danou podmínku ověřovat

  • column_name – sloupec v rámci dataframu, na který chci danou podmínku aplikovat

Returns:

bool hodnota podle toho, jestli je nebo není podmínka pro vybraný sloupec splněna

tacrpy.datahub.import_checks.notnan_in_columns_with_list_of_dicts(df: DataFrame, column_name: object) bool[source]

Ověřovací funkce určená primárně jako vstup do testu, ověřuje, zda buňky s obsahem strukturovaným do listu slovníků neobsahují Nan values uvnitř slovníků.

Parameters:
  • df – dataframe, v rámci kterého chci danou podmínku ověřovat

  • column_name – sloupec v rámci dataframu, na který chci danou podmínku aplikovat

Returns:

bool hodnota podle toho, jestli je nebo není podmínka pro vybraný sloupec splněna

tacrpy.datahub.openapi module

Soubor funkcí k práci s OpenAPI DataHubu.

tacrpy.datahub.openapi.delete_data(urn: str, test: bool = True, soft: bool = False) Response[source]

Vymaže data vybrané entity přes OpenAPI

Parameters:
  • urn – URN entity, kterou chceme vymazat

  • test – vymaže data z testovacího nebo produkčního prostředí

  • soft – můžeme entitu vymazat pouze z vyhledávání (soft = True) nebo kompletně (soft = False)

Returns:

objekt třídy Response, který reprezentuje odezvu serveru

tacrpy.datahub.openapi.get_data(urn: str, test: bool = True) dict[source]

Získá data k vybrané entitě přes OpenAPI.

Parameters:
  • urn – URN entity, pro kterou chceme získat data

  • test – získá data buď z testovacího nebo produkčního prostředí

Returns:

data ve formátu JSON

tacrpy.datahub.openapi.post_data(json_data: list[dict], test: bool = True) Response[source]

Nahraje přes OpenAPI data do DataHubu.

Než se data nahrají je vhodné provést kontroly správnosti dat.

Parameters:
  • json_data – data ve formátu JSON, které se mají nahrát do DataHubu

  • test – nahraje data buď na testovací nebo produkční prostředí

Returns:

objekt třídy Response, který reprezentuje odezvu serveru

Module contents