:doc:`CleanRoomsService <../../cleanrooms>` / Client / get_schema_analysis_rule

************************
get_schema_analysis_rule
************************



.. py:method:: CleanRoomsService.Client.get_schema_analysis_rule(**kwargs)

  

  Retrieves a schema analysis rule.

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/cleanrooms-2022-02-17/GetSchemaAnalysisRule>`_  


  **Request Syntax**
  ::

    response = client.get_schema_analysis_rule(
        collaborationIdentifier='string',
        name='string',
        type='AGGREGATION'|'LIST'|'CUSTOM'|'ID_MAPPING_TABLE'
    )
    
  :type collaborationIdentifier: string
  :param collaborationIdentifier: **[REQUIRED]** 

    A unique identifier for the collaboration that the schema belongs to. Currently accepts a collaboration ID.

    

  
  :type name: string
  :param name: **[REQUIRED]** 

    The name of the schema to retrieve the analysis rule for.

    

  
  :type type: string
  :param type: **[REQUIRED]** 

    The type of the schema analysis rule to retrieve. Schema analysis rules are uniquely identified by a combination of the collaboration, the schema name, and their type.

    

  
  
  :rtype: dict
  :returns: 
    
    **Response Syntax**

    
    ::

      {
          'analysisRule': {
              'collaborationId': 'string',
              'type': 'AGGREGATION'|'LIST'|'CUSTOM'|'ID_MAPPING_TABLE',
              'name': 'string',
              'createTime': datetime(2015, 1, 1),
              'updateTime': datetime(2015, 1, 1),
              'policy': {
                  'v1': {
                      'list': {
                          'joinColumns': [
                              'string',
                          ],
                          'allowedJoinOperators': [
                              'OR'|'AND',
                          ],
                          'listColumns': [
                              'string',
                          ],
                          'additionalAnalyses': 'ALLOWED'|'REQUIRED'|'NOT_ALLOWED'
                      },
                      'aggregation': {
                          'aggregateColumns': [
                              {
                                  'columnNames': [
                                      'string',
                                  ],
                                  'function': 'SUM'|'SUM_DISTINCT'|'COUNT'|'COUNT_DISTINCT'|'AVG'
                              },
                          ],
                          'joinColumns': [
                              'string',
                          ],
                          'joinRequired': 'QUERY_RUNNER',
                          'allowedJoinOperators': [
                              'OR'|'AND',
                          ],
                          'dimensionColumns': [
                              'string',
                          ],
                          'scalarFunctions': [
                              'ABS'|'CAST'|'CEILING'|'COALESCE'|'CONVERT'|'CURRENT_DATE'|'DATEADD'|'EXTRACT'|'FLOOR'|'GETDATE'|'LN'|'LOG'|'LOWER'|'ROUND'|'RTRIM'|'SQRT'|'SUBSTRING'|'TO_CHAR'|'TO_DATE'|'TO_NUMBER'|'TO_TIMESTAMP'|'TRIM'|'TRUNC'|'UPPER',
                          ],
                          'outputConstraints': [
                              {
                                  'columnName': 'string',
                                  'minimum': 123,
                                  'type': 'COUNT_DISTINCT'
                              },
                          ],
                          'additionalAnalyses': 'ALLOWED'|'REQUIRED'|'NOT_ALLOWED'
                      },
                      'custom': {
                          'allowedAnalyses': [
                              'string',
                          ],
                          'allowedAnalysisProviders': [
                              'string',
                          ],
                          'additionalAnalyses': 'ALLOWED'|'REQUIRED'|'NOT_ALLOWED',
                          'disallowedOutputColumns': [
                              'string',
                          ],
                          'differentialPrivacy': {
                              'columns': [
                                  {
                                      'name': 'string'
                                  },
                              ]
                          }
                      },
                      'idMappingTable': {
                          'joinColumns': [
                              'string',
                          ],
                          'queryConstraints': [
                              {
                                  'requireOverlap': {
                                      'columns': [
                                          'string',
                                      ]
                                  }
                              },
                          ],
                          'dimensionColumns': [
                              'string',
                          ]
                      }
                  }
              },
              'collaborationPolicy': {
                  'v1': {
                      'list': {
                          'allowedResultReceivers': [
                              'string',
                          ],
                          'allowedAdditionalAnalyses': [
                              'string',
                          ]
                      },
                      'aggregation': {
                          'allowedResultReceivers': [
                              'string',
                          ],
                          'allowedAdditionalAnalyses': [
                              'string',
                          ]
                      },
                      'custom': {
                          'allowedResultReceivers': [
                              'string',
                          ],
                          'allowedAdditionalAnalyses': [
                              'string',
                          ]
                      }
                  }
              },
              'consolidatedPolicy': {
                  'v1': {
                      'list': {
                          'joinColumns': [
                              'string',
                          ],
                          'allowedJoinOperators': [
                              'OR'|'AND',
                          ],
                          'listColumns': [
                              'string',
                          ],
                          'additionalAnalyses': 'ALLOWED'|'REQUIRED'|'NOT_ALLOWED',
                          'allowedResultReceivers': [
                              'string',
                          ],
                          'allowedAdditionalAnalyses': [
                              'string',
                          ]
                      },
                      'aggregation': {
                          'aggregateColumns': [
                              {
                                  'columnNames': [
                                      'string',
                                  ],
                                  'function': 'SUM'|'SUM_DISTINCT'|'COUNT'|'COUNT_DISTINCT'|'AVG'
                              },
                          ],
                          'joinColumns': [
                              'string',
                          ],
                          'joinRequired': 'QUERY_RUNNER',
                          'allowedJoinOperators': [
                              'OR'|'AND',
                          ],
                          'dimensionColumns': [
                              'string',
                          ],
                          'scalarFunctions': [
                              'ABS'|'CAST'|'CEILING'|'COALESCE'|'CONVERT'|'CURRENT_DATE'|'DATEADD'|'EXTRACT'|'FLOOR'|'GETDATE'|'LN'|'LOG'|'LOWER'|'ROUND'|'RTRIM'|'SQRT'|'SUBSTRING'|'TO_CHAR'|'TO_DATE'|'TO_NUMBER'|'TO_TIMESTAMP'|'TRIM'|'TRUNC'|'UPPER',
                          ],
                          'outputConstraints': [
                              {
                                  'columnName': 'string',
                                  'minimum': 123,
                                  'type': 'COUNT_DISTINCT'
                              },
                          ],
                          'additionalAnalyses': 'ALLOWED'|'REQUIRED'|'NOT_ALLOWED',
                          'allowedResultReceivers': [
                              'string',
                          ],
                          'allowedAdditionalAnalyses': [
                              'string',
                          ]
                      },
                      'custom': {
                          'allowedAnalyses': [
                              'string',
                          ],
                          'allowedAnalysisProviders': [
                              'string',
                          ],
                          'additionalAnalyses': 'ALLOWED'|'REQUIRED'|'NOT_ALLOWED',
                          'disallowedOutputColumns': [
                              'string',
                          ],
                          'differentialPrivacy': {
                              'columns': [
                                  {
                                      'name': 'string'
                                  },
                              ]
                          },
                          'allowedResultReceivers': [
                              'string',
                          ],
                          'allowedAdditionalAnalyses': [
                              'string',
                          ]
                      }
                  }
              }
          }
      }
      
    **Response Structure**

    

    - *(dict) --* 
      

      - **analysisRule** *(dict) --* 

        A specification about how data from the configured table can be used.

        
        

        - **collaborationId** *(string) --* 

          The unique ID for the associated collaboration.

          
        

        - **type** *(string) --* 

          The type of analysis rule.

          
        

        - **name** *(string) --* 

          The name for the analysis rule.

          
        

        - **createTime** *(datetime) --* 

          The time the analysis rule was created.

          
        

        - **updateTime** *(datetime) --* 

          The time the analysis rule was last updated.

          
        

        - **policy** *(dict) --* 

          A policy that describes the associated data usage limitations.

          .. note::    This is a Tagged Union structure. Only one of the     following top level keys will be set: ``v1``.     If a client receives an unknown member it will     set ``SDK_UNKNOWN_MEMBER`` as the top level key,     which maps to the name or tag of the unknown     member. The structure of ``SDK_UNKNOWN_MEMBER`` is     as follows::

                    'SDK_UNKNOWN_MEMBER': {'name': 'UnknownMemberName'}


        
          

          - **v1** *(dict) --* 

            Controls on the query specifications that can be run on configured table.

            .. note::    This is a Tagged Union structure. Only one of the     following top level keys will be set: ``list``, ``aggregation``, ``custom``, ``idMappingTable``.     If a client receives an unknown member it will     set ``SDK_UNKNOWN_MEMBER`` as the top level key,     which maps to the name or tag of the unknown     member. The structure of ``SDK_UNKNOWN_MEMBER`` is     as follows::

                        'SDK_UNKNOWN_MEMBER': {'name': 'UnknownMemberName'}


          
            

            - **list** *(dict) --* 

              Analysis rule type that enables only list queries on a configured table.

              
              

              - **joinColumns** *(list) --* 

                Columns that can be used to join a configured table with the table of the member who can query and other members' configured tables.

                
                

                - *(string) --* 
            
              

              - **allowedJoinOperators** *(list) --* 

                The logical operators (if any) that are to be used in an INNER JOIN match condition. Default is ``AND``.

                
                

                - *(string) --* 
            
              

              - **listColumns** *(list) --* 

                Columns that can be listed in the output.

                
                

                - *(string) --* 
            
              

              - **additionalAnalyses** *(string) --* 

                An indicator as to whether additional analyses (such as Clean Rooms ML) can be applied to the output of the direct query.

                
          
            

            - **aggregation** *(dict) --* 

              Analysis rule type that enables only aggregation queries on a configured table.

              
              

              - **aggregateColumns** *(list) --* 

                The columns that query runners are allowed to use in aggregation queries.

                
                

                - *(dict) --* 

                  Column in configured table that can be used in aggregate function in query.

                  
                  

                  - **columnNames** *(list) --* 

                    Column names in configured table of aggregate columns.

                    
                    

                    - *(string) --* 
                
                  

                  - **function** *(string) --* 

                    Aggregation function that can be applied to aggregate column in query.

                    
              
            
              

              - **joinColumns** *(list) --* 

                Columns in configured table that can be used in join statements and/or as aggregate columns. They can never be outputted directly.

                
                

                - *(string) --* 
            
              

              - **joinRequired** *(string) --* 

                Control that requires member who runs query to do a join with their configured table and/or other configured table in query.

                
              

              - **allowedJoinOperators** *(list) --* 

                Which logical operators (if any) are to be used in an INNER JOIN match condition. Default is ``AND``.

                
                

                - *(string) --* 
            
              

              - **dimensionColumns** *(list) --* 

                The columns that query runners are allowed to select, group by, or filter by.

                
                

                - *(string) --* 
            
              

              - **scalarFunctions** *(list) --* 

                Set of scalar functions that are allowed to be used on dimension columns and the output of aggregation of metrics.

                
                

                - *(string) --* 
            
              

              - **outputConstraints** *(list) --* 

                Columns that must meet a specific threshold value (after an aggregation function is applied to it) for each output row to be returned.

                
                

                - *(dict) --* 

                  Constraint on query output removing output rows that do not meet a minimum number of distinct values of a specified column.

                  
                  

                  - **columnName** *(string) --* 

                    Column in aggregation constraint for which there must be a minimum number of distinct values in an output row for it to be in the query output.

                    
                  

                  - **minimum** *(integer) --* 

                    The minimum number of distinct values that an output row must be an aggregation of. Minimum threshold of distinct values for a specified column that must exist in an output row for it to be in the query output.

                    
                  

                  - **type** *(string) --* 

                    The type of aggregation the constraint allows. The only valid value is currently `COUNT_DISTINCT`.

                    
              
            
              

              - **additionalAnalyses** *(string) --* 

                An indicator as to whether additional analyses (such as Clean Rooms ML) can be applied to the output of the direct query.

                 

                The ``additionalAnalyses`` parameter is currently supported for the list analysis rule ( ``AnalysisRuleList``) and the custom analysis rule ( ``AnalysisRuleCustom``).

                
          
            

            - **custom** *(dict) --* 

              Analysis rule type that enables custom SQL queries on a configured table.

              
              

              - **allowedAnalyses** *(list) --* 

                The ARN of the analysis templates that are allowed by the custom analysis rule.

                
                

                - *(string) --* 
            
              

              - **allowedAnalysisProviders** *(list) --* 

                The IDs of the Amazon Web Services accounts that are allowed to query by the custom analysis rule. Required when ``allowedAnalyses`` is ``ANY_QUERY``.

                
                

                - *(string) --* 
            
              

              - **additionalAnalyses** *(string) --* 

                An indicator as to whether additional analyses (such as Clean Rooms ML) can be applied to the output of the direct query.

                
              

              - **disallowedOutputColumns** *(list) --* 

                A list of columns that aren't allowed to be shown in the query output.

                
                

                - *(string) --* 
            
              

              - **differentialPrivacy** *(dict) --* 

                The differential privacy configuration.

                
                

                - **columns** *(list) --* 

                  The name of the column (such as user_id) that contains the unique identifier of your users whose privacy you want to protect. If you want to turn on diﬀerential privacy for two or more tables in a collaboration, you must conﬁgure the same column as the user identiﬁer column in both analysis rules.

                  
                  

                  - *(dict) --* 

                    Specifies the name of the column that contains the unique identifier of your users, whose privacy you want to protect.

                    
                    

                    - **name** *(string) --* 

                      The name of the column, such as user_id, that contains the unique identifier of your users, whose privacy you want to protect. If you want to turn on differential privacy for two or more tables in a collaboration, you must configure the same column as the user identifier column in both analysis rules.

                      
                
              
            
          
            

            - **idMappingTable** *(dict) --* 

              The ID mapping table.

              
              

              - **joinColumns** *(list) --* 

                The columns that query runners are allowed to use in an INNER JOIN statement.

                
                

                - *(string) --* 
            
              

              - **queryConstraints** *(list) --* 

                The query constraints of the analysis rule ID mapping table.

                
                

                - *(dict) --* 

                  Provides any necessary query constraint information.

                  .. note::    This is a Tagged Union structure. Only one of the     following top level keys will be set: ``requireOverlap``.     If a client receives an unknown member it will     set ``SDK_UNKNOWN_MEMBER`` as the top level key,     which maps to the name or tag of the unknown     member. The structure of ``SDK_UNKNOWN_MEMBER`` is     as follows::

                                    'SDK_UNKNOWN_MEMBER': {'name': 'UnknownMemberName'}


                
                  

                  - **requireOverlap** *(dict) --* 

                    An array of column names that specifies which columns are required in the JOIN statement.

                    
                    

                    - **columns** *(list) --* 

                      The columns that are required to overlap.

                      
                      

                      - *(string) --* 
                  
                
              
            
              

              - **dimensionColumns** *(list) --* 

                The columns that query runners are allowed to select, group by, or filter by.

                
                

                - *(string) --* 
            
          
        
      
        

        - **collaborationPolicy** *(dict) --* 

          Controls on the query specifications that can be run on an associated configured table.

          .. note::    This is a Tagged Union structure. Only one of the     following top level keys will be set: ``v1``.     If a client receives an unknown member it will     set ``SDK_UNKNOWN_MEMBER`` as the top level key,     which maps to the name or tag of the unknown     member. The structure of ``SDK_UNKNOWN_MEMBER`` is     as follows::

                    'SDK_UNKNOWN_MEMBER': {'name': 'UnknownMemberName'}


        
          

          - **v1** *(dict) --* 

            The policy for the configured table association analysis rule.

            .. note::    This is a Tagged Union structure. Only one of the     following top level keys will be set: ``list``, ``aggregation``, ``custom``.     If a client receives an unknown member it will     set ``SDK_UNKNOWN_MEMBER`` as the top level key,     which maps to the name or tag of the unknown     member. The structure of ``SDK_UNKNOWN_MEMBER`` is     as follows::

                        'SDK_UNKNOWN_MEMBER': {'name': 'UnknownMemberName'}


          
            

            - **list** *(dict) --* 

              Analysis rule type that enables only list queries on a configured table.

              
              

              - **allowedResultReceivers** *(list) --* 

                The list of collaboration members who are allowed to receive results of queries run with this configured table.

                
                

                - *(string) --* 
            
              

              - **allowedAdditionalAnalyses** *(list) --* 

                The list of resources or wildcards (ARNs) that are allowed to perform additional analysis on query output.

                
                

                - *(string) --* 
            
          
            

            - **aggregation** *(dict) --* 

              Analysis rule type that enables only aggregation queries on a configured table.

              
              

              - **allowedResultReceivers** *(list) --* 

                The list of collaboration members who are allowed to receive results of queries run with this configured table.

                
                

                - *(string) --* 
            
              

              - **allowedAdditionalAnalyses** *(list) --* 

                The list of resources or wildcards (ARNs) that are allowed to perform additional analysis on query output.

                 

                The ``allowedAdditionalAnalyses`` parameter is currently supported for the list analysis rule ( ``AnalysisRuleList``) and the custom analysis rule ( ``AnalysisRuleCustom``).

                
                

                - *(string) --* 
            
          
            

            - **custom** *(dict) --* 

              Analysis rule type that enables the table owner to approve custom SQL queries on their configured tables. It supports differential privacy.

              
              

              - **allowedResultReceivers** *(list) --* 

                The list of collaboration members who are allowed to receive results of queries run with this configured table.

                
                

                - *(string) --* 
            
              

              - **allowedAdditionalAnalyses** *(list) --* 

                The list of resources or wildcards (ARNs) that are allowed to perform additional analysis on query output.

                
                

                - *(string) --* 
            
          
        
      
        

        - **consolidatedPolicy** *(dict) --* 

          The consolidated policy for the analysis rule.

          .. note::    This is a Tagged Union structure. Only one of the     following top level keys will be set: ``v1``.     If a client receives an unknown member it will     set ``SDK_UNKNOWN_MEMBER`` as the top level key,     which maps to the name or tag of the unknown     member. The structure of ``SDK_UNKNOWN_MEMBER`` is     as follows::

                    'SDK_UNKNOWN_MEMBER': {'name': 'UnknownMemberName'}


        
          

          - **v1** *(dict) --* 

            The consolidated policy version 1.

            .. note::    This is a Tagged Union structure. Only one of the     following top level keys will be set: ``list``, ``aggregation``, ``custom``.     If a client receives an unknown member it will     set ``SDK_UNKNOWN_MEMBER`` as the top level key,     which maps to the name or tag of the unknown     member. The structure of ``SDK_UNKNOWN_MEMBER`` is     as follows::

                        'SDK_UNKNOWN_MEMBER': {'name': 'UnknownMemberName'}


          
            

            - **list** *(dict) --* 

              The list of consolidated policies.

              
              

              - **joinColumns** *(list) --* 

                The columns to join on.

                
                

                - *(string) --* 
            
              

              - **allowedJoinOperators** *(list) --* 

                The allowed join operators in the consolidated policy list.

                
                

                - *(string) --* 
            
              

              - **listColumns** *(list) --* 

                The columns in the consolidated policy list.

                
                

                - *(string) --* 
            
              

              - **additionalAnalyses** *(string) --* 

                Additional analyses for the consolidated policy list.

                
              

              - **allowedResultReceivers** *(list) --* 

                The allowed result receivers.

                
                

                - *(string) --* 
            
              

              - **allowedAdditionalAnalyses** *(list) --* 

                The additional analyses allowed by the consolidated policy list.

                
                

                - *(string) --* 
            
          
            

            - **aggregation** *(dict) --* 

              The aggregation setting for the consolidated policy.

              
              

              - **aggregateColumns** *(list) --* 

                Aggregate columns in consolidated policy aggregation.

                
                

                - *(dict) --* 

                  Column in configured table that can be used in aggregate function in query.

                  
                  

                  - **columnNames** *(list) --* 

                    Column names in configured table of aggregate columns.

                    
                    

                    - *(string) --* 
                
                  

                  - **function** *(string) --* 

                    Aggregation function that can be applied to aggregate column in query.

                    
              
            
              

              - **joinColumns** *(list) --* 

                The columns to join on.

                
                

                - *(string) --* 
            
              

              - **joinRequired** *(string) --* 

                Join required

                
              

              - **allowedJoinOperators** *(list) --* 

                The allowed join operators.

                
                

                - *(string) --* 
            
              

              - **dimensionColumns** *(list) --* 

                The dimension columns of the consolidated policy aggregation.

                
                

                - *(string) --* 
            
              

              - **scalarFunctions** *(list) --* 

                The scalar functions.

                
                

                - *(string) --* 
            
              

              - **outputConstraints** *(list) --* 

                The output constraints of the consolidated policy aggregation.

                
                

                - *(dict) --* 

                  Constraint on query output removing output rows that do not meet a minimum number of distinct values of a specified column.

                  
                  

                  - **columnName** *(string) --* 

                    Column in aggregation constraint for which there must be a minimum number of distinct values in an output row for it to be in the query output.

                    
                  

                  - **minimum** *(integer) --* 

                    The minimum number of distinct values that an output row must be an aggregation of. Minimum threshold of distinct values for a specified column that must exist in an output row for it to be in the query output.

                    
                  

                  - **type** *(string) --* 

                    The type of aggregation the constraint allows. The only valid value is currently `COUNT_DISTINCT`.

                    
              
            
              

              - **additionalAnalyses** *(string) --* 

                Additional analyses for the consolidated policy aggregation.

                
              

              - **allowedResultReceivers** *(list) --* 

                The allowed result receivers.

                
                

                - *(string) --* 
            
              

              - **allowedAdditionalAnalyses** *(list) --* 

                The additional analyses allowed by the consolidated policy aggregation.

                
                

                - *(string) --* 
            
          
            

            - **custom** *(dict) --* 

              Custom policy

              
              

              - **allowedAnalyses** *(list) --* 

                The allowed analyses.

                
                

                - *(string) --* 
            
              

              - **allowedAnalysisProviders** *(list) --* 

                The allowed analysis providers.

                
                

                - *(string) --* 
            
              

              - **additionalAnalyses** *(string) --* 

                Additional analyses for the consolidated policy.

                
              

              - **disallowedOutputColumns** *(list) --* 

                Disallowed output columns

                
                

                - *(string) --* 
            
              

              - **differentialPrivacy** *(dict) --* 

                Specifies the unique identifier for your users.

                
                

                - **columns** *(list) --* 

                  The name of the column (such as user_id) that contains the unique identifier of your users whose privacy you want to protect. If you want to turn on diﬀerential privacy for two or more tables in a collaboration, you must conﬁgure the same column as the user identiﬁer column in both analysis rules.

                  
                  

                  - *(dict) --* 

                    Specifies the name of the column that contains the unique identifier of your users, whose privacy you want to protect.

                    
                    

                    - **name** *(string) --* 

                      The name of the column, such as user_id, that contains the unique identifier of your users, whose privacy you want to protect. If you want to turn on differential privacy for two or more tables in a collaboration, you must configure the same column as the user identifier column in both analysis rules.

                      
                
              
            
              

              - **allowedResultReceivers** *(list) --* 

                The allowed result receivers.

                
                

                - *(string) --* 
            
              

              - **allowedAdditionalAnalyses** *(list) --* 

                The additional analyses allowed by the consolidated policy.

                
                

                - *(string) --* 
            
          
        
      
    
  
  **Exceptions**
  
  *   :py:class:`CleanRoomsService.Client.exceptions.ResourceNotFoundException`

  
  *   :py:class:`CleanRoomsService.Client.exceptions.InternalServerException`

  
  *   :py:class:`CleanRoomsService.Client.exceptions.ValidationException`

  
  *   :py:class:`CleanRoomsService.Client.exceptions.ThrottlingException`

  
  *   :py:class:`CleanRoomsService.Client.exceptions.AccessDeniedException`

  