View a markdown version of this page

의 사용자 지정 분석 규칙 AWS Clean Rooms - AWS Clean Rooms

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

의 사용자 지정 분석 규칙 AWS Clean Rooms

에서 AWS Clean Rooms사용자 지정 분석 규칙은 구성된 테이블에서 사용자 지정 쿼리를 실행할 수 있는 새로운 유형의 분석 규칙입니다. 사용자 지정 SQL 쿼리는 여전히 SELECT 명령만 사용하는 것으로 제한되지만 집계목록 쿼리보다 더 많은 SQL 구성을 사용할 수 있습니다(예: 창 함수, OUTER JOIN, CTE 또는 하위 쿼리가 있고, 전체 목록은 AWS Clean Rooms SQL 참조를 참조하세요). 사용자 지정 SQL 쿼리는 집계목록 쿼리와 같은 쿼리 구조를 따를 필요가 없습니다.

사용자 지정 분석 규칙은 사용자 지정 속성 분석, 벤치마킹, 증분 분석, 대상 발견과 같은 집계 및 목록 분석 규칙이 지원하는 것보다 더 고급 사용 사례를 지원합니다. 이는 집계 및 목록 분석 규칙이 지원하는 사용 사례의 일부에 추가됩니다.

사용자 지정 분석 규칙은 차등 프라이버시 기능도 지원합니다. 차등 프라이버시는 데이터 프라이버시를 보호하기 위해 수학적으로 엄격한 프레임워크입니다. 자세한 내용은 AWS Clean Rooms 차등 프라이버시 단원을 참조하십시오. 분석 템플릿을 생성할 때 AWS Clean Rooms 차등 프라이버시는 템플릿을 확인하여 AWS Clean Rooms 차등 프라이버시에 대한 범용 쿼리 구조와 호환되는지 확인합니다. 이 검증을 통해 차등 프라이버시 보호 테이블에서 허용되지 않는 분석 템플릿을 생성하지 않을 수 있습니다.

사용자 지정 분석 규칙을 구성하기 위해 데이터 소유자는 분석 템플릿에 저장된 특정 사용자 지정 쿼리가 구성된 테이블에서 실행되도록 허용하도록 선택할 수 있습니다. 데이터 소유자는 사용자 지정 분석 규칙에서 허용된 분석 컨트롤에 추가하기 전에 분석 템플릿을 검토합니다. 분석 템플릿은 테이블이 다른 공동 작업과 연결되어 있더라도 해당 템플릿을 만든 공동 작업에서만 사용할 수 있고 볼 수 있으며 해당 공동 작업에서 쿼리할 수 있는 구성원만 실행할 수 있습니다.

또는 구성원이 다른 구성원(쿼리 제공자)이 검토 없이 쿼리를 생성하도록 허용할 수도 있습니다. 구성원은 사용자 지정 분석 규칙에서 허용된 쿼리 제공자가 제어하는 쿼리 제공자의 계정을 추가합니다. 쿼리 제공자가 쿼리를 수행할 수 있는 구성원인 경우 구성원은 구성된 테이블에서 직접 모든 쿼리를 실행할 수 있습니다. 쿼리 제공자는 분석 템플릿을 생성하여 쿼리를 생성할 수도 있습니다. 쿼리 공급자가 생성한 모든 쿼리는이 존재하고 테이블 AWS 계정 이 연결된 모든 공동 작업의 테이블에서 자동으로 실행될 수 있습니다.

이 페이지에는 다음 섹션이 포함되어 있습니다.

사용자 지정 분석 규칙은 다음과 같은 개인 정보 보호 강화 제어를 지원합니다.

사용자 지정 분석 규칙 구조

다음 사전 정의된 구조는 사용자 지정 분석 규칙에서 사용 가능한 컨트롤을 보여줍니다. 사용 사례에 필요한 제어만 포함합니다. differentialPrivacy 컨트롤의 userIdentifier 값은 user_id와 같이 사용자를 고유하게 식별하는 열입니다. 공동 작업에서 차등 프라이버시가 활성화된 테이블이 두 개 이상 있는 경우 두 분석 규칙 모두에서 사용자 식별자 열과 동일한 열을 구성해야 AWS Clean Rooms 합니다. 이렇게 하면 테이블 전체에서 사용자에 대한 일관된 정의가 유지됩니다.

