Advertisement
tills

testdata4

May 2nd, 2025
1,450
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 2.96 KB | None | 0 0
  1. /**
  2.  * Generates test panel data with two shops and creates a temporary table
  3.  */
  4. def generatePanelData(): Unit = {
  5.   val panelData = Seq(1, 2)
  6.   val panelDF = spark.createDataFrame(panelData.map(Tuple1(_))).toDF("shop_id")
  7.   panelDF.createOrReplaceTempView("lrx_panel")
  8.  
  9.   println("Wygenerowano tabelę lrx_panel z 2 sklepami")
  10. }
  11.  
  12. /**
  13.  * Generates test product data and creates a temporary table
  14.  */
  15. def generateDimPackData(): Unit = {
  16.   val dimPackData = Seq(
  17.     (1, "RX", 20210101, 20211231),
  18.     (2, "RX", 20210101, 20211231),
  19.     (3, "OTC", 20210101, 20211231)
  20.   )
  21.  
  22.   val dimPackDF = spark.createDataFrame(dimPackData).toDF(
  23.     "pack_id", "basket_4_code", "day_id_from", "day_id_to"
  24.   )
  25.  
  26.   dimPackDF.createOrReplaceTempView("dim_pack")
  27.  
  28.   println("Wygenerowano tabelę dim_pack z 3 produktami")
  29. }
  30.  
  31. /**
  32.  * Generates test sales data and creates temporary table
  33.  */
  34. def generateSalesData(): Unit = {
  35.   // Używamy tylko krotek (tuples) - najbardziej niezawodne podejście
  36.  
  37.   // Dane dla dobrego sklepu jako krotki (tuples)
  38.   val goodShopData = Seq(
  39.     // Miesiąc 1
  40.     (1, 202101, 1, 101, 1, 20210115, 1),
  41.     (1, 202101, 2, 102, 1, 20210115, 2),
  42.     (1, 202101, 3, 103, 3, 20210115, null),
  43.    
  44.     // Miesiąc 2
  45.     (1, 202102, 1, 201, 1, 20210215, 1),
  46.     (1, 202102, 2, 202, 1, 20210215, 2),
  47.     (1, 202102, 3, 203, 3, 20210215, null),
  48.    
  49.     // Miesiąc 3
  50.     (1, 202103, 1, 301, 1, 20210315, 1),
  51.     (1, 202103, 2, 302, 1, 20210315, 2),
  52.     (1, 202103, 3, 303, 3, 20210315, null),
  53.    
  54.     // Miesiąc 4
  55.     (1, 202104, 1, 401, 1, 20210415, 1),
  56.     (1, 202104, 2, 402, 1, 20210415, 2),
  57.     (1, 202104, 3, 403, 3, 20210415, null)
  58.   )
  59.  
  60.   // Dane dla złego sklepu jako krotki (tuples)
  61.   val badShopData = Seq(
  62.     // Miesiąc 1 - dużo RX
  63.     (2, 202101, 101, 1001, 1, 20210115, 1),
  64.     (2, 202101, 102, 1002, 1, 20210115, 2),
  65.     (2, 202101, 103, 1003, 1, 20210115, 3),
  66.     (2, 202101, 104, 1004, 2, 20210115, 1),
  67.     (2, 202101, 105, 1005, 2, 20210115, 2),
  68.    
  69.     // Miesiąc 2 - mało RX
  70.     (2, 202102, 101, 2001, 3, 20210215, null),
  71.     (2, 202102, 102, 2002, 3, 20210215, null),
  72.     (2, 202102, 103, 2003, 3, 20210215, null),
  73.    
  74.     // Miesiąc 3 - znowu dużo RX
  75.     (2, 202103, 101, 3001, 1, 20210315, 1),
  76.     (2, 202103, 102, 3002, 1, 20210315, 2),
  77.     (2, 202103, 103, 3003, 1, 20210315, 3),
  78.     (2, 202103, 104, 3004, 2, 20210315, 1),
  79.     (2, 202103, 105, 3005, 2, 20210315, 2)
  80.    
  81.     // Miesiąc 4 - brak danych (celowo)
  82.   )
  83.  
  84.   // Łączymy dane
  85.   val allData = goodShopData ++ badShopData
  86.  
  87.   // Tworzymy DataFrame używając spark.createDataFrame - najbardziej niezawodna metoda
  88.   val salesDF = spark.createDataFrame(allData).toDF(
  89.     "shop_id", "month_id", "patient_id", "trn_id", "pack_id", "day_id", "prescriber_id"
  90.   )
  91.  
  92.   // Tworzymy tabelę tymczasową
  93.   salesDF.createOrReplaceTempView("lrx_sales")
  94.  
  95.   println(s"Wygenerowano dane sprzedaży z ${salesDF.count()} rekordami")
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement