This article offers a comprehensive view of the **factorial** function, alongside hands-on examples. The **factorial** function in PySpark calculates the factorial of a given number. The factorial of a non-negative integer** n** is the product of all positive integers less than or equal to **n**. Mathematically, it’s denoted as **n!**.

Basic demonstration to calculate the factorial of given numbers

```
from pyspark.sql import SparkSession
from pyspark.sql.functions import factorial
spark = SparkSession.builder \
.appName("Freshers.in Learning @ PySpark factorial Function") \
.getOrCreate()
data = [(3,), (5,), (7,)]
df = spark.createDataFrame(data, ["number"])
df.withColumn("factorial_value", factorial(df["number"])).show()
```

Output:

```
+------+--------------+
|number|factorial_value|
+------+--------------+
| 3| 6|
| 5| 120|
| 7| 5040|
+------+--------------+
```

**Use case: Combinatorial analysis**

Imagine you’re working on a lottery system, where participants choose 5 numbers out of 50. You might want to compute the total possible combinations. This is a classic use case for the factorial function:

```
from pyspark.sql.functions import expr
data = [(50, 5)]
df_comb = spark.createDataFrame(data, ["n", "r"])
# n! / r!(n-r)!
df_comb.withColumn("combinations",
factorial(df_comb["n"]) / (factorial(df_comb["r"]) * factorial(df_comb["n"] - df_comb["r"]))).show()
```

Output

```
+---+---+------------+
| n| r|combinations|
+---+---+------------+
| 50| 5| 2.1187601E7|
+---+---+------------+
```

This means there are over 21 million possible combinations in this lottery system.

Used in

**Statistics and Probability:** For tasks involving permutations, combinations, or binomial coefficients, the `factorial`

function becomes essential.

**Algorithms:** Various algorithms, especially in computer science or operations research, may require factorial calculations.

**Mathematical Analysis:** Any analytical task that involves factorial or related mathematical functions will benefit from PySpark’s `factorial`

.

**Spark important urls to refer**