{ "allowedAnalyses": ["ANY_QUERY"] | string[], "allowedAnalysisProviders": [], "disallowedOutputColumns": [], "aggregationThresholds": [ { "identityColumns": [], "minimumIdentityCount": number, "type": "COUNT_DISTINCT", "allowedAggregateExpressionType": "COLUMNS_ONLY" | "ANY_EXPRESSION", "outputColumnThresholds": [ { "outputColumnName": string, "minimumIdentityCount": number } ] } ], "comparisonControls": { "allowedLiteralComparisonColumns": [], "allowedColumnComparisonColumns": [] }, "differentialPrivacy": { "columns": [ { "name": "userIdentifier" } ] } }

다음 작업 중 하나를 수행할 수 있습니다.

  • 허용된 분석 제어에 분석 템플릿 ARN을 추가합니다. 이 경우 allowedAnalysisProviders 컨트롤은 포함되지 않습니다.

    { allowedAnalyses: string[] }
  • allowedAnalysisProviders 제어에 AWS 계정 IDs 추가합니다. 이 경우에는 ANY_QUERYallowedAnalyses 컨트롤에 추가합니다.

    { allowedAnalyses: ["ANY_QUERY"], allowedAnalysisProviders: string[] }

다음 컨트롤 중 하나를 구성할 수도 있습니다.

  • 가 쿼리 결과에 프로젝션되도록 허용하지 않는 열입니다. 자세한 내용은 허용되지 않는 출력 열 단원을 참조하십시오.

    { disallowedOutputColumns: string[] }
  • 각 결과 행이 최소 수의 개별 데이터 주체를 나타내도록 요구하는 최소 집계 임계값입니다. 를 통해 개별 출력 열의 임계값을 재정의outputColumnThresholds하고 집계 함수 내에서 표현식이 허용되는지 여부를 allowedAggregateExpressionType 제어할 수 있습니다. 자세한 내용은 최소 집계 임계값, 특정 출력 열의 최소 집계 임계값 재정의, 집계 함수에서 중첩 표현식 허용 섹션을 참조하세요.

    { aggregationThresholds: [ { identityColumns: string[], minimumIdentityCount: number, type: "COUNT_DISTINCT", allowedAggregateExpressionType: "COLUMNS_ONLY" | "ANY_EXPRESSION", outputColumnThresholds: [ { outputColumnName: string, minimumIdentityCount: number } ] } ] }
  • 리터럴 값과 비교할 수 있는 열과 다른 열과 비교할 수 있는 열을 정의하는 비교 제어입니다. 자세한 내용은 비교 제어 단원을 참조하십시오.

    { comparisonControls: { allowedLiteralComparisonColumns: string[], allowedColumnComparisonColumns: string[] } }
  • 사용자 식별자 열을 식별하여 테이블을 보호하는 차등 프라이버시 구성입니다. 자세한 내용은 AWS Clean Rooms 차등 프라이버시를 참조하세요.

    { differentialPrivacy: { columns: [ { name: string } ] } }

비교 제어와 함께 최소 집계 임계값을 구성하는 것이 권장되는 구성입니다. 임계값 자체는 여전히 낮은 카디널리티 또는 준식별 열을 비슷하게 유지하므로 의도하지 않은 방식으로 결과의 범위를 좁힐 수 있습니다.

테이블에 우편번호 또는 연령대와 같은 낮은 카디널리티 또는 준식별 열이 포함되어 있거나 쿼리 실행기가 완전히 신뢰할 수 없는 경우 비교 제어를 구성할 수 있습니다. 함께 구성된 두 컨트롤을 모두 보여주는 작업 예제는 단원을 참조하십시오최소 집계 임계값 및 비교 제어가 포함된 사용자 지정 분석 규칙 예제.

분석 템플릿이 포함된 사용자 지정 분석 규칙 예제

