ਸਪਾਰਕ ਕੋਡ ਲਿਖੋ ਜੋ ਇੱਕ CSV ਫਾਇਲ ਅਤੇ ਸੂਚੀਆਂ ਦੀ ਸੂਚੀ ਲੈਂਦਾ ਹੈ ਅਤੇ ਟਾਈਪ 2 ਹੌਲੀ ਬਦਲਦੇ ਮਾਪ ਬਣਾਉਂਦਾ ਹੈ. ਸੂਚੀ ਦੀ ਸੂਚੀ ਵਿੱਚ ਪਹਿਲੀ ਸੂਚੀ ਦੀ ਸੂਚੀ ਹੈਤੱਥ ਸਾਰਣੀ ਵਿੱਚ ਕਾਲਮ, ਸੂਚੀ ਵਿੱਚ ਹੋਰ ਸਾਰੀਆਂ ਸੂਚੀਆਂ ਮਾਪ ਲਈ ਕਾਲਮ ਦੇ ਨਾਮ ਹਨ। ", 'ਸਪਾਰਕ ਕੋਡ ਲਿਖੋ ਜੋ ਇੱਕ CSV ਫਾਇਲ ਅਤੇ ਸੂਚੀਆਂ ਦੀ ਸੂਚੀ ਲੈਂਦਾ ਹੈ ਅਤੇ ਟਾਈਪ 2 ਹੌਲੀ ਬਦਲਦੇ ਮਾਪ ਬਣਾਉਂਦਾ ਹੈ। ਸੂਚੀ ਦੀ ਸੂਚੀ ਵਿੱਚ ਪਹਿਲੀ ਸੂਚੀ ਦੀ ਸੂਚੀ ਹੈਤੱਥ ਸਾਰਣੀ ਵਿੱਚ ਕਾਲਮ, ਸੂਚੀ ਵਿੱਚ ਹੋਰ ਸਾਰੀਆਂ ਸੂਚੀਆਂ ਮਾਪ ਲਈ ਕਾਲਮ ਦੇ ਨਾਮ ਹਨ।', ' [\'ਸਪਾਰਕ ਕੋਡ ਲਿਖੋ ਜੋ ਇੱਕ CSV ਫਾਇਲ ਅਤੇ ਸੂਚੀਆਂ ਦੀ ਸੂਚੀ ਲੈਂਦਾ ਹੈ ਅਤੇ ਟਾਈਪ 2 ਹੌਲੀ ਬਦਲਦੇ ਮਾਪ ਬਣਾਉਂਦਾ ਹੈ. ਸੂਚੀ ਦੀ ਸੂਚੀ ਵਿੱਚ ਪਹਿਲੀ ਸੂਚੀ ਦੀ ਸੂਚੀ ਹੈਤੱਥ ਸਾਰਣੀ ਵਿੱਚ ਕਾਲਮ, ਸੂਚੀ ਵਿੱਚ ਹੋਰ ਸਾਰੀਆਂ ਸੂਚੀਆਂ ਮਾਪ ਲਈ ਕਾਲਮ ਦੇ ਨਾਮ ਹਨ। \',\' ਮੈਂ ਸਮਝਦਾ ਹਾਂ ਕਿ ਤੁਸੀਂ ਟਾਈਪ 2 ਬਣਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ।ਇੱਕ ਸੀ. ਐੱਸ. ਵੀ. ਫਾਇਲ ਅਤੇ ਸੂਚੀਆਂ ਦੀ ਸੂਚੀ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ, ਸਪਾਰਕ ਵਿੱਚ ਹੌਲੀ-ਹੌਲੀ ਬਦਲਦੇ ਮਾਪ (ਐੱਸ. ਸੀ. ਡੀ.)। ਅਜਿਹੇ ਇੱਕ ਕਾਰਜ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਹੇਠਾਂ ਸਕੈਲਾ ਵਿੱਚ ਸਪਾਰਕ ਕੋਡ ਹੈ।ਦ੍ਰਿਸ਼ਟੀਕੋਣ। \\n\\n ਕਿਰਪਾ ਕਰਕੇ ਨੋਟ ਕਰੋ ਕਿ ਤੁਹਾਨੂੰ ਫਾਇਲ ਮਾਰਗ ਅਤੇ ਸੂਚੀਆਂ ਦੀ ਸੂਚੀ ਨੂੰ ਆਪਣੇ ਅਸਲ ਡੇਟਾ ਨਾਲ ਬਦਲਣ ਦੀ ਜ਼ਰੂਰਤ ਹੋਏਗੀ। \\n\\n "\'ਸਕੈਲਾ\\ਨਿੰਪੋਰਟorg.apache.spark.sql.SparkSession \\nimਪੋਰਟ org.apache.spark.sql.functions._ \\nimਪੋਰਟ org.apache.spark.sql.DataFrame \\nimਪੋਰਟorg.apache.spark.sql.types._ \\n\\n// ਸ਼ੁਰੂ ਕਰੋ ਸਪਾਰਕਸਿਸ਼ਨ\\ਨਵਲ ਸਪਾਰਕ = SparkSession.builder () \\n. ਐਪਨਾਮ ("SCD ਟਾਈਪ2") \\n. ਮਾਸਟਰ ("ਲੋਕਲ [*]") \\nCSV ਫਾਇਲ ਨੂੰ ਪਡ਼੍ਹੋ \\nval ਇੰਪੁੱਟ ਫਾਈਲ = "ਪਾਥ/ਤੋਂ/ਤੁਹਾਡੀ/csv/ਫਾਈਲ. csv" \\nval ਇੰਪੁੱਟ DF = spark.read \\n. ਵਿਕਲਪ ("ਹੈਡਰ", "ਸੱਚ") \\n. ਵਿਕਲਪ ("inferSchema", "ਸੱਚ") \\n. csv (ਇੰਪੁੱਟ ਫਾਈਲ) \\n\\n// ਇਸ ਸੂਚੀ ਨੂੰ ਆਪਣੀਆਂ ਸੂਚੀਆਂ ਦੀ ਅਸਲ ਸੂਚੀ ਨਾਲ ਬਦਲੋ।"ਤੱਥ _ ਕੋਲ2", "ਤੱਥ _ ਕੋਲ3"), \\n ਸੂਚੀ ("ਡਿੰਮ1 _ ਕੋਲ1", "ਡਿੰਮ1 _ ਕੋਲ2", "ਡਿੰਮ1 _ ਕੋਲ3"), \\n ਸੂਚੀ ("ਡਿੰਮ2 _ ਕੋਲ1", "ਡਿੰਮ2 _ ਕੋਲ2", "ਡਿੰਮ2 _ ਕੋਲ3") \\n) \\n// ਤੱਥ ਨੂੰ ਬਾਹਰ ਕੱਢੋ ਅਤੇਡਾਇਮੈਨਸ਼ਨ ਕਾਲਮ \\nval ਤੱਥ ਕਾਲਮ = listOfLists.head \\nval ਡਾਇਮੈਨਸ਼ਨ ਕਾਲਮ = listOfLists.tail \\n\\n// ਫੰਕਸ਼ਨ ਐਸ. ਸੀ. ਡੀ. ਟਾਈਪ 2 ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈDataFrame\\ndef ਅਪਲਾਈ SCDType2 (df: DataFrame, ਕਾਲਮਃ ਸੂਚੀ [ਸਤਰ]): DataFrame = {\\n ਵੈਲ ਕੁੰਜੀ ਕਾਲਮ = columns.head \\n ਵੈਲ ਨਾਨਕੀ ਕਾਲਮ = columns.tail \\n\\n ਵੈਲ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ DF = df.withColumn ("ਸਟਾਰਟ _ ਡੇਟ", ਕਰੰਟ _ ਡੇਟ ()) \\n. ਵਿੱਥ-ਕਾਲਮ ("ਐਂਡ _ ਡੇਟ", ਲਿਟ (ਨੱਲ). ਕਾਸਟ (ਡੇਟ ਟਾਈਪ)) \\n. ਵਿੱਥ-ਕਾਲਮ ("ਇਸ _ ਕਰੰਟ",ਲਿੱਟ (ਸੱਚਾ). ਕਾਸਟ (ਬੁਲੀਅਨ ਟਾਈਪ)) \\n\\n ਵੈਲ ਵਿੰਡੋਸਪੇਕ = Window.partitionBy (ਕੀ ਕਾਲਮ). ਆਰਡਰਬਾਈ (desc ("ਸਟਾਰਟ _ ਡੇਟ")) \\n\\n ਵੈਲ scdType2DF =updatedDF.withColumn ("rn", ਰੋਅ _ ਨੰਬਰ (). ਓਵਰ (ਵਿੰਡੋਸਪੇਕ)) \\n. ਜਿੱਥੇ (ਕੋਲ ("rn") = = = 1) \\n. ਡ੍ਰੌਪ ("rn") \\n\\n scdType2DF\\n} \\n\\n/ਉੱਤੇ SCD ਟਾਈਪ 2 ਲਾਗੂ ਕਰੋ।ਮਾਪ \\nval ਮਾਪ SCDType2 = dimensionsColumns.map (ਡਿੰਮਕੋਲਸ => ਅਪਲਾਈ SCDType2 (ਇੰਪੁੱਟਡੀਐੱਫ, ਡਿੰਮਕੋਲਸ)) \\n\\n// ਤੱਥ ਅਤੇ ਮਾਪ ਨੂੰ ਮਿਲਾਓ \\nvalਤੱਥ ਅਤੇ ਮਾਪ DF = factColumns.foldLeft (ਇੰਪੁੱਟ DF) {(df, col) => \\n df.with \',\' ਇਸ ਕੋਡ ਨੂੰ ਪਾਈਥਨ ਵਿੱਚ ਬਣਾਓ \'] ', 'ਸਪਾਰਕ ਕੋਡ ਲਿਖੋ ਜੋ ਇੱਕ CSV ਫਾਇਲ ਅਤੇ ਸੂਚੀਆਂ ਦੀ ਸੂਚੀ ਲੈਂਦਾ ਹੈ ਅਤੇ ਟਾਈਪ 2 ਹੌਲੀ ਬਦਲਦੇ ਮਾਪ ਬਣਾਉਂਦਾ ਹੈ। ਸੂਚੀ ਦੀ ਸੂਚੀ ਵਿੱਚ ਪਹਿਲੀ ਸੂਚੀ ਦੀ ਸੂਚੀ ਹੈਤੱਥ ਸਾਰਣੀ ਵਿੱਚ ਕਾਲਮ, ਸੂਚੀ ਵਿੱਚ ਹੋਰ ਸਾਰੀਆਂ ਸੂਚੀਆਂ ਮਾਪ ਲਈ ਕਾਲਮ ਦੇ ਨਾਮ ਹਨ।', ' [\'ਸਪਾਰਕ ਕੋਡ ਲਿਖੋ ਜੋ ਇੱਕ CSV ਫਾਇਲ ਅਤੇ ਸੂਚੀਆਂ ਦੀ ਸੂਚੀ ਲੈਂਦਾ ਹੈ ਅਤੇ ਟਾਈਪ 2 ਹੌਲੀ ਬਦਲਦੇ ਮਾਪ ਬਣਾਉਂਦਾ ਹੈ. ਸੂਚੀ ਦੀ ਸੂਚੀ ਵਿੱਚ ਪਹਿਲੀ ਸੂਚੀ ਦੀ ਸੂਚੀ ਹੈਤੱਥ ਸਾਰਣੀ ਵਿੱਚ ਕਾਲਮ, ਸੂਚੀ ਵਿੱਚ ਹੋਰ ਸਾਰੀਆਂ ਸੂਚੀਆਂ ਮਾਪ ਲਈ ਕਾਲਮ ਦੇ ਨਾਮ ਹਨ। \',\' ਮੈਂ ਸਮਝਦਾ ਹਾਂ ਕਿ ਤੁਸੀਂ ਟਾਈਪ 2 ਬਣਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ।ਇੱਕ ਸੀ. ਐੱਸ. ਵੀ. ਫਾਇਲ ਅਤੇ ਸੂਚੀਆਂ ਦੀ ਸੂਚੀ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ, ਸਪਾਰਕ ਵਿੱਚ ਹੌਲੀ-ਹੌਲੀ ਬਦਲਦੇ ਮਾਪ (ਐੱਸ. ਸੀ. ਡੀ.)। ਅਜਿਹੇ ਇੱਕ ਕਾਰਜ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਹੇਠਾਂ ਸਕੈਲਾ ਵਿੱਚ ਸਪਾਰਕ ਕੋਡ ਹੈ।ਦ੍ਰਿਸ਼ਟੀਕੋਣ। \\n\\n ਕਿਰਪਾ ਕਰਕੇ ਨੋਟ ਕਰੋ ਕਿ ਤੁਹਾਨੂੰ ਫਾਇਲ ਮਾਰਗ ਅਤੇ ਸੂਚੀਆਂ ਦੀ ਸੂਚੀ ਨੂੰ ਆਪਣੇ ਅਸਲ ਡੇਟਾ ਨਾਲ ਬਦਲਣ ਦੀ ਜ਼ਰੂਰਤ ਹੋਏਗੀ। \\n\\n "\'ਸਕੈਲਾ\\ਨਿੰਪੋਰਟorg.apache.spark.sql.SparkSession \\nimਪੋਰਟ org.apache.spark.sql.functions._ \\nimਪੋਰਟ org.apache.spark.sql.DataFrame \\nimਪੋਰਟorg.apache.spark.sql.types._ \\n\\n// ਸ਼ੁਰੂ ਕਰੋ ਸਪਾਰਕਸਿਸ਼ਨ\\ਨਵਲ ਸਪਾਰਕ = SparkSession.builder () \\n. ਐਪਨਾਮ ("SCD ਟਾਈਪ2") \\n. ਮਾਸਟਰ ("ਲੋਕਲ [*]") \\nCSV ਫਾਇਲ ਨੂੰ ਪਡ਼੍ਹੋ \\nval ਇੰਪੁੱਟ ਫਾਈਲ = "ਪਾਥ/ਤੋਂ/ਤੁਹਾਡੀ/csv/ਫਾਈਲ. csv" \\nval ਇੰਪੁੱਟ DF = spark.read \\n. ਵਿਕਲਪ ("ਹੈਡਰ", "ਸੱਚ") \\n. ਵਿਕਲਪ ("inferSchema", "ਸੱਚ") \\n. csv (ਇੰਪੁੱਟ ਫਾਈਲ) \\n\\n// ਇਸ ਸੂਚੀ ਨੂੰ ਆਪਣੀਆਂ ਸੂਚੀਆਂ ਦੀ ਅਸਲ ਸੂਚੀ ਨਾਲ ਬਦਲੋ।"ਤੱਥ _ ਕੋਲ2", "ਤੱਥ _ ਕੋਲ3"), \\n ਸੂਚੀ ("ਡਿੰਮ1 _ ਕੋਲ1", "ਡਿੰਮ1 _ ਕੋਲ2", "ਡਿੰਮ1 _ ਕੋਲ3"), \\n ਸੂਚੀ ("ਡਿੰਮ2 _ ਕੋਲ1", "ਡਿੰਮ2 _ ਕੋਲ2", "ਡਿੰਮ2 _ ਕੋਲ3") \\n) \\n// ਤੱਥ ਨੂੰ ਬਾਹਰ ਕੱਢੋ ਅਤੇਡਾਇਮੈਨਸ਼ਨ ਕਾਲਮ \\nval ਤੱਥ ਕਾਲਮ = listOfLists.head \\nval ਡਾਇਮੈਨਸ਼ਨ ਕਾਲਮ = listOfLists.tail \\n\\n// ਫੰਕਸ਼ਨ ਐਸ. ਸੀ. ਡੀ. ਟਾਈਪ 2 ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈDataFrame\\ndef ਅਪਲਾਈ SCDType2 (df: DataFrame, ਕਾਲਮਃ ਸੂਚੀ [ਸਤਰ]): DataFrame = {\\n ਵੈਲ ਕੁੰਜੀ ਕਾਲਮ = columns.head \\n ਵੈਲ ਨਾਨਕੀ ਕਾਲਮ = columns.tail \\n\\n ਵੈਲ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ DF = df.withColumn ("ਸਟਾਰਟ _ ਡੇਟ", ਕਰੰਟ _ ਡੇਟ ()) \\n. ਵਿੱਥ-ਕਾਲਮ ("ਐਂਡ _ ਡੇਟ", ਲਿਟ (ਨੱਲ). ਕਾਸਟ (ਡੇਟ ਟਾਈਪ)) \\n. ਵਿੱਥ-ਕਾਲਮ ("ਇਸ _ ਕਰੰਟ",ਲਿੱਟ (ਸੱਚਾ). ਕਾਸਟ (ਬੁਲੀਅਨ ਟਾਈਪ)) \\n\\n ਵੈਲ ਵਿੰਡੋਸਪੇਕ = Window.partitionBy (ਕੀ ਕਾਲਮ). ਆਰਡਰਬਾਈ (desc ("ਸਟਾਰਟ _ ਡੇਟ")) \\n\\n ਵੈਲ scdType2DF =updatedDF.withColumn ("rn", ਰੋਅ _ ਨੰਬਰ (). ਓਵਰ (ਵਿੰਡੋਸਪੇਕ)) \\n. ਜਿੱਥੇ (ਕੋਲ ("rn") = = = 1) \\n. ਡ੍ਰੌਪ ("rn") \\n\\n scdType2DF\\n} \\n\\n/ਉੱਤੇ SCD ਟਾਈਪ 2 ਲਾਗੂ ਕਰੋ।ਮਾਪ \\nval ਮਾਪ SCDType2 = dimensionsColumns.map (ਡਿੰਮਕੋਲਸ => ਅਪਲਾਈ SCDType2 (ਇੰਪੁੱਟਡੀਐੱਫ, ਡਿੰਮਕੋਲਸ)) \\n\\n// ਤੱਥ ਅਤੇ ਮਾਪ ਨੂੰ ਮਿਲਾਓ \\nval\'ਇਸ ਕੋਡ ਨੂੰ ਪਾਈਥਨ ਵਿੱਚ ਬਣਾਓ\', \'ਮੈਂ ਸਮਝਦਾ ਹਾਂ ਕਿ ਤੁਸੀਂ ਟਾਈਪ ਬਣਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ2 ਸਪਾਰਕ ਵਿੱਚ ਹੌਲੀ-ਹੌਲੀ ਬਦਲਦੇ ਮਾਪ (ਐੱਸ. ਸੀ. ਡੀ.), ਇੱਕ ਸੀ. ਐੱਸ. ਵੀ. ਫਾਇਲ ਅਤੇ ਸੂਚੀਆਂ ਦੀ ਇੱਕ ਸੂਚੀ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ। ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਇੱਕ ਕਾਰਜ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਹੇਠਾਂ ਸਕੈਲਾ ਵਿੱਚ ਸਪਾਰਕ ਕੋਡ ਹੈ।ਦ੍ਰਿਸ਼ਟੀਕੋਣ। \\n\\n ਕਿਰਪਾ ਕਰਕੇ ਨੋਟ ਕਰੋ ਕਿ ਤੁਹਾਨੂੰ ਫਾਇਲ ਮਾਰਗ ਅਤੇ ਸੂਚੀਆਂ ਦੀ ਸੂਚੀ ਨੂੰ ਆਪਣੇ ਅਸਲ ਡੇਟਾ ਨਾਲ ਬਦਲਣ ਦੀ ਜ਼ਰੂਰਤ ਹੋਏਗੀ। \\n\\n "\'ਸਕੈਲਾ\\ਨਿੰਪੋਰਟorg.apache.spark.sql.SparkSession \\nimਪੋਰਟ org.apache.spark.sql.functions._ \\nimਪੋਰਟ org.apache.spark.sql.DataFrame \\nimਪੋਰਟorg.apache.spark.sql.types._ \\n\\n// ਸ਼ੁਰੂ ਕਰੋ ਸਪਾਰਕਸਿਸ਼ਨ\\ਨਵਲ ਸਪਾਰਕ = SparkSession.builder () \\n. ਐਪਨਾਮ ("SCD ਟਾਈਪ2") \\n. ਮਾਸਟਰ ("ਲੋਕਲ [*]") \\nCSV ਫਾਇਲ ਨੂੰ ਪਡ਼੍ਹੋ \\nval ਇੰਪੁੱਟ ਫਾਈਲ = "ਪਾਥ/ਤੋਂ/ਤੁਹਾਡੀ/csv/ਫਾਈਲ. csv" \\nval ਇੰਪੁੱਟ DF = spark.read \\n. ਵਿਕਲਪ ("ਹੈਡਰ", "ਸੱਚ") \\n. ਵਿਕਲਪ ("inferSchema", "ਸੱਚ") \\n. csv (ਇੰਪੁੱਟ ਫਾਈਲ) \\n\\n// ਇਸ ਸੂਚੀ ਨੂੰ ਆਪਣੀਆਂ ਸੂਚੀਆਂ ਦੀ ਅਸਲ ਸੂਚੀ ਨਾਲ ਬਦਲੋ।"ਤੱਥ _ ਕੋਲ2", "ਤੱਥ _ ਕੋਲ3"), \\n ਸੂਚੀ ("ਡਿੰਮ1 _ ਕੋਲ1", "ਡਿੰਮ1 _ ਕੋਲ2", "ਡਿੰਮ1 _ ਕੋਲ3"), \\n ਸੂਚੀ ("ਡਿੰਮ2 _ ਕੋਲ1", "ਡਿੰਮ2 _ ਕੋਲ2", "ਡਿੰਮ2 _ ਕੋਲ3") \\n) \\n// ਤੱਥ ਨੂੰ ਬਾਹਰ ਕੱਢੋ ਅਤੇਡਾਇਮੈਨਸ਼ਨ ਕਾਲਮ \\nval ਤੱਥ ਕਾਲਮ = listOfLists.head \\nval ਡਾਇਮੈਨਸ਼ਨ ਕਾਲਮ = listOfLists.tail \\n\\n// ਫੰਕਸ਼ਨ ਐਸ. ਸੀ. ਡੀ. ਟਾਈਪ 2 ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈDataFrame\\ndef ਅਪਲਾਈ SCDType2 (df: DataFrame, ਕਾਲਮਃ ਸੂਚੀ [ਸਤਰ]): DataFrame = {\\n ਵੈਲ ਕੁੰਜੀ ਕਾਲਮ = columns.head \\n ਵੈਲ ਨਾਨਕੀ ਕਾਲਮ = columns.tail \\n\\n ਵੈਲ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ DF = df.withColumn ("ਸਟਾਰਟ _ ਡੇਟ", ਕਰੰਟ _ ਡੇਟ ()) \\n. ਵਿੱਥ-ਕਾਲਮ ("ਐਂਡ _ ਡੇਟ", ਲਿਟ (ਨੱਲ). ਕਾਸਟ (ਡੇਟ ਟਾਈਪ)) \\n. ਵਿੱਥ-ਕਾਲਮ ("ਇਸ _ ਕਰੰਟ",ਲਿੱਟ (ਸੱਚਾ). ਕਾਸਟ (ਬੁਲੀਅਨ ਟਾਈਪ)) \\n\\n ਵੈਲ ਵਿੰਡੋਸਪੇਕ = Window.partitionBy (ਕੀ ਕਾਲਮ). ਆਰਡਰਬਾਈ (desc ("ਸਟਾਰਟ _ ਡੇਟ")) \\n\\n ਵੈਲ scdType2DF =updatedDF.withColumn ("rn", ਰੋਅ _ ਨੰਬਰ (). ਓਵਰ (ਵਿੰਡੋਸਪੇਕ)) \\n. ਜਿੱਥੇ (ਕੋਲ ("rn") = = = 1) \\n. ਡ੍ਰੌਪ ("rn") \\n\\n scdType2DF\\n} \\n\\n/ਉੱਤੇ SCD ਟਾਈਪ 2 ਲਾਗੂ ਕਰੋ।ਮਾਪ \\nval ਮਾਪ SCDType2 = dimensionsColumns.map (ਡਿੰਮਕੋਲਸ => ਅਪਲਾਈ SCDType2 (ਇੰਪੁੱਟਡੀਐੱਫ, ਡਿੰਮਕੋਲਸ)) \\n\\n// ਤੱਥ ਅਤੇ ਮਾਪ ਨੂੰ ਮਿਲਾਓ \\nvalਤੱਥ ਅਤੇ ਮਾਪ DF = factColumns.foldLeft (ਇੰਪੁੱਟ DF) {(df, col) => \\n df.withColumnRenamed (col, s "ਤੱਥ _ $col") \\n} \\n\\nਭਾਲ ਸੰਯੁਕਤ DF =dimensionsSCDType2.foldLeft (ਤੱਥ ਅਤੇ ਮਾਪ DF) {(df, dimDF) => \\n dimDF.columns.foldLeft (df) {(innerDF, dimCol) => \\ninnerDF.withColumnRenamed (dimCol, s "dim _ ${dimCol}") \\n} \\n} \\n\\n// ਆਉਟਪੁੱਟ ਨੂੰ ਇੱਕ ਨਵੀਂ CSV ਫਾਇਲ ਵਿੱਚ ਲਿਖੋ।"ਸਹੀ") \\n. csv ("ਪਾਥ/ਤੋਂ/ਤੁਹਾਡਾ/ਆਉਟਪੁੱਟ/csv/ਫਾਈਲ") \\n \'\\n\\n ਇਹ ਕੋਡ ਇੱਕ ਸਪਾਰਕ ਸੈਸ਼ਨ ਨੂੰ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ, ਇੰਪੁੱਟ CSV ਫਾਈਲ ਨੂੰ ਪਡ਼੍ਹਦਾ ਹੈ, ਅਤੇ ਫਿਰ ਇਸ ਉੱਤੇ ਟਾਈਪ 2 SCDs ਲਾਗੂ ਕਰਦਾ ਹੈ।ਨਿਰਧਾਰਤ ਮਾਪ। ਅੰਤ ਵਿੱਚ, ਇਹ ਤੱਥ ਅਤੇ ਮਾਪ ਕਾਲਮਾਂ ਨੂੰ ਜੋਡ਼ਦਾ ਹੈ ਅਤੇ ਨਤੀਜੇ ਵਜੋਂ ਡੇਟਾ ਫਰੇਮ ਨੂੰ ਇੱਕ ਨਵੀਂ CSV ਫਾਈਲ ਵਿੱਚ ਲਿਖਦਾ ਹੈ।ਪਾਈਥਨ \'] ', 'ਸਪਾਰਕ ਕੋਡ ਲਿਖੋ ਜੋ ਇੱਕ CSV ਫਾਇਲ ਅਤੇ ਸੂਚੀਆਂ ਦੀ ਸੂਚੀ ਲੈਂਦਾ ਹੈ ਅਤੇ ਟਾਈਪ 2 ਹੌਲੀ ਬਦਲਦੇ ਮਾਪ ਬਣਾਉਂਦਾ ਹੈ। ਸੂਚੀ ਦੀ ਸੂਚੀ ਵਿੱਚ ਪਹਿਲੀ ਸੂਚੀ ਦੀ ਸੂਚੀ ਹੈਤੱਥ ਸਾਰਣੀ ਵਿੱਚ ਕਾਲਮ, ਸੂਚੀ ਵਿੱਚ ਹੋਰ ਸਾਰੀਆਂ ਸੂਚੀਆਂ ਮਾਪ ਲਈ ਕਾਲਮ ਦੇ ਨਾਮ ਹਨ। \n ']