{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Liczenie słów w „Panu Tadeuszu” w Microsoft Fabric\n",
    "Notatnik dla lakehouse'a z plikiem `pan_tadeusz.txt` wgranym do sekcji **Files**.\n",
    "Tokenizacja jak w pozostałych wersjach z artykułu: małe litery, podział na ciągi znaków niebędących literami."
   ]
  },
  {
   "cell_type": "code",
   "metadata": {},
   "source": [
    "from pyspark.sql import functions as F\n",
    "\n",
    "lines = spark.read.text(\"Files/pan_tadeusz.txt\")\n",
    "words = (lines\n",
    "         .select(F.explode(F.split(F.lower(\"value\"), r\"[^\\p{L}]+\")).alias(\"word\"))\n",
    "         .where(F.col(\"word\") != \"\"))\n",
    "counts = words.groupBy(\"word\").count().orderBy(F.desc(\"count\"), \"word\")\n",
    "\n",
    "# wynik jako tabela Delta w lakehouse (widoczna w sekcji Tables)\n",
    "counts.write.mode(\"overwrite\").format(\"delta\").saveAsTable(\"word_counts\")\n",
    "display(counts.limit(20))"
   ],
   "execution_count": null,
   "outputs": []
  },
  {
   "cell_type": "code",
   "metadata": {},
   "source": [
    "%%sql\n",
    "SELECT COUNT(*) AS distinct_words, SUM(`count`) AS all_words FROM word_counts"
   ],
   "execution_count": null,
   "outputs": []
  }
 ],
 "metadata": {
  "language_info": {
   "name": "python"
  },
  "kernelspec": {
   "name": "synapse_pyspark",
   "display_name": "PySpark",
   "language": "python"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}