{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Glue.Types.MLTransform
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Glue.Types.MLTransform where

import qualified Amazonka.Core as Core
import Amazonka.Glue.Types.EvaluationMetrics
import Amazonka.Glue.Types.GlueTable
import Amazonka.Glue.Types.SchemaColumn
import Amazonka.Glue.Types.TransformEncryption
import Amazonka.Glue.Types.TransformParameters
import Amazonka.Glue.Types.TransformStatusType
import Amazonka.Glue.Types.WorkerType
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | A structure for a machine learning transform.
--
-- /See:/ 'newMLTransform' smart constructor.
data MLTransform = MLTransform'
  { -- | The current status of the machine learning transform.
    MLTransform -> Maybe TransformStatusType
status :: Prelude.Maybe TransformStatusType,
    -- | The number of workers of a defined @workerType@ that are allocated when
    -- a task of the transform runs.
    --
    -- If @WorkerType@ is set, then @NumberOfWorkers@ is required (and vice
    -- versa).
    MLTransform -> Maybe Int
numberOfWorkers :: Prelude.Maybe Prelude.Int,
    -- | A timestamp. The last point in time when this machine learning transform
    -- was modified.
    MLTransform -> Maybe POSIX
lastModifiedOn :: Prelude.Maybe Core.POSIX,
    -- | A count identifier for the labeling files generated by Glue for this
    -- transform. As you create a better transform, you can iteratively
    -- download, label, and upload the labeling file.
    MLTransform -> Maybe Int
labelCount :: Prelude.Maybe Prelude.Int,
    -- | The type of predefined worker that is allocated when a task of this
    -- transform runs. Accepts a value of Standard, G.1X, or G.2X.
    --
    -- -   For the @Standard@ worker type, each worker provides 4 vCPU, 16 GB
    --     of memory and a 50GB disk, and 2 executors per worker.
    --
    -- -   For the @G.1X@ worker type, each worker provides 4 vCPU, 16 GB of
    --     memory and a 64GB disk, and 1 executor per worker.
    --
    -- -   For the @G.2X@ worker type, each worker provides 8 vCPU, 32 GB of
    --     memory and a 128GB disk, and 1 executor per worker.
    --
    -- @MaxCapacity@ is a mutually exclusive option with @NumberOfWorkers@ and
    -- @WorkerType@.
    --
    -- -   If either @NumberOfWorkers@ or @WorkerType@ is set, then
    --     @MaxCapacity@ cannot be set.
    --
    -- -   If @MaxCapacity@ is set then neither @NumberOfWorkers@ or
    --     @WorkerType@ can be set.
    --
    -- -   If @WorkerType@ is set, then @NumberOfWorkers@ is required (and vice
    --     versa).
    --
    -- -   @MaxCapacity@ and @NumberOfWorkers@ must both be at least 1.
    MLTransform -> Maybe WorkerType
workerType :: Prelude.Maybe WorkerType,
    -- | A list of Glue table definitions used by the transform.
    MLTransform -> Maybe [GlueTable]
inputRecordTables :: Prelude.Maybe [GlueTable],
    -- | This value determines which version of Glue this machine learning
    -- transform is compatible with. Glue 1.0 is recommended for most
    -- customers. If the value is not set, the Glue compatibility defaults to
    -- Glue 0.9. For more information, see
    -- <https://docs.aws.amazon.com/glue/latest/dg/release-notes.html#release-notes-versions Glue Versions>
    -- in the developer guide.
    MLTransform -> Maybe Text
glueVersion :: Prelude.Maybe Prelude.Text,
    -- | An @EvaluationMetrics@ object. Evaluation metrics provide an estimate of
    -- the quality of your machine learning transform.
    MLTransform -> Maybe EvaluationMetrics
evaluationMetrics :: Prelude.Maybe EvaluationMetrics,
    -- | A map of key-value pairs representing the columns and data types that
    -- this transform can run against. Has an upper bound of 100 columns.
    MLTransform -> Maybe [SchemaColumn]
schema :: Prelude.Maybe [SchemaColumn],
    -- | The name or Amazon Resource Name (ARN) of the IAM role with the required
    -- permissions. The required permissions include both Glue service role
    -- permissions to Glue resources, and Amazon S3 permissions required by the
    -- transform.
    --
    -- -   This role needs Glue service role permissions to allow access to
    --     resources in Glue. See
    --     <https://docs.aws.amazon.com/glue/latest/dg/attach-policy-iam-user.html Attach a Policy to IAM Users That Access Glue>.
    --
    -- -   This role needs permission to your Amazon Simple Storage Service
    --     (Amazon S3) sources, targets, temporary directory, scripts, and any
    --     libraries used by the task run for this transform.
    MLTransform -> Maybe Text
role' :: Prelude.Maybe Prelude.Text,
    -- | A user-defined name for the machine learning transform. Names are not
    -- guaranteed unique and can be changed at any time.
    MLTransform -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | A @TransformParameters@ object. You can use parameters to tune
    -- (customize) the behavior of the machine learning transform by specifying
    -- what data it learns from and your preference on various tradeoffs (such
    -- as precious vs. recall, or accuracy vs. cost).
    MLTransform -> Maybe TransformParameters
parameters :: Prelude.Maybe TransformParameters,
    -- | The maximum number of times to retry after an @MLTaskRun@ of the machine
    -- learning transform fails.
    MLTransform -> Maybe Int
maxRetries :: Prelude.Maybe Prelude.Int,
    -- | The number of Glue data processing units (DPUs) that are allocated to
    -- task runs for this transform. You can allocate from 2 to 100 DPUs; the
    -- default is 10. A DPU is a relative measure of processing power that
    -- consists of 4 vCPUs of compute capacity and 16 GB of memory. For more
    -- information, see the
    -- <http://aws.amazon.com/glue/pricing/ Glue pricing page>.
    --
    -- @MaxCapacity@ is a mutually exclusive option with @NumberOfWorkers@ and
    -- @WorkerType@.
    --
    -- -   If either @NumberOfWorkers@ or @WorkerType@ is set, then
    --     @MaxCapacity@ cannot be set.
    --
    -- -   If @MaxCapacity@ is set then neither @NumberOfWorkers@ or
    --     @WorkerType@ can be set.
    --
    -- -   If @WorkerType@ is set, then @NumberOfWorkers@ is required (and vice
    --     versa).
    --
    -- -   @MaxCapacity@ and @NumberOfWorkers@ must both be at least 1.
    --
    -- When the @WorkerType@ field is set to a value other than @Standard@, the
    -- @MaxCapacity@ field is set automatically and becomes read-only.
    MLTransform -> Maybe Double
maxCapacity :: Prelude.Maybe Prelude.Double,
    -- | The timeout in minutes of the machine learning transform.
    MLTransform -> Maybe Natural
timeout :: Prelude.Maybe Prelude.Natural,
    -- | The encryption-at-rest settings of the transform that apply to accessing
    -- user data. Machine learning transforms can access user data encrypted in
    -- Amazon S3 using KMS.
    MLTransform -> Maybe TransformEncryption
transformEncryption :: Prelude.Maybe TransformEncryption,
    -- | A user-defined, long-form description text for the machine learning
    -- transform. Descriptions are not guaranteed to be unique and can be
    -- changed at any time.
    MLTransform -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | A timestamp. The time and date that this machine learning transform was
    -- created.
    MLTransform -> Maybe POSIX
createdOn :: Prelude.Maybe Core.POSIX,
    -- | The unique transform ID that is generated for the machine learning
    -- transform. The ID is guaranteed to be unique and does not change.
    MLTransform -> Maybe Text
transformId :: Prelude.Maybe Prelude.Text
  }
  deriving (MLTransform -> MLTransform -> Bool
(MLTransform -> MLTransform -> Bool)
-> (MLTransform -> MLTransform -> Bool) -> Eq MLTransform
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MLTransform -> MLTransform -> Bool
$c/= :: MLTransform -> MLTransform -> Bool
== :: MLTransform -> MLTransform -> Bool
$c== :: MLTransform -> MLTransform -> Bool
Prelude.Eq, ReadPrec [MLTransform]
ReadPrec MLTransform
Int -> ReadS MLTransform
ReadS [MLTransform]
(Int -> ReadS MLTransform)
-> ReadS [MLTransform]
-> ReadPrec MLTransform
-> ReadPrec [MLTransform]
-> Read MLTransform
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MLTransform]
$creadListPrec :: ReadPrec [MLTransform]
readPrec :: ReadPrec MLTransform
$creadPrec :: ReadPrec MLTransform
readList :: ReadS [MLTransform]
$creadList :: ReadS [MLTransform]
readsPrec :: Int -> ReadS MLTransform
$creadsPrec :: Int -> ReadS MLTransform
Prelude.Read, Int -> MLTransform -> ShowS
[MLTransform] -> ShowS
MLTransform -> String
(Int -> MLTransform -> ShowS)
-> (MLTransform -> String)
-> ([MLTransform] -> ShowS)
-> Show MLTransform
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MLTransform] -> ShowS
$cshowList :: [MLTransform] -> ShowS
show :: MLTransform -> String
$cshow :: MLTransform -> String
showsPrec :: Int -> MLTransform -> ShowS
$cshowsPrec :: Int -> MLTransform -> ShowS
Prelude.Show, (forall x. MLTransform -> Rep MLTransform x)
-> (forall x. Rep MLTransform x -> MLTransform)
-> Generic MLTransform
forall x. Rep MLTransform x -> MLTransform
forall x. MLTransform -> Rep MLTransform x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep MLTransform x -> MLTransform
$cfrom :: forall x. MLTransform -> Rep MLTransform x
Prelude.Generic)

