Skip to main content

1. Introductie

In deze package staan functies die door het datateam MOSS+ van de gemeente Amsterdam gebruikt worden in de data pipelines. Aangezien dit datateam 4 directies bedient, zijn er dezelfde functies die voor verschillende projecten gebruikt worden. Om te zorgen dat er geen wildgroei ontstaat van losse functies of verschillende versies van dezelfde functies is er gekozen om een package te maken die geïmporteerd kan worden.

1.1 Disclaimers

Deze repo zit in de Proof of Concept fase

2. Vereiste

Binnen het cluster Digitalisering, Innovatie en Informatie (DII) zit verschillende directies; waaronder de directie Data. Binnen de directie data is er in besloten om het datalandschap te moderniseren. Hiervoor is er gekozen om over te stappen naar Databricks. De functies die jij aanroept via deze packages zijn gemaakt/getest op de Azure Databricks omgeving. Andere omgevingen of andere, niet hieronder genoemde, clusterconfiguraties worden (nog) niet gesupport.

2.1 Geteste Databricks Cluster Configuraties

Cluster Configuratie nr Access mode Node Databricks Runtime version Worker type Min Workers Max Workers Driver type
cluster_configuratie_1 Single User Multi Runtime: 13.3 LTS (Scala 2.12, Spark 3.4.1) Standard_DS3_v2 (14gb Memory, 4 Cores) 2 8 Standard_DS3_v2 (14GB Memory, 4 Cores)
cluster_configuratie_2 Single User Single Runtime: 14.2 (includes Apache Spark 3.5.0, Scala 2.12) Standard_DS3_v2 (14gb Memory, 4 Cores) 1 1 Standard_DS3_v2 (14GB Memory, 4 Cores)

3. Overzicht Functionaliteiten

  • 3.1 -> Algemene functie
  • 3.2 -> Reversed modeling voor logische modellen

3.1 Algemene functies

Op dit moment zijn er verschillende functies beschikbaar.

get_catalog()
clean_colum_names(df.columns) # schoont kolomnamen op
clean_dataframe(df: DataFrame) # schoont een dataframe op
del_meerdere_tabellen_catalog(catalog: str, schema: str, tabellen_filter: str, uitsluiten_tabellen:str = None) # verwijder meerdere tabellen uit de catalogus.
rename_multiple_columns(df, {'oude_naam': 'nieuwe_naam', 'oude_naam_2': 'nieuwe_naam_2'}) # deze hernoemt meerdere kolommen
check_nrow_tabel_vs_distinct_id(tabelnaam: str, id: str) # Controleert of het aantal rijen overeenkomt met het aantal unieke ID's in de opgegeven kolom.
controle_unieke_waarden_kolom(df: DataFrame, kolom: str) #Controleert of alle waarden in een specifieke kolom uniek zijn in het gegeven DataFrame.
convert_datetime_format(input_format): # Converteert het opmaakoptie voor datum en tijd van het datetime (format)  naar het PySpark format.
tijdzone_amsterdam(tijdformaat="%Y-%m-%d %H:%M:%S", date_string_timestamp="timestamp"): #Haalt de huidige tijd op en converteert deze naar het opgegeven tijdsformaat en de tijdzone van Amsterdam.
bepaal_kolom_volgorde(df: DataFrame, gewenste_kolom_volgorde: list) -> DataFrame: #Bepaalt de volgorde van kolommen in een DataFrame op basis van de opgegeven gewenste volgorde.
voeg_willekeurig_toe_en_hash_toe(df: DataFrame, business_key: str, naam_id: str) # Neemt de naam van een kolom als invoer aan, veronderstelt dat het een gehashte waarde bevat,
voegt aan elke waarde een willekeurig woord of getal toe en maakt een nieuwe hash..
maak_onbekende_dimensie(df, naam_bk, naam_id="", uitzonderings_kolommen=[]) # Maakt een nieuwe DataFrame met een record voor ontbrekende waarden in een dimensietabel.
vul_lege_cellen_in(df: DataFrame, uitzonderings_kolommen: list = []) #Vult lege cellen in een DataFrame in met standaardwaarden, behalve voor de opgegeven uitzonderingskolommen.

3.2 Reversed modeling voor logische modellen

Gebruik
dataset = Dataset(
    catalog='catalog_name', # bijv. 'dpms_dev'
    database='schema_name', # bijv. 'silver'
    project_prefixes=['prefix_'], # bijv. 'sport_'
    exclude=['test'] 
)

dataset.print_eraser_code()
dataset.print_drawio_code()
Samenvatting

Deze code omvat reversed modeling; het geeft de input voor tools voor visuele logische modellen op basis van bestaande tabellen en kolomnamen in Databricks.

1. Het doel van deze code

Deze code geeft in tekstvorm de input van een visueel logisch model in Eraser.io of DrawIO. Dit maakt reversed modeling mogelijk: eerst worden tabellen in Databricks gemaakt, daarna leidt deze code het model daaruit af. Dit maakt het modelleerproces efficienter.

2. Hoe de code werkt en onderliggende aannames

De code kijkt binnen een catalog (bv. 'dpms_dev') en binnen een database (bv 'silver') en dan weer binnen een door de eindgebruiker gedefinieerde naam voor een project (bv 'amis' in de tabelnaam) naar een set tabellen en kolomnamen. Dit resulteert in de volgende metadata:

  1. tabellen met kolommen met namen en datatypes: deze corresponderen exact met Databricks
  2. de relaties tussen die tabellen. Hier zijn enkele aannames gedaan:
    • Er is sprake van een relatie tussen 2 tabellen, als ze beide een kolom met dezelfde naam hebben
    • De kardinaliteit (bv. one-to-many) wordt afgeleid van de unieke waarden in deze kolommen. Bijvoorbeeld: voor account_id in tabel 1 is de COUNT gelijk aan de COUNT DISTINCT: per rij is er een unieke account_id, dus dit is een one-to??? relatie. In tabel 2 is de COUNT van account_id hoger dan de COUNT DISTINCT: er is geen unieke id per rij. Dit maakt een one-to-many relatie.
3. Ondersteuning voor tools

Deze tools worden momenteel ondersteund (dit kan in de toekomst nog uitbreiden):

  • Eraser.IO (ERD Schema from code)
  • DrawIO (CREATE TABLE statement)
4. Toekomstige features

Deze features staan op de backlog:

  • Een lijst van project prefixes ingeven
  • Project prefixen leeg laten, zodat de hele database (bv. zilveren laag) wordt uitgelezen """

Werkomgeving instellen voor VScode

  1. Installeer python 3.11. De nieuwste versie is nog niet compatibel met alle Databricks connect versies.
  2. Installeer de databricks extensie in VScode.
  3. Configureer de Databricks extensie met een access token, zodat de authenticatie automatisch geregeld wordt.
  4. Installeer een virtual env met python 3.11. py -3.11 -m venv .venv en activeer de venv met .\.venv\Scripts\Activate.ps1
  5. Installeer de dependencies met pip install -e . en vervolgens de dev gerelateerde depencies met pip install --group dev.

Metadata

Release files for datateam-moss 0.2.27

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for datateam-moss 0.2.27
File Size Uploaded
datateam_moss-0.2.27.tar.gz 51.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for datateam-moss 0.2.27
File Interpreter ABI Platform
datateam_moss-0.2.27-py3-none-any.whl Python 3 none any Details

Total release size: 103.9 kB

Release files / datateam_moss-0.2.27.tar.gz

Download URL datateam_moss-0.2.27.tar.gz
Size 51.0 kB
Tags Source
SHA-256 checksum
How to use checksums
96be570b6cf7f6834fa027ed93ee0e9826f429139f02a65d688de0a76c1785db
BLAKE2b-256 checksum
How to use checksums
60d41a88acfe22ec22871738aae64878a30b43e29cf3b1d7d0d822ace3b0748d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / datateam_moss-0.2.27-py3-none-any.whl

Download URL datateam_moss-0.2.27-py3-none-any.whl
Size 52.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f0f9d67b51dd39dc436d3c5d097bed655d5c5f2f957cf9d142235e6d7c7a66ab
BLAKE2b-256 checksum
How to use checksums
941d6c0cb8297fba6d924ce52648af76cbafca52f6199c045f5ca4dc624d78a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.27 This release

2 release files

0.2.25

2 release files

0.2.23

2 release files

0.2.22

2 release files

0.2.21

2 release files

0.2.20

2 release files

0.2.19

2 release files

0.2.18

2 release files

0.2.17

2 release files

0.2.16

2 release files

0.2.14

2 release files

0.2.13

2 release files

0.2.12

2 release files

0.2.11

2 release files

0.2.10

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.99

2 release files

0.0.97

2 release files

0.0.96

2 release files

0.0.95

2 release files

0.0.94

2 release files

0.0.90

2 release files

0.0.89

2 release files

0.0.88

2 release files

0.0.87

2 release files

0.0.86

2 release files

0.0.85

2 release files

0.0.84

2 release files

0.0.83

2 release files

0.0.82

2 release files

0.0.81

2 release files

0.0.77

2 release files

0.0.76

2 release files

0.0.75

2 release files

0.0.70

2 release files

0.0.69

2 release files

0.0.68

2 release files

0.0.67

2 release files

0.0.66

2 release files

0.0.65

2 release files

0.0.64

2 release files

0.0.57

2 release files

0.0.56

2 release files

0.0.55

2 release files

0.0.54

2 release files

0.0.53

2 release files

0.0.52

2 release files

0.0.51

2 release files

0.0.50

2 release files

0.0.49

2 release files

0.0.48

2 release files

0.0.47

2 release files

0.0.46

2 release files

0.0.45

2 release files

0.0.44

2 release files

0.0.43

2 release files

0.0.42

2 release files

0.0.41

2 release files

0.0.32

2 release files

0.0.31

2 release files

0.0.29

2 release files

0.0.28

2 release files

0.0.27

2 release files

0.0.26

2 release files

0.0.25

2 release files

0.0.24

2 release files

0.0.23

2 release files

0.0.22

2 release files

0.0.20

2 release files

0.0.19

2 release files

0.0.18

2 release files

0.0.17

2 release files

0.0.15

2 release files

0.0.14

2 release files

0.0.13

2 release files

0.0.12

2 release files

0.0.11

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page