amazonka-quicksight-2.0: gen/Amazonka/QuickSight/Types/AnalysisDefinition.hs
{-# 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.QuickSight.Types.AnalysisDefinition
-- Copyright : (c) 2013-2023 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.QuickSight.Types.AnalysisDefinition where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.QuickSight.Types.AnalysisDefaults
import Amazonka.QuickSight.Types.CalculatedField
import Amazonka.QuickSight.Types.ColumnConfiguration
import Amazonka.QuickSight.Types.DataSetIdentifierDeclaration
import Amazonka.QuickSight.Types.FilterGroup
import Amazonka.QuickSight.Types.ParameterDeclaration
import Amazonka.QuickSight.Types.SheetDefinition
-- | The definition of an analysis.
--
-- /See:/ 'newAnalysisDefinition' smart constructor.
data AnalysisDefinition = AnalysisDefinition'
{ analysisDefaults :: Prelude.Maybe AnalysisDefaults,
-- | An array of calculated field definitions for the analysis.
calculatedFields :: Prelude.Maybe [CalculatedField],
-- | An array of analysis-level column configurations. Column configurations
-- can be used to set default formatting for a column to be used throughout
-- an analysis.
columnConfigurations :: Prelude.Maybe [ColumnConfiguration],
-- | Filter definitions for an analysis.
--
-- For more information, see
-- <https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html Filtering Data in Amazon QuickSight>
-- in the /Amazon QuickSight User Guide/.
filterGroups :: Prelude.Maybe [FilterGroup],
-- | An array of parameter declarations for an analysis.
--
-- Parameters are named variables that can transfer a value for use by an
-- action or an object.
--
-- For more information, see
-- <https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html Parameters in Amazon QuickSight>
-- in the /Amazon QuickSight User Guide/.
parameterDeclarations :: Prelude.Maybe [ParameterDeclaration],
-- | An array of sheet definitions for an analysis. Each @SheetDefinition@
-- provides detailed information about a sheet within this analysis.
sheets :: Prelude.Maybe [SheetDefinition],
-- | An array of dataset identifier declarations. This mapping allows the
-- usage of dataset identifiers instead of dataset ARNs throughout analysis
-- sub-structures.
dataSetIdentifierDeclarations :: Prelude.NonEmpty DataSetIdentifierDeclaration
}
deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'AnalysisDefinition' 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:
--
-- 'analysisDefaults', 'analysisDefinition_analysisDefaults' - Undocumented member.
--
-- 'calculatedFields', 'analysisDefinition_calculatedFields' - An array of calculated field definitions for the analysis.
--
-- 'columnConfigurations', 'analysisDefinition_columnConfigurations' - An array of analysis-level column configurations. Column configurations
-- can be used to set default formatting for a column to be used throughout
-- an analysis.
--
-- 'filterGroups', 'analysisDefinition_filterGroups' - Filter definitions for an analysis.
--
-- For more information, see
-- <https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html Filtering Data in Amazon QuickSight>
-- in the /Amazon QuickSight User Guide/.
--
-- 'parameterDeclarations', 'analysisDefinition_parameterDeclarations' - An array of parameter declarations for an analysis.
--
-- Parameters are named variables that can transfer a value for use by an
-- action or an object.
--
-- For more information, see
-- <https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html Parameters in Amazon QuickSight>
-- in the /Amazon QuickSight User Guide/.
--
-- 'sheets', 'analysisDefinition_sheets' - An array of sheet definitions for an analysis. Each @SheetDefinition@
-- provides detailed information about a sheet within this analysis.
--
-- 'dataSetIdentifierDeclarations', 'analysisDefinition_dataSetIdentifierDeclarations' - An array of dataset identifier declarations. This mapping allows the
-- usage of dataset identifiers instead of dataset ARNs throughout analysis
-- sub-structures.
newAnalysisDefinition ::
-- | 'dataSetIdentifierDeclarations'
Prelude.NonEmpty DataSetIdentifierDeclaration ->
AnalysisDefinition
newAnalysisDefinition pDataSetIdentifierDeclarations_ =
AnalysisDefinition'
{ analysisDefaults =
Prelude.Nothing,
calculatedFields = Prelude.Nothing,
columnConfigurations = Prelude.Nothing,
filterGroups = Prelude.Nothing,
parameterDeclarations = Prelude.Nothing,
sheets = Prelude.Nothing,
dataSetIdentifierDeclarations =
Lens.coerced Lens.# pDataSetIdentifierDeclarations_
}
-- | Undocumented member.
analysisDefinition_analysisDefaults :: Lens.Lens' AnalysisDefinition (Prelude.Maybe AnalysisDefaults)
analysisDefinition_analysisDefaults = Lens.lens (\AnalysisDefinition' {analysisDefaults} -> analysisDefaults) (\s@AnalysisDefinition' {} a -> s {analysisDefaults = a} :: AnalysisDefinition)
-- | An array of calculated field definitions for the analysis.
analysisDefinition_calculatedFields :: Lens.Lens' AnalysisDefinition (Prelude.Maybe [CalculatedField])
analysisDefinition_calculatedFields = Lens.lens (\AnalysisDefinition' {calculatedFields} -> calculatedFields) (\s@AnalysisDefinition' {} a -> s {calculatedFields = a} :: AnalysisDefinition) Prelude.. Lens.mapping Lens.coerced
-- | An array of analysis-level column configurations. Column configurations
-- can be used to set default formatting for a column to be used throughout
-- an analysis.
analysisDefinition_columnConfigurations :: Lens.Lens' AnalysisDefinition (Prelude.Maybe [ColumnConfiguration])
analysisDefinition_columnConfigurations = Lens.lens (\AnalysisDefinition' {columnConfigurations} -> columnConfigurations) (\s@AnalysisDefinition' {} a -> s {columnConfigurations = a} :: AnalysisDefinition) Prelude.. Lens.mapping Lens.coerced
-- | Filter definitions for an analysis.
--
-- For more information, see
-- <https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html Filtering Data in Amazon QuickSight>
-- in the /Amazon QuickSight User Guide/.
analysisDefinition_filterGroups :: Lens.Lens' AnalysisDefinition (Prelude.Maybe [FilterGroup])
analysisDefinition_filterGroups = Lens.lens (\AnalysisDefinition' {filterGroups} -> filterGroups) (\s@AnalysisDefinition' {} a -> s {filterGroups = a} :: AnalysisDefinition) Prelude.. Lens.mapping Lens.coerced
-- | An array of parameter declarations for an analysis.
--
-- Parameters are named variables that can transfer a value for use by an
-- action or an object.
--
-- For more information, see
-- <https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html Parameters in Amazon QuickSight>
-- in the /Amazon QuickSight User Guide/.
analysisDefinition_parameterDeclarations :: Lens.Lens' AnalysisDefinition (Prelude.Maybe [ParameterDeclaration])
analysisDefinition_parameterDeclarations = Lens.lens (\AnalysisDefinition' {parameterDeclarations} -> parameterDeclarations) (\s@AnalysisDefinition' {} a -> s {parameterDeclarations = a} :: AnalysisDefinition) Prelude.. Lens.mapping Lens.coerced
-- | An array of sheet definitions for an analysis. Each @SheetDefinition@
-- provides detailed information about a sheet within this analysis.
analysisDefinition_sheets :: Lens.Lens' AnalysisDefinition (Prelude.Maybe [SheetDefinition])
analysisDefinition_sheets = Lens.lens (\AnalysisDefinition' {sheets} -> sheets) (\s@AnalysisDefinition' {} a -> s {sheets = a} :: AnalysisDefinition) Prelude.. Lens.mapping Lens.coerced
-- | An array of dataset identifier declarations. This mapping allows the
-- usage of dataset identifiers instead of dataset ARNs throughout analysis
-- sub-structures.
analysisDefinition_dataSetIdentifierDeclarations :: Lens.Lens' AnalysisDefinition (Prelude.NonEmpty DataSetIdentifierDeclaration)
analysisDefinition_dataSetIdentifierDeclarations = Lens.lens (\AnalysisDefinition' {dataSetIdentifierDeclarations} -> dataSetIdentifierDeclarations) (\s@AnalysisDefinition' {} a -> s {dataSetIdentifierDeclarations = a} :: AnalysisDefinition) Prelude.. Lens.coerced
instance Data.FromJSON AnalysisDefinition where
parseJSON =
Data.withObject
"AnalysisDefinition"
( \x ->
AnalysisDefinition'
Prelude.<$> (x Data..:? "AnalysisDefaults")
Prelude.<*> ( x
Data..:? "CalculatedFields"
Data..!= Prelude.mempty
)
Prelude.<*> ( x
Data..:? "ColumnConfigurations"
Data..!= Prelude.mempty
)
Prelude.<*> (x Data..:? "FilterGroups" Data..!= Prelude.mempty)
Prelude.<*> ( x
Data..:? "ParameterDeclarations"
Data..!= Prelude.mempty
)
Prelude.<*> (x Data..:? "Sheets" Data..!= Prelude.mempty)
Prelude.<*> (x Data..: "DataSetIdentifierDeclarations")
)
instance Prelude.Hashable AnalysisDefinition where
hashWithSalt _salt AnalysisDefinition' {..} =
_salt
`Prelude.hashWithSalt` analysisDefaults
`Prelude.hashWithSalt` calculatedFields
`Prelude.hashWithSalt` columnConfigurations
`Prelude.hashWithSalt` filterGroups
`Prelude.hashWithSalt` parameterDeclarations
`Prelude.hashWithSalt` sheets
`Prelude.hashWithSalt` dataSetIdentifierDeclarations
instance Prelude.NFData AnalysisDefinition where
rnf AnalysisDefinition' {..} =
Prelude.rnf analysisDefaults
`Prelude.seq` Prelude.rnf calculatedFields
`Prelude.seq` Prelude.rnf columnConfigurations
`Prelude.seq` Prelude.rnf filterGroups
`Prelude.seq` Prelude.rnf parameterDeclarations
`Prelude.seq` Prelude.rnf sheets
`Prelude.seq` Prelude.rnf dataSetIdentifierDeclarations
instance Data.ToJSON AnalysisDefinition where
toJSON AnalysisDefinition' {..} =
Data.object
( Prelude.catMaybes
[ ("AnalysisDefaults" Data..=)
Prelude.<$> analysisDefaults,
("CalculatedFields" Data..=)
Prelude.<$> calculatedFields,
("ColumnConfigurations" Data..=)
Prelude.<$> columnConfigurations,
("FilterGroups" Data..=) Prelude.<$> filterGroups,
("ParameterDeclarations" Data..=)
Prelude.<$> parameterDeclarations,
("Sheets" Data..=) Prelude.<$> sheets,
Prelude.Just
( "DataSetIdentifierDeclarations"
Data..= dataSetIdentifierDeclarations
)
]
)