-- |
-- Create a value of 'MLTransform' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'status', 'mLTransform_status' - The current status of the machine learning transform.
--
-- 'numberOfWorkers', 'mLTransform_numberOfWorkers' - The number of workers of a defined @workerType@ that are allocated when
-- a task of the transform runs.
--
-- If @WorkerType@ is set, then @NumberOfWorkers@ is required (and vice
-- versa).
--
-- 'lastModifiedOn', 'mLTransform_lastModifiedOn' - A timestamp. The last point in time when this machine learning transform
-- was modified.
--
-- 'labelCount', 'mLTransform_labelCount' - A count identifier for the labeling files generated by Glue for this
-- transform. As you create a better transform, you can iteratively
-- download, label, and upload the labeling file.
--
-- 'workerType', 'mLTransform_workerType' - The type of predefined worker that is allocated when a task of this
-- transform runs. Accepts a value of Standard, G.1X, or G.2X.
--
-- -   For the @Standard@ worker type, each worker provides 4 vCPU, 16 GB
--     of memory and a 50GB disk, and 2 executors per worker.
--
-- -   For the @G.1X@ worker type, each worker provides 4 vCPU, 16 GB of
--     memory and a 64GB disk, and 1 executor per worker.
--
-- -   For the @G.2X@ worker type, each worker provides 8 vCPU, 32 GB of
--     memory and a 128GB disk, and 1 executor per worker.
--
-- @MaxCapacity@ is a mutually exclusive option with @NumberOfWorkers@ and
-- @WorkerType@.
--
-- -   If either @NumberOfWorkers@ or @WorkerType@ is set, then
--     @MaxCapacity@ cannot be set.
--
-- -   If @MaxCapacity@ is set then neither @NumberOfWorkers@ or
--     @WorkerType@ can be set.
--
-- -   If @WorkerType@ is set, then @NumberOfWorkers@ is required (and vice
--     versa).
--
-- -   @MaxCapacity@ and @NumberOfWorkers@ must both be at least 1.
--
-- 'inputRecordTables', 'mLTransform_inputRecordTables' - A list of Glue table definitions used by the transform.
--
-- 'glueVersion', 'mLTransform_glueVersion' - This value determines which version of Glue this machine learning
-- transform is compatible with. Glue 1.0 is recommended for most
-- customers. If the value is not set, the Glue compatibility defaults to
-- Glue 0.9. For more information, see
-- <https://docs.aws.amazon.com/glue/latest/dg/release-notes.html#release-notes-versions Glue Versions>
-- in the developer guide.
--
-- 'evaluationMetrics', 'mLTransform_evaluationMetrics' - An @EvaluationMetrics@ object. Evaluation metrics provide an estimate of
-- the quality of your machine learning transform.
--
-- 'schema', 'mLTransform_schema' - A map of key-value pairs representing the columns and data types that
-- this transform can run against. Has an upper bound of 100 columns.
--
-- 'role'', 'mLTransform_role' - The name or Amazon Resource Name (ARN) of the IAM role with the required
-- permissions. The required permissions include both Glue service role
-- permissions to Glue resources, and Amazon S3 permissions required by the
-- transform.
--
-- -   This role needs Glue service role permissions to allow access to
--     resources in Glue. See
--     <https://docs.aws.amazon.com/glue/latest/dg/attach-policy-iam-user.html Attach a Policy to IAM Users That Access Glue>.
--
-- -   This role needs permission to your Amazon Simple Storage Service
--     (Amazon S3) sources, targets, temporary directory, scripts, and any
--     libraries used by the task run for this transform.
--
-- 'name', 'mLTransform_name' - A user-defined name for the machine learning transform. Names are not
-- guaranteed unique and can be changed at any time.
--
-- 'parameters', 'mLTransform_parameters' - A @TransformParameters@ object. You can use parameters to tune
-- (customize) the behavior of the machine learning transform by specifying
-- what data it learns from and your preference on various tradeoffs (such
-- as precious vs. recall, or accuracy vs. cost).
--
-- 'maxRetries', 'mLTransform_maxRetries' - The maximum number of times to retry after an @MLTaskRun@ of the machine
-- learning transform fails.
--
-- 'maxCapacity', 'mLTransform_maxCapacity' - The number of Glue data processing units (DPUs) that are allocated to
-- task runs for this transform. You can allocate from 2 to 100 DPUs; the
-- default is 10. A DPU is a relative measure of processing power that
-- consists of 4 vCPUs of compute capacity and 16 GB of memory. For more
-- information, see the
-- <http://aws.amazon.com/glue/pricing/ Glue pricing page>.
--
-- @MaxCapacity@ is a mutually exclusive option with @NumberOfWorkers@ and
-- @WorkerType@.
--
-- -   If either @NumberOfWorkers@ or @WorkerType@ is set, then
--     @MaxCapacity@ cannot be set.
--
-- -   If @MaxCapacity@ is set then neither @NumberOfWorkers@ or
--     @WorkerType@ can be set.
--
-- -   If @WorkerType@ is set, then @NumberOfWorkers@ is required (and vice
--     versa).
--
-- -   @MaxCapacity@ and @NumberOfWorkers@ must both be at least 1.
--
-- When the @WorkerType@ field is set to a value other than @Standard@, the
-- @MaxCapacity@ field is set automatically and becomes read-only.
--
-- 'timeout', 'mLTransform_timeout' - The timeout in minutes of the machine learning transform.
--
-- 'transformEncryption', 'mLTransform_transformEncryption' - The encryption-at-rest settings of the transform that apply to accessing
-- user data. Machine learning transforms can access user data encrypted in
-- Amazon S3 using KMS.
--
-- 'description', 'mLTransform_description' - A user-defined, long-form description text for the machine learning
-- transform. Descriptions are not guaranteed to be unique and can be
-- changed at any time.
--
-- 'createdOn', 'mLTransform_createdOn' - A timestamp. The time and date that this machine learning transform was
-- created.
--
-- 'transformId', 'mLTransform_transformId' - The unique transform ID that is generated for the machine learning
-- transform. The ID is guaranteed to be unique and does not change.
newMLTransform ::
  MLTransform
