SETUP

library(DBI)
library(RODBC)
library(dbplyr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:dbplyr':
## 
##     ident, sql
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(purrr)
library(DescTools)

con <- dbConnect(odbc::odbc(), "CNC_WOOD")

db <- odbcConnect("CNC_WOOD")
homagTbl <- sqlFetch(db, "dbo_HOMAG_FProd")

getBrand <- function(filePath) {
  mp4Location <- str_locate(pattern = "mp4", filePath)
  
  
  subpath <- substr(filePath, mp4Location[2] + 4, str_length(filePath))
  splitted <- strsplit(subpath, "\\\\")

  # unlist(
  #   strsplit(
  #     substr(
  #       filePath, 
  #       str_locate(
  #         pattern = "mp4", 
  #         filePath)[2] + 4, 
  #       str_length(filePath)), 
  #     "\\\\"))[1]
  
  brandNameInPath <- splitted
  # 
  # 
  # result <- switch(
  #   brandNameInPath,
  #   "dior_parfums" = "DIOR PARFUMS",
  #   "louis_vuitton" = "LOUIS VUITTON",
  #   "th" = "TOMMY HILFIGER",
  #   "Unknown"
  # )
}

2022 March

# Getting March month's data
March_2022 <- homagTbl %>%
  filter(Date >= '2022-03-01', Date <= '2022-03-31')

# To retrieve specific column data from March month
homagTbl %>%
    filter(Date >= '2022-03-01', Date <= '2022-03-31') %>% 
    select(Type)
##      Type
## 1   START
## 2     END
## 3   START
## 4     END
## 5   START
## 6     END
## 7   START
## 8     END
## 9   START
## 10    END
## 11  START
## 12    END
## 13  START
## 14    END
## 15  START
## 16    END
## 17  START
## 18    END
## 19  START
## 20    END
## 21  START
## 22    END
## 23  START
## 24    END
## 25  START
## 26    END
## 27  START
## 28    END
## 29  START
## 30    END
## 31  START
## 32    END
## 33  START
## 34  ABORT
## 35  START
## 36    END
## 37  START
## 38    END
## 39  START
## 40    END
## 41  START
## 42    END
## 43  START
## 44  ABORT
## 45  START
## 46  ABORT
## 47  START
## 48  ABORT
## 49  START
## 50  ABORT
## 51  START
## 52  ABORT
## 53  START
## 54    END
## 55  START
## 56    END
## 57  START
## 58    END
## 59  START
## 60    END
## 61  START
## 62    END
## 63  START
## 64    END
## 65  START
## 66    END
## 67  START
## 68    END
## 69  START
## 70    END
## 71  START
## 72    END
## 73  START
## 74    END
## 75  START
## 76  ABORT
## 77  START
## 78    END
## 79  START
## 80    END
## 81  START
## 82    END
## 83  START
## 84    END
## 85  START
## 86    END
## 87  START
## 88    END
## 89  START
## 90    END
## 91  START
## 92    END
## 93  START
## 94  ABORT
## 95  START
## 96    END
## 97  START
## 98    END
## 99  START
## 100   END
## 101 START
## 102   END
## 103 START
## 104   END
## 105 START
## 106   END
## 107 START
## 108   END
## 109 START
## 110   END
## 111 START
## 112   END
## 113 START
## 114   END
## 115 START
## 116   END
## 117 START
## 118   END
## 119 START
## 120   END
## 121 START
## 122   END
## 123 START
## 124   END
## 125 START
## 126   END
## 127 START
## 128   END
## 129 START
## 130   END
## 131 START
## 132   END
## 133 START
## 134   END
## 135 START
## 136   END
## 137 START
## 138   END
## 139 START
## 140 ABORT
## 141 START
## 142   END
## 143 START
## 144   END
## 145 START
## 146   END
## 147 START
## 148   END
## 149 START
## 150   END
## 151 START
## 152   END
## 153 START
## 154   END
## 155 START
## 156   END
## 157 START
## 158   END
## 159 START
## 160   END
## 161 START
## 162   END
## 163 START
## 164   END
## 165 START
## 166 START
## 167   END
## 168   END
## 169 START
## 170   END
## 171 START
## 172   END
## 173 START
## 174   END
## 175 START
## 176 ABORT
## 177 START
## 178   END
## 179 START
## 180   END
## 181 START
## 182   END
## 183 START
## 184   END
## 185 START
## 186   END
## 187 START
## 188   END
## 189 START
## 190   END
## 191 START
## 192   END
## 193 START
## 194 ABORT
## 195 START
## 196   END
## 197 START
## 198   END
## 199 START
## 200   END
## 201 START
## 202   END
## 203 START
## 204   END
## 205 START
## 206   END
## 207 START
## 208   END
## 209 START
## 210 ABORT
## 211 START
## 212   END
## 213 START
## 214   END
## 215 START
## 216   END
## 217 START
## 218   END
## 219 START
## 220   END
## 221 START
## 222   END
## 223 START
## 224   END
## 225 START
## 226   END
## 227 START
## 228   END
## 229 START
## 230   END
## 231 START
## 232   END
## 233 START
## 234   END
## 235 START
## 236   END
## 237 START
## 238   END
## 239 START
## 240   END
## 241 START
## 242   END
## 243 START
## 244   END
## 245 START
## 246   END
## 247 START
## 248   END
## 249 START
## 250   END
## 251 START
## 252   END
## 253 START
## 254   END
## 255 START
## 256   END
## 257 START
## 258   END
## 259 START
## 260   END
## 261 START
## 262   END
## 263 START
## 264   END
## 265 START
## 266   END
## 267 START
## 268   END
## 269 START
## 270   END
## 271 START
## 272   END
## 273 START
## 274   END
## 275 START
## 276   END
## 277 START
## 278   END
## 279 START
## 280   END
## 281 START
## 282   END
## 283 START
## 284   END
## 285 START
## 286 ABORT
## 287 START
## 288   END
## 289 START
## 290   END
## 291 START
## 292   END
## 293 START
## 294   END
## 295 START
## 296   END
## 297 START
## 298   END
## 299 START
## 300   END
## 301 START
## 302   END
## 303 START
## 304   END
## 305 START
## 306   END
## 307 START
## 308   END
## 309 START
## 310   END
## 311 START
## 312   END
## 313 START
## 314   END
## 315 START
## 316   END
## 317 START
## 318   END
## 319 START
## 320   END
## 321 START
## 322   END
## 323 START
## 324   END
## 325 START
## 326   END
## 327 START
## 328   END
## 329 START
## 330   END
## 331 START
## 332   END
## 333 START
## 334   END
## 335 START
## 336   END
## 337 START
## 338   END
## 339 START
## 340   END
## 341 START
## 342   END
## 343 START
## 344   END
## 345 START
## 346   END
## 347 START
## 348   END
## 349 START
## 350   END
## 351 START
## 352   END
## 353 START
## 354   END
## 355 START
## 356   END
## 357 START
## 358   END
## 359 START
## 360   END
## 361 START
## 362   END
## 363 START
## 364   END
## 365 START
## 366   END
## 367 START
## 368   END
## 369 START
## 370   END
## 371 START
## 372   END
## 373 START
## 374   END
## 375 START
## 376   END
## 377 START
## 378   END
## 379 START
## 380   END
## 381 START
## 382   END
## 383 START
## 384   END
## 385 START
## 386   END
## 387 START
## 388   END
## 389 START
## 390   END
## 391 START
## 392   END
## 393 START
## 394   END
## 395 START
## 396   END
## 397 START
## 398   END
## 399 START
## 400   END
## 401 START
## 402   END
## 403 START
## 404   END
## 405 START
## 406   END
## 407 START
## 408   END
## 409 START
## 410   END
## 411 START
## 412   END
## 413 START
## 414   END
## 415 START
## 416   END
## 417 START
## 418   END
## 419 START
## 420   END
## 421 START
## 422   END
## 423 START
## 424   END
## 425 START
## 426   END
## 427 START
## 428   END
## 429 START
## 430   END
## 431 START
## 432   END
## 433 START
## 434   END
## 435 START
## 436   END
## 437 START
## 438   END
## 439 START
## 440   END
## 441 START
## 442   END
## 443 START
## 444   END
## 445 START
## 446   END
## 447 START
## 448   END
## 449 START
## 450   END
## 451 START
## 452   END
## 453 START
## 454 ABORT
## 455 START
## 456 ABORT
## 457 START
## 458   END
## 459 START
## 460   END
## 461 START
## 462   END
## 463 START
## 464   END
## 465 START
## 466   END
## 467 START
## 468   END
## 469 START
## 470   END
## 471 START
## 472   END
## 473 START
## 474   END
## 475 START
## 476   END
## 477 START
## 478   END
## 479 START
## 480   END
## 481 START
## 482   END
## 483 START
## 484   END
## 485 START
## 486   END
## 487 START
## 488   END
## 489 START
## 490   END
## 491 START
## 492   END
## 493 START
## 494   END
## 495 START
## 496   END
## 497 START
## 498   END
## 499 START
## 500   END
## 501 START
## 502   END
## 503 START
## 504   END
## 505 START
## 506   END
## 507 START
## 508 ABORT
## 509 START
## 510   END
## 511 START
## 512   END
## 513 START
## 514 ABORT
## 515 START
## 516 ABORT
## 517 START
## 518   END
## 519 START
## 520   END
## 521 START
## 522 ABORT
## 523 START
## 524   END
## 525 START
## 526   END
## 527 START
## 528   END
## 529 START
## 530   END
## 531 START
## 532   END
## 533 START
## 534   END
## 535 START
## 536   END
## 537 START
## 538   END
## 539 START
## 540   END
## 541 START
## 542   END
## 543 START
## 544   END
## 545 START
## 546   END
## 547 START
## 548   END
## 549 START
## 550   END
## 551 START
## 552   END
## 553 START
## 554   END
## 555 START
## 556   END
## 557 START
## 558   END
## 559 START
## 560   END
## 561 START
## 562   END
## 563 START
## 564   END
## 565 START
## 566   END
## 567 START
## 568   END
## 569 START
## 570   END
## 571 START
## 572   END
## 573 START
## 574   END
## 575 START
## 576   END
## 577 START
## 578   END
# Odd week morning - Nikita shift -> 1
# Even week morning - Sigitas shift -> 2


# Morning
MStartTime <- hms::as_hms("06:00:00")
MEndTime <- hms::as_hms("14:30:00")

#Evening
EStartTime <- hms::as_hms("14:30:00")
EEndTime <- hms::as_hms("23:10:00")

# Getting Week
March_2022 <- March_2022 %>%
  mutate(Week = as.integer(strftime(Date, format = "%V")))

# Getting Shift by week and working hours
March_2022 <- March_2022 %>%
  mutate(Shift = if_else(
    IsOdd(Week),
    if_else(between(hms::as_hms(Time), MStartTime, MEndTime), 1, 2),
    if_else(between(hms::as_hms(Time), MStartTime, MEndTime), 2, 1)
  ))
## Warning: between() called on numeric vector with S3 class
## between() called on numeric vector with S3 class
# Getting Brand
March_2022 <- March_2022 %>%
  rowwise() %>%
  mutate(Brand = switch(
     unlist(map(strsplit(Name, split = "\\\\"), 7)),
     "dior_parfums" = "DIOR PARFUMS",
     "louis_vuitton" = "LOUIS VUITTON",
     "th" = "TOMMY HILFIGER",
     "Unknown"))

# Getting ProductId
March_2022 <- March_2022 %>%
  rowwise() %>%
  mutate(ProductId = switch(
    unlist(map(strsplit(Name, split = "\\\\"), 8)),
    "_th50" = unlist(map(strsplit(Name, split = "\\\\"), 9)), # Use regex to fix all _th** with this line
    unlist(map(strsplit(Name, split = "\\\\"), 8))
  ))

# Getting PartNumber
March_2022 <- March_2022 %>%
  mutate(ProgramName = strsplit(Name, split = "\\\\")[[1]][[length(strsplit(Name, split = "\\\\")[[1]])]])


# Arrange by MachineID, DateTime and Type, make it tibble (for lead and lag functions)
March_2022 <- tibble(arrange(March_2022, MachineID, DateTime, Type))


# Get "START" type observations
Start_March_2022 <- March_2022 %>%
  filter(Type == "START")

# Get "END" type observations
End_March_2022 <- March_2022 %>%
  filter(Type != "START") %>%
  select(Type, DateTime)


# Check whether "START" type observations count is equal to half of total observations count
count(Start_March_2022) == count(End_March_2022)
##         n
## [1,] TRUE
# Add end time or abort time for each observation.
Start_March_2022$StopTime = End_March_2022$DateTime
Start_March_2022$StopType = End_March_2022$Type









# Base table example
# ProductId PartNumber Brand StartTime EndTime AbortTime IdleTime MchTime MfcTime Shift Machine


# 1.1 Table example
# Shift Machine MachinedPartsTableId
# 1     10      Id1
# 2     10      Id2
# 1     11      Id3
# 2     11      Id4




# So after that create separate related Tables, which will have data, that I will need

# I need my workbook....
# So what do I need to get?
  # Performance calculations --> Priority
    # Performance difference between shifts --> 1.
      # 1.1. Get total machined parts for each shift
      # 1.2. Top5, Min5, Average time for machined parts for each shift --> Another table
      # 1.3. Machined brands divided by percentage
      # 1.4. Total Idle time for each shift
      
    # Performance difference between selected productId's mfc time --> 2.
    # Performance difference between machines --> 3.
    # Performance difference between selected time period --> 4.
    # Total performance growth --> 5.

  # Tools for pricing department --> For presentation
    # Product Id Total mfc time (idle time + working hours)
    # Potential price for electricity
    # Potential product Id mfc time in % day shift / % night shift --> for final price
    # Product Id cnc wood mfc auto total price ???
    # Machine depreciation
  
  
  # Tools for planning department --> For presentation
    # Autodesk process analysis
    # Average approximate time to finish 
    # Potential mfc start / finish date for product Id

R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.

When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:

summary(cars)
##      speed           dist       
##  Min.   : 4.0   Min.   :  2.00  
##  1st Qu.:12.0   1st Qu.: 26.00  
##  Median :15.0   Median : 36.00  
##  Mean   :15.4   Mean   : 42.98  
##  3rd Qu.:19.0   3rd Qu.: 56.00  
##  Max.   :25.0   Max.   :120.00

Including Plots

You can also embed plots, for example:

Note that the echo = FALSE parameter was added to the code chunk to prevent printing of the R code that generated the plot.