다음 예제에서는 두 회사가 사용자 지정 분석 규칙을 AWS Clean Rooms 사용하여에서 협업하는 방법을 보여줍니다.

회사 A에는 고객 및 판매 데이터가 있습니다. 회사 A는 회사 B 사이트에서 광고 캠페인의 매출 증대를 파악하는 데 관심이 있습니다. 회사 B에는 회사에 유용한 시청률 데이터 및 세그먼트 속성(예: 광고를 볼 때 사용한 장치)이 있습니다.

회사 A에는 공동 작업에서 실행하려는 특정 증분 쿼리가 있습니다.

공동 작업을 생성하고 공동 작업을 통해 사용자 지정 분석을 실행하기 위해 회사는 다음을 수행합니다.

  1. 회사 A는 공동 작업을 만들고 멤버십을 생성합니다. 공동 작업에는 회사 B가 공동 작업의 또 다른 구성원으로 참여합니다. 회사 A는 공동 작업에서 쿼리 로깅을 활성화하고 해당 계정에서 쿼리 로깅을 활성화합니다.

  2. 회사 B는 공동 작업 멤버십을 생성합니다. 이를 통해 해당 계정에서 쿼리 로깅이 가능합니다.

  3. 회사 A는 CRM으로 구성된 테이블을 생성합니다.

  4. 회사 A는 판매 구성 테이블에 빈 사용자 지정 분석 규칙을 추가합니다.

  5. 회사 A는 판매 구성 테이블을 공동 작업에 연결합니다.

  6. 회사 B는 시청률 구성 테이블을 만듭니다.

  7. 회사 B는 시청률 구성 테이블에 빈 사용자 지정 분석 규칙을 추가합니다.

  8. 회사 B는 시청률 구성 테이블을 공동 작업과 연결합니다.

  9. 회사 A는 공동 작업과 관련된 판매 테이블 및 시청률 테이블을 보고 캠페인 월의 증분 쿼리 및 매개 변수를 추가하여 분석 템플릿을 만듭니다.

    { "analysisParameters": [ { "defaultValue": "" "type": "DATE" "name": "campaign_month" } ], "description": "Monthly incrementality query using sales and viewership data" "format": "SQL" "name": "Incrementality analysis" "source": "WITH labeleddata AS ( SELECT hashedemail, deviceid, purchases, unitprice, purchasedate, CASE WHEN testvalue IN ('value1', 'value2', 'value3') THEN 0 ELSE 1 END AS testgroup FROM viewershipdata ) SELECT labeleddata.purchases, provider.impressions FROM labeleddata INNER JOIN salesdata ON labeleddata.hashedemail = provider.hashedemail WHERE MONTH(labeleddata.purchasedate) > :campaignmonth AND testgroup = :group " }
  10. 회사 A는 사용자 지정 분석 규칙에서 허용된 분석 제공자 컨트롤에 해당 계정(예: 444455556666)을 추가합니다. 이들은 자신이 만든 모든 쿼리가 판매 구성 테이블에서 실행되도록 허용하기를 원하기 때문에 허용된 분석 공급자 컨트롤을 사용합니다.

    { "allowedAnalyses": [ "ANY_QUERY" ], "allowedAnalysisProviders": [ "444455556666" ] }
  11. 회사 B는 공동 작업에서 생성된 분석 템플릿을 보고 쿼리 문자열 및 파라미터를 포함한 내용을 검토합니다.

  12. 회사 B는 분석 템플릿이 증분 사용 사례를 충족하고 시청률 구성 테이블을 쿼리할 수 있는 방법에 대한 프라이버시 요구 사항을 충족한다고 판단합니다.

  13. 회사 B는 시청률 테이블의 사용자 지정 분석 규칙에서 허용된 분석 컨트롤에 분석 템플릿 ARN을 추가합니다. 시청률이 구성된 테이블에서 증분 쿼리만 실행되도록 허용하려고 하기 때문에 허용된 분석 제어를 사용합니다.

    { "allowedAnalyses": [ "arn:aws:cleanrooms:us-east-1:111122223333:membership/41327cc4-bbf0-43f1-b70c-a160dddceb08/analysistemplate/1ff1bf9d-781c-418d-a6ac-2b80c09d6292" ] }
  14. 회사 A는 분석 템플릿을 실행하고 매개변수 값 05-01-2023을 사용합니다.

최소 집계 임계값이 있는 사용자 지정 분석 규칙 예제

다음 예제에서는 두 회사가 개별 분석 템플릿을 검토하는 대신 최소 집계 임계값이 있는 사용자 지정 분석 규칙을 AWS Clean Rooms 사용하여에서 협업하는 방법을 보여줍니다.

회사 A는 user_id, campaign_id및가 포함된 impressions 테이블이 있는 게시자입니다event_date. 회사 B는 지정된 캠페인을 본 고유 사용자 수인 캠페인 도달 범위를 측정하려는 광고자입니다. 회사 A는 쿼리 결과가 개인 또는 소규모 그룹을 드러낼 수 없도록 하기 위해 개별 분석 템플릿을 검토하는 대신 최소 집계 임계값을 사용합니다.

공동 작업을 생성하고 사용자 지정 분석을 실행하기 위해 회사는 다음을 수행합니다.

  1. 회사 A는 회사 B와 다른 멤버 및 쿼리할 수 있는 멤버로 공동 작업을 생성합니다. 회사 A는 공동 작업 및 해당 계정에서 쿼리 로깅을 활성화합니다.

  2. 회사 B는 공동 작업에 멤버십을 생성하고 계정에서 쿼리 로깅을 활성화합니다.

  3. 회사 A는 impressions 구성된 테이블을 생성합니다.

  4. 회사 A는 최소 집계 임계값으로 impressions 구성된 테이블에 사용자 지정 분석 규칙을 추가하여 반환된 모든 행이 최소 100명의 개별 사용자를 나타내도록 합니다. 회사 A는 자격 증명 열user_id로를 설정하고 민감도가 낮은 campaign_id 출력 열의 임계값을 5로 재정의합니다. 또한 회사 A는 campaign_id 및에 대한 리터럴 비교를 허용event_date하므로 회사 B는 하나의 캠페인 및 날짜 범위로 쿼리 범위를 지정할 수 있습니다. 리터럴 비교에 나타나는 모든 열은 허용 목록에 있어야 합니다. 마지막으로 회사 A는 허용된 분석 공급자 제어에 회사 B의 계정을 추가하여 회사 B가 템플릿별 검토 없이 쿼리를 실행할 수 있도록 합니다.

    { "aggregationThresholds": [ { "identityColumns": [ "user_id" ], "minimumIdentityCount": 100, "type": "COUNT_DISTINCT", "allowedAggregateExpressionType": "COLUMNS_ONLY", "outputColumnThresholds": [ { "outputColumnName": "campaign_id", "minimumIdentityCount": 5 } ] } ], "comparisonControls": { "allowedLiteralComparisonColumns": [ "campaign_id", "event_date" ] }, "allowedAnalyses": [ "ANY_QUERY" ], "allowedAnalysisProviders": [ "444455556666" ] }
  5. 회사 A는 impressions 구성된 테이블을 공동 작업에 연결합니다.

  6. 회사 B는 로 그룹화event_date되고 캠페인으로 필터링된 도달 쿼리를 실행합니다.

    SELECT event_date, COUNT(DISTINCT user_id) AS reach FROM impressions WHERE event_date >= '2026-01-01' AND campaign_id = 'Holiday Promotion' GROUP BY event_date;
  7. AWS Clean Rooms 는 최소 100명의 개별 사용자가 지원하는 행만 반환하고 나머지는 숨기므로 회사 B는 개인 또는 소그룹에 대해 학습하지 않고 휴일 프로모션 캠페인의 일일 도달 범위를 학습합니다.

    event_date reach
    2026-01-01 142
    2026-01-02 118
    2026-01-04 103

    해당 날짜에 캠페인을 본 사용자가 100명 미만이었기 때문에이 날짜는 결과에 2026-01-03 표시되지 않으므로는 해당 행을 AWS Clean Rooms 억제했습니다.

분석 템플릿 접근 방식과 주요 차이점은 회사 A가 특정 쿼리를 검토하지 않았다는 것입니다. 대신 회사 A는 임계값을 사용하여 쿼리가 반환할 수 있는 내용을 제한합니다. 자세한 내용은 최소 집계 임계값비교 제어 섹션을 참조하세요.

최소 집계 임계값 및 비교 제어가 포함된 사용자 지정 분석 규칙 예제

비교 제어와 함께 최소 집계 임계값을 구성하는 것이 권장되는 기준 구성입니다. 임계값만으로는 모든 결과 행이 최소 수의 개별 데이터 주체를 나타내지만, 낮은 카디널리티 또는 준식별 열과의 비교를 막지는 않습니다. 비교 제어가 없으면 쿼리 실행기는 해당 열을 필터링하거나 조인할 수 있으므로 범위를 좁히면 의도하지 않은 방식으로 이어질 수 있습니다.

테이블에 우편번호 또는 연령대와 같은 낮은 카디널리티 또는 준식별 열이 포함되어 있거나 쿼리 실행기가 완전히 신뢰할 수 없는 경우 비교 제어를 구성할 수 있습니다. 비교 제어를 추가하면 리터럴 비교 및 열 column-to-column 비교에 나타날 수 있는 열이 제한되어 임계값만 열어 두는 갭이 닫힙니다.

다음 구성은 두 컨트롤을 모두 결합합니다.

{ "aggregationThresholds": [ { "identityColumns": [ "user_id" ], "minimumIdentityCount": 100, "type": "COUNT_DISTINCT", "allowedAggregateExpressionType": "COLUMNS_ONLY" } ], "comparisonControls": { "allowedLiteralComparisonColumns": [ "campaign_id" ], "allowedColumnComparisonColumns": [ "user_id" ] }, "allowedAnalyses": [ "ANY_QUERY" ], "allowedAnalysisProviders": [ "444455556666" ] }

이 구성을 사용하면 모든 결과 행이 최소 100개의 개별 데이터 주체를 나타냅니다. 쿼리 실행기는 리터럴 비교를 campaign_id 사용하여 필터링하고 column-to-column 비교를 user_id 사용하여 조인할 수 있습니다. 비교 허용 목록이 설정되므로 우편 번호 또는 연령대와 같은 카디널리티가 낮은 열을 포함하여 나열되지 않은 모든 열을 비교에 전혀 사용할 수 없습니다.

각 컨트롤에 대한 자세한 내용은 최소 집계 임계값 및 단원을 참조하십시오비교 제어. 허용되지 않는 출력 열도 포함하는 전체 구성은 섹션을 참조하세요모두 통합.

모두 통합

다음 예제에서는 허용되지 않는 출력 열, 최소 집계 임계값 및 비교 제어를 사용하여 사용자 지정 분석 규칙 유형의 전체 구성을 보여줍니다. 이 구성은 100개의 개별 데이터 주체의 최소 집계를 적용하고, user_id가 쿼리 결과에 프로젝션되지 않도록 하며, 쿼리 실행기가 user_id 열에 조인하는 고객의 교집합을 분석할 수 있도록 합니다.

또한이 정책은 민감도가 낮은 열 pricestatus에서 리터럴 비교 필터링을 허용하여 유연성을 높이고 campaign_id 열의 최소 집계 임계값을 5로 재정의합니다.

{ "disallowedOutputColumns": [ "user_id" ], "comparisonControls": { "allowedLiteralComparisonColumns": [ "status", "price" ], "allowedColumnComparisonColumns": [ "user_id" ] }, "aggregationThresholds": [ { "identityColumns": [ "user_id" ], "minimumIdentityCount": 100, "type": "COUNT_DISTINCT", "allowedAggregateExpressionType": "COLUMNS_ONLY", "outputColumnThresholds": [ { "outputColumnName": "campaign_id", "minimumIdentityCount": 5 } ] } ], "allowedAnalyses": [ "ANY_QUERY" ], "allowedAnalysisProviders": [ "444455556666", "333366669999" ] }