newMLTransform :: MLTransform
newMLTransform =
  MLTransform' :: Maybe TransformStatusType
-> Maybe Int
-> Maybe POSIX
-> Maybe Int
-> Maybe WorkerType
-> Maybe [GlueTable]
-> Maybe Text
-> Maybe EvaluationMetrics
-> Maybe [SchemaColumn]
-> Maybe Text
-> Maybe Text
-> Maybe TransformParameters
-> Maybe Int
-> Maybe Double
-> Maybe Natural
-> Maybe TransformEncryption
-> Maybe Text
-> Maybe POSIX
-> Maybe Text
-> MLTransform
MLTransform'
    { $sel:status:MLTransform' :: Maybe TransformStatusType
status = Maybe TransformStatusType
forall a. Maybe a
Prelude.Nothing,
      $sel:numberOfWorkers:MLTransform' :: Maybe Int
numberOfWorkers = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:lastModifiedOn:MLTransform' :: Maybe POSIX
lastModifiedOn = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:labelCount:MLTransform' :: Maybe Int
labelCount = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:workerType:MLTransform' :: Maybe WorkerType
workerType = Maybe WorkerType
forall a. Maybe a
Prelude.Nothing,
      $sel:inputRecordTables:MLTransform' :: Maybe [GlueTable]
inputRecordTables = Maybe [GlueTable]
forall a. Maybe a
Prelude.Nothing,
      $sel:glueVersion:MLTransform' :: Maybe Text
glueVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:evaluationMetrics:MLTransform' :: Maybe EvaluationMetrics
evaluationMetrics = Maybe EvaluationMetrics
forall a. Maybe a
Prelude.Nothing,
      $sel:schema:MLTransform' :: Maybe [SchemaColumn]
schema = Maybe [SchemaColumn]
forall a. Maybe a
Prelude.Nothing,
      $sel:role':MLTransform' :: Maybe Text
role' = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:name:MLTransform' :: Maybe Text
name = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:parameters:MLTransform' :: Maybe TransformParameters
parameters = Maybe TransformParameters
forall a. Maybe a
Prelude.Nothing,
      $sel:maxRetries:MLTransform' :: Maybe Int
maxRetries = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:maxCapacity:MLTransform' :: Maybe Double
maxCapacity = Maybe Double
forall a. Maybe a
Prelude.Nothing,
      $sel:timeout:MLTransform' :: Maybe Natural
timeout = Maybe Natural
forall a. Maybe a
Prelude.Nothing,
      $sel:transformEncryption:MLTransform' :: Maybe TransformEncryption
transformEncryption = Maybe TransformEncryption
forall a. Maybe a
Prelude.Nothing,
      $sel:description:MLTransform' :: Maybe Text
description = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:createdOn:MLTransform' :: Maybe POSIX
createdOn = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:transformId:MLTransform' :: Maybe Text
transformId = Maybe Text
forall a. Maybe a
Prelude.Nothing
    }

-- | The current status of the machine learning transform.
mLTransform_status :: Lens.Lens' MLTransform (Prelude.Maybe TransformStatusType)
mLTransform_status :: (Maybe TransformStatusType -> f (Maybe TransformStatusType))
-> MLTransform -> f MLTransform
mLTransform_status = (MLTransform -> Maybe TransformStatusType)
-> (MLTransform -> Maybe TransformStatusType -> MLTransform)
-> Lens
     MLTransform
     MLTransform
     (Maybe TransformStatusType)
     (Maybe TransformStatusType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MLTransform' {Maybe TransformStatusType
status :: Maybe TransformStatusType
$sel:status:MLTransform' :: MLTransform -> Maybe TransformStatusType
status} -> Maybe TransformStatusType
status) (\s :: MLTransform
s@MLTransform' {} Maybe TransformStatusType
a -> MLTransform
s {$sel:status:MLTransform' :: Maybe TransformStatusType
status = Maybe TransformStatusType
a} :: MLTransform)

-- | The number of workers of a defined @workerType@ that are allocated when
-- a task of the transform runs.
--
-- If @WorkerType@ is set, then @NumberOfWorkers@ is required (and vice
-- versa).
mLTransform_numberOfWorkers :: Lens.Lens' MLTransform (Prelude.Maybe Prelude.Int)
mLTransform_numberOfWorkers :: (Maybe Int -> f (Maybe Int)) -> MLTransform -> f MLTransform
mLTransform_numberOfWorkers = (MLTransform -> Maybe Int)
-> (MLTransform -> Maybe Int -> MLTransform)
-> Lens MLTransform MLTransform (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MLTransform' {Maybe Int
numberOfWorkers :: Maybe Int
$sel:numberOfWorkers:MLTransform' :: MLTransform -> Maybe Int
numberOfWorkers} -> Maybe Int
numberOfWorkers) (\s :: MLTransform
s@MLTransform' {} Maybe Int
a -> MLTransform
s {$sel:numberOfWorkers:MLTransform' :: Maybe Int
numberOfWorkers = Maybe Int
a} :: MLTransform)

-- | A timestamp. The last point in time when this machine learning transform
-- was modified.
mLTransform_lastModifiedOn :: Lens.Lens' MLTransform (Prelude.Maybe Prelude.UTCTime)
mLTransform_lastModifiedOn :: (Maybe UTCTime -> f (Maybe UTCTime))
-> MLTransform -> f MLTransform
mLTransform_lastModifiedOn = (MLTransform -> Maybe POSIX)
-> (MLTransform -> Maybe POSIX -> MLTransform)
-> Lens MLTransform MLTransform (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MLTransform' {Maybe POSIX
lastModifiedOn :: Maybe POSIX
$sel:lastModifiedOn:MLTransform' :: MLTransform -> Maybe POSIX
lastModifiedOn} -> Maybe POSIX
lastModifiedOn) (\s :: MLTransform
s@MLTransform' {} Maybe POSIX
a -> MLTransform
s {$sel:lastModifiedOn:MLTransform' :: Maybe POSIX
lastModifiedOn = Maybe POSIX
a} :: MLTransform) ((Maybe POSIX -> f (Maybe POSIX)) -> MLTransform -> f MLTransform)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> MLTransform
-> f MLTransform
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | A count identifier for the labeling files generated by Glue for this
-- transform. As you create a better transform, you can iteratively
-- download, label, and upload the labeling file.
mLTransform_labelCount :: Lens.Lens' MLTransform (Prelude.Maybe Prelude.Int)
mLTransform_labelCount :: (Maybe Int -> f (Maybe Int)) -> MLTransform -> f MLTransform
mLTransform_labelCount = (MLTransform -> Maybe Int)
-> (MLTransform -> Maybe Int -> MLTransform)
-> Lens MLTransform MLTransform (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MLTransform' {Maybe Int
labelCount :: Maybe Int
$sel:labelCount:MLTransform' :: MLTransform -> Maybe Int
labelCount} -> Maybe Int
labelCount) (\s :: MLTransform
s@MLTransform' {} Maybe Int
a -> MLTransform
s {$sel:labelCount:MLTransform' :: Maybe Int
labelCount = Maybe Int
a} :: MLTransform)

-- | The type of predefined worker that is allocated when a task of this
-- transform runs. Accepts a value of Standard, G.1X, or G.2X.
--
-- -   For the @Standard@ worker type, each worker provides 4 vCPU, 16 GB
--     of memory and a 50GB disk, and 2 executors per worker.
--
-- -   For the @G.1X@ worker type, each worker provides 4 vCPU, 16 GB of
--     memory and a 64GB disk, and 1 executor per worker.
--
-- -   For the @G.2X@ worker type, each worker provides 8 vCPU, 32 GB of
--     memory and a 128GB disk, and 1 executor per worker.
--
-- @MaxCapacity@ is a mutually exclusive option with @NumberOfWorkers@ and
-- @WorkerType@.
--
-- -   If either @NumberOfWorkers@ or @WorkerType@ is set, then
--     @MaxCapacity@ cannot be set.
--
-- -   If @MaxCapacity@ is set then neither @NumberOfWorkers@ or
--     @WorkerType@ can be set.
--
-- -   If @WorkerType@ is set, then @NumberOfWorkers@ is required (and vice
--     versa).
--
-- -   @MaxCapacity@ and @NumberOfWorkers@ must both be at least 1.
mLTransform_workerType :: Lens.Lens' MLTransform (Prelude.Maybe WorkerType)
mLTransform_workerType :: (Maybe WorkerType -> f (Maybe WorkerType))
-> MLTransform -> f MLTransform
mLTransform_workerType = (MLTransform -> Maybe WorkerType)
-> (MLTransform -> Maybe WorkerType -> MLTransform)
-> Lens
     MLTransform MLTransform (Maybe WorkerType) (Maybe WorkerType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MLTransform' {Maybe WorkerType
workerType :: Maybe WorkerType
$sel:workerType:MLTransform' :: MLTransform -> Maybe WorkerType
workerType} -> Maybe WorkerType
workerType) (\s :: MLTransform
s@MLTransform' {} Maybe WorkerType
a -> MLTransform
s {$sel:workerType:MLTransform' :: Maybe WorkerType
workerType = Maybe WorkerType
a} :: MLTransform)

-- | A list of Glue table definitions used by the transform.
mLTransform_inputRecordTables :: Lens.Lens' MLTransform (Prelude.Maybe [GlueTable])
mLTransform_inputRecordTables :: (Maybe [GlueTable] -> f (Maybe [GlueTable]))
-> MLTransform -> f MLTransform
mLTransform_inputRecordTables = (MLTransform -> Maybe [GlueTable])
-> (MLTransform -> Maybe [GlueTable] -> MLTransform)
-> Lens
     MLTransform MLTransform (Maybe [GlueTable]) (Maybe [GlueTable])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MLTransform' {Maybe [GlueTable]
inputRecordTables :: Maybe [GlueTable]
$sel:inputRecordTables:MLTransform' :: MLTransform -> Maybe [GlueTable]
inputRecordTables} -> Maybe [GlueTable]
inputRecordTables) (\s :: MLTransform
s@MLTransform' {} Maybe [GlueTable]
a -> MLTransform
s {$sel:inputRecordTables:MLTransform' :: Maybe [GlueTable]
inputRecordTables = Maybe [GlueTable]
a} :: MLTransform) ((Maybe [GlueTable] -> f (Maybe [GlueTable]))
 -> MLTransform -> f MLTransform)
-> ((Maybe [GlueTable] -> f (Maybe [GlueTable]))
    -> Maybe [GlueTable] -> f (Maybe [GlueTable]))
-> (Maybe [GlueTable] -> f (Maybe [GlueTable]))
-> MLTransform
-> f MLTransform
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [GlueTable] [GlueTable] [GlueTable] [GlueTable]
-> Iso
     (Maybe [GlueTable])
     (Maybe [GlueTable])
     (Maybe [GlueTable])
     (Maybe [GlueTable])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso [GlueTable] [GlueTable] [GlueTable] [GlueTable]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | This value determines which version of Glue this machine learning
-- transform is compatible with. Glue 1.0 is recommended for most
-- customers. If the value is not set, the Glue compatibility defaults to
-- Glue 0.9. For more information, see
-- <https://docs.aws.amazon.com/glue/latest/dg/release-notes.html#release-notes-versions Glue Versions>
-- in the developer guide.
mLTransform_glueVersion :: Lens.Lens' MLTransform (Prelude.Maybe Prelude.Text)
mLTransform_glueVersion :: (Maybe Text -> f (Maybe Text)) -> MLTransform -> f MLTransform
mLTransform_glueVersion = (MLTransform -> Maybe Text)
-> (MLTransform -> Maybe Text -> MLTransform)
-> Lens MLTransform MLTransform (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MLTransform' {Maybe Text
glueVersion :: Maybe Text
$sel:glueVersion:MLTransform' :: MLTransform -> Maybe Text
glueVersion} -> Maybe Text
glueVersion) (\s :: MLTransform
s@MLTransform' {} Maybe Text
a -> MLTransform
s {$sel:glueVersion:MLTransform' :: Maybe Text
glueVersion = Maybe Text
a} :: MLTransform)

-- | An @EvaluationMetrics@ object. Evaluation metrics provide an estimate of
-- the quality of your machine learning transform.
mLTransform_evaluationMetrics :: Lens.Lens' MLTransform (Prelude.Maybe EvaluationMetrics)
mLTransform_evaluationMetrics :: (Maybe EvaluationMetrics -> f (Maybe EvaluationMetrics))
-> MLTransform -> f MLTransform
mLTransform_evaluationMetrics = (MLTransform -> Maybe EvaluationMetrics)
-> (MLTransform -> Maybe EvaluationMetrics -> MLTransform)
-> Lens
     MLTransform
     MLTransform
     (Maybe EvaluationMetrics)
     (Maybe EvaluationMetrics)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MLTransform' {Maybe EvaluationMetrics
evaluationMetrics :: Maybe EvaluationMetrics
$sel:evaluationMetrics:MLTransform' :: MLTransform -> Maybe EvaluationMetrics
evaluationMetrics} -> Maybe EvaluationMetrics
evaluationMetrics) (\s :: MLTransform
s@MLTransform' {} Maybe EvaluationMetrics
a -> MLTransform
s {$sel:evaluationMetrics:MLTransform' :: Maybe EvaluationMetrics
evaluationMetrics = Maybe EvaluationMetrics
a} :: MLTransform)

-- | A map of key-value pairs representing the columns and data types that
-- this transform can run against. Has an upper bound of 100 columns.
mLTransform_schema :: Lens.Lens' MLTransform (Prelude.Maybe [SchemaColumn])
mLTransform_schema :: (Maybe [SchemaColumn] -> f (Maybe [SchemaColumn]))
-> MLTransform -> f MLTransform
mLTransform_schema = (MLTransform -> Maybe [SchemaColumn])
-> (MLTransform -> Maybe [SchemaColumn] -> MLTransform)
-> Lens
     MLTransform
     MLTransform
     (Maybe [SchemaColumn])
     (Maybe [SchemaColumn])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MLTransform' {Maybe [SchemaColumn]
schema :: Maybe [SchemaColumn]
$sel:schema:MLTransform' :: MLTransform -> Maybe [SchemaColumn]
schema} -> Maybe [SchemaColumn]
schema) (\s :: MLTransform
s@MLTransform' {} Maybe [SchemaColumn]
a -> MLTransform
s {$sel:schema:MLTransform' :: Maybe [SchemaColumn]
schema = Maybe [SchemaColumn]
a} :: MLTransform) ((Maybe [SchemaColumn] -> f (Maybe [SchemaColumn]))
 -> MLTransform -> f MLTransform)
-> ((Maybe [SchemaColumn] -> f (Maybe [SchemaColumn]))
    -> Maybe [SchemaColumn] -> f (Maybe [SchemaColumn]))
-> (Maybe [SchemaColumn] -> f (Maybe [SchemaColumn]))
-> MLTransform
-> f MLTransform
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [SchemaColumn] [SchemaColumn] [SchemaColumn] [SchemaColumn]
-> Iso
     (Maybe [SchemaColumn])
     (Maybe [SchemaColumn])
     (Maybe [SchemaColumn])
     (Maybe [SchemaColumn])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso [SchemaColumn] [SchemaColumn] [SchemaColumn] [SchemaColumn]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The name or Amazon Resource Name (ARN) of the IAM role with the required
-- permissions. The required permissions include both Glue service role
-- permissions to Glue resources, and Amazon S3 permissions required by the
-- transform.
--
-- -   This role needs Glue service role permissions to allow access to
--     resources in Glue. See
--     <https://docs.aws.amazon.com/glue/latest/dg/attach-policy-iam-user.html Attach a Policy to IAM Users That Access Glue>.
--
-- -   This role needs permission to your Amazon Simple Storage Service
--     (Amazon S3) sources, targets, temporary directory, scripts, and any
--     libraries used by the task run for this transform.
mLTransform_role :: Lens.Lens' MLTransform (Prelude.Maybe Prelude.Text)
mLTransform_role :: (Maybe Text -> f (Maybe Text)) -> MLTransform -> f MLTransform
mLTransform_role = (MLTransform -> Maybe Text)
-> (MLTransform -> Maybe Text -> MLTransform)
-> Lens MLTransform MLTransform (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MLTransform' {Maybe Text
role' :: Maybe Text
$sel:role':MLTransform' :: MLTransform -> Maybe Text
role'} -> Maybe Text
role') (\s :: MLTransform
s@MLTransform' {} Maybe Text
a -> MLTransform
s {$sel:role':MLTransform' :: Maybe Text
role' = Maybe Text
a} :: MLTransform)

-- | A user-defined name for the machine learning transform. Names are not
-- guaranteed unique and can be changed at any time.
mLTransform_name :: Lens.Lens' MLTransform (Prelude.Maybe Prelude.Text)
mLTransform_name :: (Maybe Text -> f (Maybe Text)) -> MLTransform -> f MLTransform
mLTransform_name = (MLTransform -> Maybe Text)
-> (MLTransform -> Maybe Text -> MLTransform)
-> Lens MLTransform MLTransform (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MLTransform' {Maybe Text
name :: Maybe Text
$sel:name:MLTransform' :: MLTransform -> Maybe Text
name} -> Maybe Text
name) (\s :: MLTransform
s@MLTransform' {} Maybe Text
a -> MLTransform
s {$sel:name:MLTransform' :: Maybe Text
name = Maybe Text
a} :: MLTransform)

-- | A @TransformParameters@ object. You can use parameters to tune
-- (customize) the behavior of the machine learning transform by specifying
-- what data it learns from and your preference on various tradeoffs (such
-- as precious vs. recall, or accuracy vs. cost).
mLTransform_parameters :: Lens.Lens' MLTransform (Prelude.Maybe TransformParameters)
mLTransform_parameters :: (Maybe TransformParameters -> f (Maybe TransformParameters))
-> MLTransform -> f MLTransform
mLTransform_parameters = (MLTransform -> Maybe TransformParameters)
-> (MLTransform -> Maybe TransformParameters -> MLTransform)
-> Lens
     MLTransform
     MLTransform
     (Maybe TransformParameters)
     (Maybe TransformParameters)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MLTransform' {Maybe TransformParameters
parameters :: Maybe TransformParameters
$sel:parameters:MLTransform' :: MLTransform -> Maybe TransformParameters
parameters} -> Maybe TransformParameters
parameters) (\s :: MLTransform
s@MLTransform' {} Maybe TransformParameters
a -> MLTransform
s {$sel:parameters:MLTransform' :: Maybe TransformParameters
parameters = Maybe TransformParameters
a} :: MLTransform)

-- | The maximum number of times to retry after an @MLTaskRun@ of the machine
-- learning transform fails.
mLTransform_maxRetries :: Lens.Lens' MLTransform (Prelude.Maybe Prelude.Int)
mLTransform_maxRetries :: (Maybe Int -> f (Maybe Int)) -> MLTransform -> f MLTransform
mLTransform_maxRetries = (MLTransform -> Maybe Int)
-> (MLTransform -> Maybe Int -> MLTransform)
-> Lens MLTransform MLTransform (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MLTransform' {Maybe Int
maxRetries :: Maybe Int
$sel:maxRetries:MLTransform' :: MLTransform -> Maybe Int
maxRetries} -> Maybe Int
maxRetries) (\s :: MLTransform
s@MLTransform' {} Maybe Int
a -> MLTransform
s {$sel:maxRetries:MLTransform' :: Maybe Int
maxRetries = Maybe Int
a} :: MLTransform)

-- | The number of Glue data processing units (DPUs) that are allocated to
-- task runs for this transform. You can allocate from 2 to 100 DPUs; the
-- default is 10. A DPU is a relative measure of processing power that
-- consists of 4 vCPUs of compute capacity and 16 GB of memory. For more
-- information, see the
-- <http://aws.amazon.com/glue/pricing/ Glue pricing page>.
--
-- @MaxCapacity@ is a mutually exclusive option with @NumberOfWorkers@ and
-- @WorkerType@.
--
-- -   If either @NumberOfWorkers@ or @WorkerType@ is set, then
--     @MaxCapacity@ cannot be set.
--
-- -   If @MaxCapacity@ is set then neither @NumberOfWorkers@ or
--     @WorkerType@ can be set.
--
-- -   If @WorkerType@ is set, then @NumberOfWorkers@ is required (and vice
--     versa).
--
-- -   @MaxCapacity@ and @NumberOfWorkers@ must both be at least 1.
--
-- When the @WorkerType@ field is set to a value other than @Standard@, the
-- @MaxCapacity@ field is set automatically and becomes read-only.
mLTransform_maxCapacity :: Lens.Lens' MLTransform (Prelude.Maybe Prelude.Double)
mLTransform_maxCapacity :: (Maybe Double -> f (Maybe Double)) -> MLTransform -> f MLTransform
mLTransform_maxCapacity = (MLTransform -> Maybe Double)
-> (MLTransform -> Maybe Double -> MLTransform)
-> Lens MLTransform MLTransform (Maybe Double) (Maybe Double)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MLTransform' {Maybe Double
maxCapacity :: Maybe Double
$sel:maxCapacity:MLTransform' :: MLTransform -> Maybe Double
maxCapacity} -> Maybe Double
maxCapacity) (\s :: MLTransform
s@MLTransform' {} Maybe Double
a -> MLTransform
s {$sel:maxCapacity:MLTransform' :: Maybe Double
maxCapacity = Maybe Double
a} :: MLTransform)

-- | The timeout in minutes of the machine learning transform.
mLTransform_timeout :: Lens.Lens' MLTransform (Prelude.Maybe Prelude.Natural)
mLTransform_timeout :: (Maybe Natural -> f (Maybe Natural))
-> MLTransform -> f MLTransform
mLTransform_timeout = (MLTransform -> Maybe Natural)
-> (MLTransform -> Maybe Natural -> MLTransform)
-> Lens MLTransform MLTransform (Maybe Natural) (Maybe Natural)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MLTransform' {Maybe Natural
timeout :: Maybe Natural
$sel:timeout:MLTransform' :: MLTransform -> Maybe Natural
timeout} -> Maybe Natural
timeout) (\s :: MLTransform
s@MLTransform' {} Maybe Natural
a -> MLTransform
s {$sel:timeout:MLTransform' :: Maybe Natural
timeout = Maybe Natural
a} :: MLTransform)

-- | The encryption-at-rest settings of the transform that apply to accessing
-- user data. Machine learning transforms can access user data encrypted in
-- Amazon S3 using KMS.
mLTransform_transformEncryption :: Lens.Lens' MLTransform (Prelude.Maybe TransformEncryption)
mLTransform_transformEncryption :: (Maybe TransformEncryption -> f (Maybe TransformEncryption))
-> MLTransform -> f MLTransform
mLTransform_transformEncryption = (MLTransform -> Maybe TransformEncryption)
-> (MLTransform -> Maybe TransformEncryption -> MLTransform)
-> Lens
     MLTransform
     MLTransform
     (Maybe TransformEncryption)
     (Maybe TransformEncryption)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MLTransform' {Maybe TransformEncryption
transformEncryption :: Maybe TransformEncryption
$sel:transformEncryption:MLTransform' :: MLTransform -> Maybe TransformEncryption
transformEncryption} -> Maybe TransformEncryption
transformEncryption) (\s :: MLTransform
s@MLTransform' {} Maybe TransformEncryption
a -> MLTransform
s {$sel:transformEncryption:MLTransform' :: Maybe TransformEncryption
transformEncryption = Maybe TransformEncryption
a} :: MLTransform)

-- | A user-defined, long-form description text for the machine learning
-- transform. Descriptions are not guaranteed to be unique and can be
-- changed at any time.
mLTransform_description :: Lens.Lens' MLTransform (Prelude.Maybe Prelude.Text)
mLTransform_description :: (Maybe Text -> f (Maybe Text)) -> MLTransform -> f MLTransform
mLTransform_description = (MLTransform -> Maybe Text)
-> (MLTransform -> Maybe Text -> MLTransform)
-> Lens MLTransform MLTransform (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MLTransform' {Maybe Text
description :: Maybe Text
$sel:description:MLTransform' :: MLTransform -> Maybe Text
description} -> Maybe Text
description) (\s :: MLTransform
s@MLTransform' {} Maybe Text
a -> MLTransform
s {$sel:description:MLTransform' :: Maybe Text
description = Maybe Text
a} :: MLTransform)

-- | A timestamp. The time and date that this machine learning transform was
-- created.
mLTransform_createdOn :: Lens.Lens' MLTransform (Prelude.Maybe Prelude.UTCTime)
mLTransform_createdOn :: (Maybe UTCTime -> f (Maybe UTCTime))
-> MLTransform -> f MLTransform
mLTransform_createdOn = (MLTransform -> Maybe POSIX)
-> (MLTransform -> Maybe POSIX -> MLTransform)
-> Lens MLTransform MLTransform (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MLTransform' {Maybe POSIX
createdOn :: Maybe POSIX
$sel:createdOn:MLTransform' :: MLTransform -> Maybe POSIX
createdOn} -> Maybe POSIX
createdOn) (\s :: MLTransform
s@MLTransform' {} Maybe POSIX
a -> MLTransform
s {$sel:createdOn:MLTransform' :: Maybe POSIX
createdOn = Maybe POSIX
a} :: MLTransform) ((Maybe POSIX -> f (Maybe POSIX)) -> MLTransform -> f MLTransform)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> MLTransform
-> f MLTransform
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The unique transform ID that is generated for the machine learning
-- transform. The ID is guaranteed to be unique and does not change.
mLTransform_transformId :: Lens.Lens' MLTransform (Prelude.Maybe Prelude.Text)
mLTransform_transformId :: (Maybe Text -> f (Maybe Text)) -> MLTransform -> f MLTransform
mLTransform_transformId = (MLTransform -> Maybe Text)
-> (MLTransform -> Maybe Text -> MLTransform)
-> Lens MLTransform MLTransform (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MLTransform' {Maybe Text
transformId :: Maybe Text
$sel:transformId:MLTransform' :: MLTransform -> Maybe Text
transformId} -> Maybe Text
transformId) (\s :: MLTransform
s@MLTransform' {} Maybe Text
a -> MLTransform
s {$sel:transformId:MLTransform' :: Maybe Text
transformId = Maybe Text
a} :: MLTransform)

instance Core.FromJSON MLTransform where
  parseJSON :: Value -> Parser MLTransform
parseJSON =
    String
-> (Object -> Parser MLTransform) -> Value -> Parser MLTransform
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"MLTransform"
      ( \Object
x ->
          Maybe TransformStatusType
-> Maybe Int
-> Maybe POSIX
-> Maybe Int
-> Maybe WorkerType
-> Maybe [GlueTable]
-> Maybe Text
-> Maybe EvaluationMetrics
-> Maybe [SchemaColumn]
-> Maybe Text
-> Maybe Text
-> Maybe TransformParameters
-> Maybe Int
-> Maybe Double
-> Maybe Natural
-> Maybe TransformEncryption
-> Maybe Text
-> Maybe POSIX
-> Maybe Text
-> MLTransform
MLTransform'
            (Maybe TransformStatusType
 -> Maybe Int
 -> Maybe POSIX
 -> Maybe Int
 -> Maybe WorkerType
 -> Maybe [GlueTable]
 -> Maybe Text
 -> Maybe EvaluationMetrics
 -> Maybe [SchemaColumn]
 -> Maybe Text
 -> Maybe Text
 -> Maybe TransformParameters
 -> Maybe Int
 -> Maybe Double
 -> Maybe Natural
 -> Maybe TransformEncryption
 -> Maybe Text
 -> Maybe POSIX
 -> Maybe Text
 -> MLTransform)
-> Parser (Maybe TransformStatusType)
-> Parser
     (Maybe Int
      -> Maybe POSIX
      -> Maybe Int
      -> Maybe WorkerType
      -> Maybe [GlueTable]
      -> Maybe Text
      -> Maybe EvaluationMetrics
      -> Maybe [SchemaColumn]
      -> Maybe Text
      -> Maybe Text
      -> Maybe TransformParameters
      -> Maybe Int
      -> Maybe Double
      -> Maybe Natural
      -> Maybe TransformEncryption
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> MLTransform)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe TransformStatusType)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Status")
            Parser
  (Maybe Int
   -> Maybe POSIX
   -> Maybe Int
   -> Maybe WorkerType
   -> Maybe [GlueTable]
   -> Maybe Text
   -> Maybe EvaluationMetrics
   -> Maybe [SchemaColumn]
   -> Maybe Text
   -> Maybe Text
   -> Maybe TransformParameters
   -> Maybe Int
   -> Maybe Double
   -> Maybe Natural
   -> Maybe TransformEncryption
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> MLTransform)
-> Parser (Maybe Int)
-> Parser
     (Maybe POSIX
      -> Maybe Int
      -> Maybe WorkerType
      -> Maybe [GlueTable]
      -> Maybe Text
      -> Maybe EvaluationMetrics
      -> Maybe [SchemaColumn]
      -> Maybe Text
      -> Maybe Text
      -> Maybe TransformParameters
      -> Maybe Int
      -> Maybe Double
      -> Maybe Natural
      -> Maybe TransformEncryption
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> MLTransform)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NumberOfWorkers")
            Parser
  (Maybe POSIX
   -> Maybe Int
   -> Maybe WorkerType
   -> Maybe [GlueTable]
   -> Maybe Text
   -> Maybe EvaluationMetrics
   -> Maybe [SchemaColumn]
   -> Maybe Text
   -> Maybe Text
   -> Maybe TransformParameters
   -> Maybe Int
   -> Maybe Double
   -> Maybe Natural
   -> Maybe TransformEncryption
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> MLTransform)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Int
      -> Maybe WorkerType
      -> Maybe [GlueTable]
      -> Maybe Text
      -> Maybe EvaluationMetrics
      -> Maybe [SchemaColumn]
      -> Maybe Text
      -> Maybe Text
      -> Maybe TransformParameters
      -> Maybe Int
      -> Maybe Double
      -> Maybe Natural
      -> Maybe TransformEncryption
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> MLTransform)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LastModifiedOn")
            Parser
  (Maybe Int
   -> Maybe WorkerType
   -> Maybe [GlueTable]
   -> Maybe Text
   -> Maybe EvaluationMetrics
   -> Maybe [SchemaColumn]
   -> Maybe Text
   -> Maybe Text
   -> Maybe TransformParameters
   -> Maybe Int
   -> Maybe Double
   -> Maybe Natural
   -> Maybe TransformEncryption
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> MLTransform)
-> Parser (Maybe Int)
-> Parser
     (Maybe WorkerType
      -> Maybe [GlueTable]
      -> Maybe Text
      -> Maybe EvaluationMetrics
      -> Maybe [SchemaColumn]
      -> Maybe Text
      -> Maybe Text
      -> Maybe TransformParameters
      -> Maybe Int
      -> Maybe Double
      -> Maybe Natural
      -> Maybe TransformEncryption
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> MLTransform)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LabelCount")
            Parser
  (Maybe WorkerType
   -> Maybe [GlueTable]
   -> Maybe Text
   -> Maybe EvaluationMetrics
   -> Maybe [SchemaColumn]
   -> Maybe Text
   -> Maybe Text
   -> Maybe TransformParameters
   -> Maybe Int
   -> Maybe Double
   -> Maybe Natural
   -> Maybe TransformEncryption
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> MLTransform)
-> Parser (Maybe WorkerType)
-> Parser
     (Maybe [GlueTable]
      -> Maybe Text
      -> Maybe EvaluationMetrics
      -> Maybe [SchemaColumn]
      -> Maybe Text
      -> Maybe Text
      -> Maybe TransformParameters
      -> Maybe Int
      -> Maybe Double
      -> Maybe Natural
      -> Maybe TransformEncryption
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> MLTransform)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe WorkerType)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"WorkerType")
            Parser
  (Maybe [GlueTable]
   -> Maybe Text
   -> Maybe EvaluationMetrics
   -> Maybe [SchemaColumn]
   -> Maybe Text
   -> Maybe Text
   -> Maybe TransformParameters
   -> Maybe Int
   -> Maybe Double
   -> Maybe Natural
   -> Maybe TransformEncryption
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> MLTransform)
-> Parser (Maybe [GlueTable])
-> Parser
     (Maybe Text
      -> Maybe EvaluationMetrics
      -> Maybe [SchemaColumn]
      -> Maybe Text
      -> Maybe Text
      -> Maybe TransformParameters
      -> Maybe Int
      -> Maybe Double
      -> Maybe Natural
      -> Maybe TransformEncryption
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> MLTransform)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [GlueTable]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"InputRecordTables"
                            Parser (Maybe (Maybe [GlueTable]))
-> Maybe [GlueTable] -> Parser (Maybe [GlueTable])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [GlueTable]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe Text
   -> Maybe EvaluationMetrics
   -> Maybe [SchemaColumn]
   -> Maybe Text
   -> Maybe Text
   -> Maybe TransformParameters
   -> Maybe Int
   -> Maybe Double
   -> Maybe Natural
   -> Maybe TransformEncryption
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> MLTransform)
-> Parser (Maybe Text)
-> Parser
     (Maybe EvaluationMetrics
      -> Maybe [SchemaColumn]
      -> Maybe Text
      -> Maybe Text
      -> Maybe TransformParameters
      -> Maybe Int
      -> Maybe Double
      -> Maybe Natural
      -> Maybe TransformEncryption
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> MLTransform)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"GlueVersion")
            Parser
  (Maybe EvaluationMetrics
   -> Maybe [SchemaColumn]
   -> Maybe Text
   -> Maybe Text
   -> Maybe TransformParameters
   -> Maybe Int
   -> Maybe Double
   -> Maybe Natural
   -> Maybe TransformEncryption
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> MLTransform)
-> Parser (Maybe EvaluationMetrics)
-> Parser
     (Maybe [SchemaColumn]
      -> Maybe Text
      -> Maybe Text
      -> Maybe TransformParameters
      -> Maybe Int
      -> Maybe Double
      -> Maybe Natural
      -> Maybe TransformEncryption
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> MLTransform)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe EvaluationMetrics)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EvaluationMetrics")
            Parser
  (Maybe [SchemaColumn]
   -> Maybe Text
   -> Maybe Text
   -> Maybe TransformParameters
   -> Maybe Int
   -> Maybe Double
   -> Maybe Natural
   -> Maybe TransformEncryption
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> MLTransform)
-> Parser (Maybe [SchemaColumn])
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe TransformParameters
      -> Maybe Int
      -> Maybe Double
      -> Maybe Natural
      -> Maybe TransformEncryption
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> MLTransform)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [SchemaColumn]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Schema" Parser (Maybe (Maybe [SchemaColumn]))
-> Maybe [SchemaColumn] -> Parser (Maybe [SchemaColumn])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [SchemaColumn]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe TransformParameters
   -> Maybe Int
   -> Maybe Double
   -> Maybe Natural
   -> Maybe TransformEncryption
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> MLTransform)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe TransformParameters
      -> Maybe Int
      -> Maybe Double
      -> Maybe Natural
      -> Maybe TransformEncryption
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> MLTransform)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Role")
            Parser
  (Maybe Text
   -> Maybe TransformParameters
   -> Maybe Int
   -> Maybe Double
   -> Maybe Natural
   -> Maybe TransformEncryption
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> MLTransform)
-> Parser (Maybe Text)
-> Parser
     (Maybe TransformParameters
      -> Maybe Int
      -> Maybe Double
      -> Maybe Natural
      -> Maybe TransformEncryption
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> MLTransform)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Name")
            Parser
  (Maybe TransformParameters
   -> Maybe Int
   -> Maybe Double
   -> Maybe Natural
   -> Maybe TransformEncryption
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> MLTransform)
-> Parser (Maybe TransformParameters)
-> Parser
     (Maybe Int
      -> Maybe Double
      -> Maybe Natural
      -> Maybe TransformEncryption
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> MLTransform)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe TransformParameters)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Parameters")
            Parser
  (Maybe Int
   -> Maybe Double
   -> Maybe Natural
   -> Maybe TransformEncryption
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> MLTransform)
-> Parser (Maybe Int)
-> Parser
     (Maybe Double
      -> Maybe Natural
      -> Maybe TransformEncryption
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> MLTransform)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"MaxRetries")
            Parser
  (Maybe Double
   -> Maybe Natural
   -> Maybe TransformEncryption
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> MLTransform)
-> Parser (Maybe Double)
-> Parser
     (Maybe Natural
      -> Maybe TransformEncryption
      -> Maybe Text
      -> Maybe POSIX
      -> Maybe Text
      -> MLTransform)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"MaxCapacity")
            Parser
  (Maybe Natural
   -> Maybe TransformEncryption
   -> Maybe Text
   -> Maybe POSIX
   -> Maybe Text
   -> MLTransform)
-> Parser (Maybe Natural)
-> Parser
     (Maybe TransformEncryption
      -> Maybe Text -> Maybe POSIX -> Maybe Text -> MLTransform)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Natural)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Timeout")
            Parser
  (Maybe TransformEncryption
   -> Maybe Text -> Maybe POSIX -> Maybe Text -> MLTransform)
-> Parser (Maybe TransformEncryption)
-> Parser (Maybe Text -> Maybe POSIX -> Maybe Text -> MLTransform)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe TransformEncryption)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TransformEncryption")
            Parser (Maybe Text -> Maybe POSIX -> Maybe Text -> MLTransform)
-> Parser (Maybe Text)
-> Parser (Maybe POSIX -> Maybe Text -> MLTransform)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Description")
            Parser (Maybe POSIX -> Maybe Text -> MLTransform)
-> Parser (Maybe POSIX) -> Parser (Maybe Text -> MLTransform)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CreatedOn")
            Parser (Maybe Text -> MLTransform)
-> Parser (Maybe Text) -> Parser MLTransform
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TransformId")
      )

instance Prelude.Hashable MLTransform

instance Prelude.NFData MLTransform