In dynamic partitioning values for partition columns are known in the runtime, i.e. It is known during loading of the data into a Hive table.
One may use dynamic partition in following two cases:
Loading data from an existing non-partitioned table to improve the sampling and therefore, decrease the query latency.
When one does not know all the values of the partitions before hand and therefore, finding these partition values manually from a huge data sets is a tedious task.