Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Generates test panel data with two shops and creates a temporary table
- */
- def generatePanelData(): Unit = {
- val panelData = Seq(1, 2)
- val panelDF = spark.createDataFrame(panelData.map(Tuple1(_))).toDF("shop_id")
- panelDF.createOrReplaceTempView("lrx_panel")
- println("Wygenerowano tabelę lrx_panel z 2 sklepami")
- }
- /**
- * Generates test product data and creates a temporary table
- */
- def generateDimPackData(): Unit = {
- val dimPackData = Seq(
- (1, "RX", 20210101, 20211231),
- (2, "RX", 20210101, 20211231),
- (3, "OTC", 20210101, 20211231)
- )
- val dimPackDF = spark.createDataFrame(dimPackData).toDF(
- "pack_id", "basket_4_code", "day_id_from", "day_id_to"
- )
- dimPackDF.createOrReplaceTempView("dim_pack")
- println("Wygenerowano tabelę dim_pack z 3 produktami")
- }
- /**
- * Generates test sales data and creates temporary table
- */
- def generateSalesData(): Unit = {
- // Używamy tylko krotek (tuples) - najbardziej niezawodne podejście
- // Dane dla dobrego sklepu jako krotki (tuples)
- val goodShopData = Seq(
- // Miesiąc 1
- (1, 202101, 1, 101, 1, 20210115, 1),
- (1, 202101, 2, 102, 1, 20210115, 2),
- (1, 202101, 3, 103, 3, 20210115, null),
- // Miesiąc 2
- (1, 202102, 1, 201, 1, 20210215, 1),
- (1, 202102, 2, 202, 1, 20210215, 2),
- (1, 202102, 3, 203, 3, 20210215, null),
- // Miesiąc 3
- (1, 202103, 1, 301, 1, 20210315, 1),
- (1, 202103, 2, 302, 1, 20210315, 2),
- (1, 202103, 3, 303, 3, 20210315, null),
- // Miesiąc 4
- (1, 202104, 1, 401, 1, 20210415, 1),
- (1, 202104, 2, 402, 1, 20210415, 2),
- (1, 202104, 3, 403, 3, 20210415, null)
- )
- // Dane dla złego sklepu jako krotki (tuples)
- val badShopData = Seq(
- // Miesiąc 1 - dużo RX
- (2, 202101, 101, 1001, 1, 20210115, 1),
- (2, 202101, 102, 1002, 1, 20210115, 2),
- (2, 202101, 103, 1003, 1, 20210115, 3),
- (2, 202101, 104, 1004, 2, 20210115, 1),
- (2, 202101, 105, 1005, 2, 20210115, 2),
- // Miesiąc 2 - mało RX
- (2, 202102, 101, 2001, 3, 20210215, null),
- (2, 202102, 102, 2002, 3, 20210215, null),
- (2, 202102, 103, 2003, 3, 20210215, null),
- // Miesiąc 3 - znowu dużo RX
- (2, 202103, 101, 3001, 1, 20210315, 1),
- (2, 202103, 102, 3002, 1, 20210315, 2),
- (2, 202103, 103, 3003, 1, 20210315, 3),
- (2, 202103, 104, 3004, 2, 20210315, 1),
- (2, 202103, 105, 3005, 2, 20210315, 2)
- // Miesiąc 4 - brak danych (celowo)
- )
- // Łączymy dane
- val allData = goodShopData ++ badShopData
- // Tworzymy DataFrame używając spark.createDataFrame - najbardziej niezawodna metoda
- val salesDF = spark.createDataFrame(allData).toDF(
- "shop_id", "month_id", "patient_id", "trn_id", "pack_id", "day_id", "prescriber_id"
- )
- // Tworzymy tabelę tymczasową
- salesDF.createOrReplaceTempView("lrx_sales")
- println(s"Wygenerowano dane sprzedaży z ${salesDF.count()} rekordami")
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement