Умножение значений в спецификации преобразования Jolt - PullRequest
1 голос
/ 29 мая 2020

Я ввел данные, как показано ниже. Если timeMeasurementUnitCode="DAY", то значение, которое мне нужно вычислить как value*24*60, если timeMeasurementUnitCode="HOUR", то значение value*60

Я вижу, что есть один аналогичный вариант использования, который люди ищу, the ticket is opened on Jul 17, 2019: https://github.com/bazaarvoice/jolt/issues/832

Проблема 832 кажется все еще открытой

Ввод:

{
  "freightCharacteristics": {
    "transitDuration": {
      "timeMeasurementUnitCode": "DAY",
      "value": 6
    },
    "loadingDuration": {
      "timeMeasurementUnitCode": "HOUR",
      "value": 6
    }
  }
}

Ожидаемый результат: на основе константы, представленной во входных данных как DAY или HOUR, мне нужно несколько no.of days*hours*minutes, чтобы достичь моих требований, как показано ниже.

{
  "transitDurationInMinutes" : 8640,
  "loadingDurationInMinutes" : 360
}

]

В соответствии с предложением @mattyb, я использовал функцию деления, чтобы достичь того, чего хотите добиться умножением, logi c обновляется, как показано ниже.

[
  {
    "operation": "shift",
    "spec": {
      "freightCharacteristics": {
        "transitDuration": {
          "timeMeasurementUnitCode": {
            "DAY": {
              "@(2,value)": "transitDurationInMinutes"
            },
            "*": {
              "@(2,value)": "transitDurationInMinutes"
            }
          }
        },
        "loadingDuration": {
          "timeMeasurementUnitCode": {
            "HOUR": {
              "@(2,value)": "loadingDurationInMinutes"
            },
            "*": {
              "@(2,value)": "loadingDurationInMinutes"
            }
          }
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "transitDurationInMinutes": "=divide(@(1,transitDurationInMinutes),0.00069444444)",
      "loadingDurationInMinutes": "=divide(@(1,loadingDurationInMinutes),0.01666666666)"
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "transitDurationInMinutes": "=toInteger",
      "loadingDurationInMinutes": "=toInteger"
    }
  }
]
...