집계 분석 규칙 - AWS Clean Rooms

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

집계 분석 규칙

AWS Clean Rooms에서 집계 분석 규칙은 선택적 측정기준과 함께 COUNT, SUM 및/또는 AVG 함수를 사용하여 집계 통계를 생성합니다. 구성된 테이블에 집계 분석 규칙을 추가하면 쿼리를 할 수 있는 구성원이 구성된 테이블에서 쿼리를 실행할 수 있습니다.

집계 분석 규칙은 캠페인 계획, 미디어 도달 범위, 빈도 측정, 속성 등의 사용 사례를 지원합니다.

지원되는 쿼리 구조 및 구문은 집계 쿼리 구조 및 구문에 정의되어 있습니다.

집계 분석 규칙 - 쿼리 제어에 정의된 분석 규칙의 매개 변수에는 쿼리 컨트롤 및 쿼리 결과 컨트롤이 포함됩니다. 쿼리 컨트롤에는 쿼리할 수 있는 구성원이 소유한 하나 이상의 구성된 테이블에 구성된 테이블을 직접 또는 전이적으로 조인하도록 요구하는 기능이 포함됩니다. 이 요구 사항을 통해 쿼리가 테이블과 해당 테이블의 교차점(INNERJOIN)에서 실행되도록 할 수 있습니다.

집계 쿼리 구조 및 구문

집계 분석 규칙이 있는 테이블에 대한 쿼리는 다음 구문을 준수해야 합니다.

--select_aggregate_function_expression SELECT aggregation_function(column_name) [[AS] column_alias ] [, ...] --select_grouping_column_expression [, {column_name|scalar_function(arguments)} [[AS] column_alias ]][, ...] --table_expression FROM table_name [[AS] table_alias ] [[INNER] JOIN table_name [[AS] table_alias] ON join_condition] [...] --where_expression [WHERE where_condition] --group_by_expression [GROUP BY {column_name|scalar_function(arguments)}, ...]] --having_expression [HAVING having_condition] --order_by_expression [ORDER BY {column_name|scalar_function(arguments)} [{ASC|DESC}]] [,...]]

다음 표에서는 위 구문에 나열된 각 표현식에 대해 설명합니다.

표현식 정의 예제
select_aggregate_function_expression

다음 표현식을 포함하는 쉼표로 구분된 쉼표로 구분된 목록입니다.

  • select_aggregation_function_expression

  • select_aggregate_expression

참고

select_aggregate_expressionselect_aggregation_function_expression이(가) 하나 이상 있어야 합니다.

SELECT SUM(PRICE), user_segment

select_aggregation_function_expression

지원되는 집계 함수가 하나 이상의 열에 하나 이상 적용되었습니다. 열만 집계 함수의 인수로 사용할 수 있습니다.

참고

select_aggregate_expressionselect_aggregation_function_expression이(가) 하나 이상 있어야 합니다.

AVG(PRICE)

COUNT(DISTINCT user_id)

select_grouping_column_expression

다음을 사용하는 모든 식을 포함할 수 있는 표현식:

  • 테이블 열 이름

  • 지원되는 스칼라 함수

  • 리터럴 문자열입니다

  • 수치 리터럴

참고

select_aggregate_expression은(는) AS 매개 변수를 사용하거나 사용하지 않고 열에 별칭을 지정할 수 있습니다. 자세한 내용은 AWS Clean Rooms SQL 참조 섹션을 참조하세요.

TRUNC(timestampColumn)

UPPER(campaignName)

table_expression

테이블 또는 테이블의 조인으로, 조인 조건식을 join_condition와(과) 연결합니다.

join_condition은(는) BOOLEAN을 반환합니다.

table_expression은(는) 다음을 지원합니다.

  • 특정 JOIN 유형(INNERJOIN)

  • join_condition(=) 내의 동등 비교 조건

  • 논리 연산자(AND, OR).

FROM consumer_table INNER JOIN provider_table ON consumer_table.identifier1 = provider_table.identifier1 AND consumer_table.identifier2 = provider_table.identifier2
where_expression

부울을 반환하는 조건식. 다음과 같이 구성될 수 있습니다.

  • 테이블 열 이름

  • 지원되는 스칼라 함수

  • 수학적 연산

  • 문자열 리터럴

  • 수치 리터럴

지원되는 비교 조건은 (=, >, <, <=, >=, <>, !=, NOT, IN, NOT IN, LIKE, IS NULL, IS NOT NULL)입니다.

지원되는 논리 연산자는 (AND, OR)입니다.

where_expression은(는) 선택 사항입니다.

WHERE where_condition

WHERE price > 100

WHERE TRUNC(timestampColumn) = '1/1/2022'

WHERE timestampColumn = timestampColumn2 - 14

group_by_expression

select_grouping_column_expression의 요구 사항과 일치하는 표혁식 목록으로, 쉼표로 구분됩니다.

GROUP BY TRUNC(timestampColumn), UPPER(campaignName), segment

having_expression

조건은 부울 결과가 있는 표현식입니다. 지원되는 집계 함수가 단일 열(예:SUM(price))에 적용되며 숫자 리터럴과 비교됩니다.

지원되는 조건은 (=, >, <, <=, >=, <>, !=)입니다.

지원되는 논리 연산자는 (AND, OR)입니다.

having_expression은(는) 선택 사항입니다.

HAVING SUM(SALES) > 500

order_by_expression

앞에서 select_aggregate_expression에서 정의한 것과 동일한 요구 사항과 호환되는 표현식 목록으로 쉼표로 구분됩니다.

order_by_expression은(는) 선택 사항입니다.

참고

order_by_expression은(는) ASC와(과) DESC 매개변수를 허가합니다. 자세한 내용은 AWS Clean RoomsSQL 참조의 ASC DESC 매개변수를 참조하세요.

ORDER BY SUM(SALES), UPPER(campaignName)

집계 쿼리 구조 및 구문의 경우 다음 사항에 유의해야 합니다.

  • SELECT 이외의 SQL 명령은 지원되지 않습니다.

  • 하위 쿼리 및 공통 테이블 표현식(예:WITH)은 지원되지 않습니다.

  • 여러 쿼리를 결합하는 연산자(예:UNION)는 지원되지 않습니다.

  • TOP, LIMIT, 및 OFFSET 파라미터는 지원되지 않습니다.

집계 분석 규칙 - 쿼리 제어

집계 쿼리 컨트롤을 사용하면 테이블의 열을 사용하여 테이블을 쿼리하는 방법을 제어할 수 있습니다. 예를 들어 조인에 사용할 열, 계산할 수 있는 열 또는 WHERE 명령문에 사용할 수 있는 열을 제어할 수 있습니다.

다음 단원에서는 각 컨트롤에 대해 설명합니다.

집계 제어

집계 제어를 사용하면 허용할 집계 함수와 해당 집계 함수를 적용해야 하는 열을 정의할 수 있습니다. 집계 함수는 SELECT, HAVING, 및 ORDER BY 표현식에서 사용할 수 있습니다.

컨트롤 정의 사용량
aggregateColumns 집계 함수 내에서 사용할 수 있도록 구성된 테이블 열의 열

aggregateColumns은(는) SELECT, HAVING, 및 ORDER BY 표현식의 집계 함수 내에서 사용할 수 있습니다.

일부 aggregateColumns은(는) joinColumn(나중에 정의됨)(으)로 분류할 수도 있습니다.

주어진 aggregateColumn을(를) dimensionColumn(나중에 정의됨)(으)로도 분류할 수 없습니다.

function 카운트, 합계 및 평균 함수는 aggregateColumns 위에서 사용할 수 있습니다.

function은(는) 관련된 aggregateColumns에 적용할 수 있습니다.

조인 컨트롤

JOIN 절은 두 개 이상의 테이블에서 관련 열을 기반으로 두 개 이상의 테이블에서 행을 결합하는 데 사용됩니다.

조인 컨트롤을 사용하여 테이블을 table_expression의 다른 테이블에 조인하는 방법을 제어할 수 있습니다. AWS Clean Rooms은(는) INNERJOIN만 지원합니다. INNERJOIN명령문은 사용자가 정의하는 컨트롤에 따라 분석 규칙에서 joinColumn(으)로 명시적으로 분류된 열만 사용할 수 있습니다.

INNER JOIN은(는) 사용자가 구성한 테이블의 joinColumn와(과) 공동 작업의 다른 구성된 테이블의 joinColumn에서 작동해야 합니다. 테이블에서 joinColumn(으)로 사용할 수 있는 열을 결정합니다.

ON 절의 각 일치 조건은 두 열 간의 등식 비교 조건(=)을 사용해야 합니다.

ON 절 내의 여러 일치 조건은 다음과 같을 수 있습니다.

  • AND 논리 연산자를 사용하여 조합합니다

  • OR 논리 연산자를 사용하여 구분합니다

참고

모든 JOIN 일치 조건은 JOIN의 양쪽에서 한 행씩 일치해야 합니다. OR 또는 AND 논리 연산자로 연결된 모든 조건문도 이 요구 사항을 준수해야 합니다.

다음은 AND 논리 연산자를 사용한 쿼리의 예입니다.

SELECT some_col, other_col FROM table1 JOIN table2 ON table1.id = table2.id AND table1.name = table2.name

다음은 OR 논리 연산자를 사용하는 쿼리의 예입니다.

SELECT some_col, other_col FROM table1 JOIN table2 ON table1.id = table2.id OR table1.name = table2.name
컨트롤 정의 사용량
joinColumns 쿼리를 할 수 있는 구성원이 INNER JOIN 명령문에서 사용할 수 있도록 허용하려는 열(있는 경우)

특정 joinColumn을(를) aggregateColumn(으)로 분류할 수도 있습니다(집계 제어 참조).

동일한 열을 joinColumndimensionColumns(으)로 모두 사용할 수는 없습니다(나중에 참조).

aggregateColumn(으)로 분류되지 않는 한, joinColumn은(는) INNER JOIN이(가) 아닌 쿼리의 다른 부분에서는 사용할 수 없습니다.

joinRequired 쿼리할 수 있는 멤버에게 구성된 테이블이 있는 INNER JOIN이(가) 필요한지 여부를 제어합니다.

이 파라미터는 이 지정된 경우에만 INNER JOIN이(가) 필요합니다. 이 매개 변수를 활성화하지 않는 경우 INNER JOIN은(는) 선택 사항입니다.

이 매개 변수를 활성화하면 쿼리할 수 있는 구성원은 자신이 소유한 테이블을 INNER JOIN에 포함해야 합니다. 그들은 직접적으로든 간접적으로든(즉, 그들의 테이블을 다른 테이블에 조인하거나 그것이 자신의 테이블과 조인된 경우) 자신의 테이블과 JOIN해야 합니다

다음은 전이성의 예입니다.

ON my_table.identifer = third_party_table.identifier .... ON third_party_table.identifier = member_who_can_query_table.id
참고

쿼리할 수 있는 멤버도 joinRequired 파라미터를 사용할 수 있습니다. 이 경우 쿼리는 테이블을 하나 이상의 다른 테이블과 조인해야 합니다.

치수 제어

차원 컨트롤은 집계 열을 필터링, 그룹화 또는 집계할 수 있는 열을 제어합니다.

컨트롤 정의 사용량
dimensionColumns

쿼리할 수 있는 구성원이SELECT,WHERE, GROUP BY 및 ORDER BY에서 사용할 수 있도록 허용하는 열(있는 경우).

dimensionColumn은(는) SELECT(select_grouping_column_expression), WHERE, GROUPBY, 및 ORDER BY에서 사용할 수 있습니다.

동일한 열에 dimensionColumn, joinColumn, 및/또는aggregateColumn이(가) 모두 있을 수는 없습니다.

스칼라 함수

스칼라 함수는 차원 열에 사용할 수 있는 스칼라 함수를 제어합니다.

컨트롤 정의 사용량
scalarFunctions

쿼리의 dimensionColumns에서 사용할 수 있는 스칼라 함수.

dimensionColumns에 적용할 수 있는 스칼라 함수(있는 경우)를 지정합니다(예:CAST).

스칼라 함수는 다른 함수 위나 다른 함수 내에서 사용할 수 없습니다. 스칼라 함수의 인수는 열, 문자열 리터럴 또는 숫자형 리터럴일 수 있습니다.

지원되는 스칼라 함수는 다음과 같습니다.

  • 수학 함수 — ABS, 천장, 바닥, 통나무, LN, 원형, SQRT

  • 데이터 형식 지정 함수 – CAST, CONVERT, TO_CHAR, TO_DATE, TO_NUMBER, TO_TIMESTAMP

  • 문자열 함수 — 하한, 상단, 트림, 트림, 하위 문자열

    • RTRIM의 경우 트리밍할 사용자 정의 문자 세트를 사용할 수 없습니다.

  • 조건부 표현식 – COALESCE

  • 날짜 함수 — 추출, GETDATE, CURRENT_DATE, DATEADD

  • 기타 함수 — TRUNC

자세한 내용은 AWS Clean Rooms SQL 참조를 참조하세요.

집계 분석 규칙 - 쿼리 결과 제어

집계 쿼리 결과 컨트롤을 사용하면 각 출력 행이 충족해야 반환되는 조건을 하나 이상 지정하여 반환되는 결과를 제어할 수 있습니다. AWS Clean Rooms은(는) COUNT (DISTINCT column) >= X와(과) 같은 형식의 집계 제약 조건을 지원합니다. 이 양식을 사용하려면 각 행이 구성된 테이블에서 선택한 고유한 값을 X개 이상 집계해야 합니다(예: 고유 user_id 값의 최소 수). 제출된 쿼리 자체에서 지정된 열을 사용하지 않는 경우에도 이 최소 임계값은 자동으로 적용됩니다. 이 규칙들은 집합적으로 적용되며 쿼리에서 각 구성된 테이블에 걸쳐 적용되며, 공동 작업 참여자 각각의 구성된 테이블을 포함합니다.

구성된 각 테이블의 분석 규칙에는 하나 이상의 집계 제약조건이 있어야 합니다. 구성된 테이블 소유자는 여러 개의 columnName와(과) 연결된 minimum을(를) 추가할 수 있으며, 이는 일괄적으로 적용됩니다.

집계 제약 조건

집계 제약 조건은 쿼리 결과에서 반환되는 행을 제어합니다. 행이 반환되려면 집계 제약 조건에 지정된 각 열의 고유 값의 지정된 최소 개수를 충족해야 합니다. 이 요구 사항은 쿼리나 분석 규칙의 다른 부분에서 열이 명시적으로 언급되지 않은 경우에도 적용됩니다.

컨트롤 정의 사용량
columnName

각 출력 행이 충족해야 하는 조건에 사용되는 aggregateColumn입니다.

구성된 테이블의 모든 열이 될 수 있습니다.

minimum

쿼리 결과에서 반환되기 위해 출력 행에 있어야 하는 연관된 aggregateColumn의 최소 고유값 수(예: COUNT DISTINCT)입니다.

minimum은(는) 최소 2의 값이어야 합니다.

집계 분석 규칙 구조

다음 예제에서는 집계 분석 규칙의 사전 정의된 구조를 보여줍니다.

다음 예제에서는 데이터 MyTable은(는) 데이터 테이블을 나타냅니다. user input placeholder를 사용자의 정보로 바꿉니다.

{ "aggregateColumns": [ { "columnNames": [MyTable column names], "function": [Allowed Agg Functions] }, ], "joinRequired": ["QUERY_RUNNER"], "joinColumns": [MyTable column names], "dimensionColumns": [MyTable column names], "scalarFunctions": [Allowed Scalar functions], "outputConstraints": [ { "columnName": [MyTable column names], "minimum": [Numeric value] }, ] }

집계 분석 규칙 - 예제

다음 예는 집계 분석을 AWS Clean Rooms 사용하여 두 회사가 공동 작업을 수행할 수 있는 방법을 보여줍니다.

회사 A에는 고객 및 판매 데이터가 있습니다. 회사 A는 제품 반품 활동을 이해하는 데 관심이 있습니다. 회사 B는 회사 A의 소매업체 중 하나이며 반품 데이터를 보유하고 있습니다. 또한 B사는 A에 유용한 고객 세그먼트 속성을 가지고 있습니다(예: 관련 제품 구매, 소매업체의 고객 서비스 이용). 회사 B는 행 수준의 고객 반품 데이터 및 속성 정보를 제공하고 싶지 않습니다. 회사 B는 회사 A가 최소 집계 임계값으로 중복되는 고객에 대한 집계 통계를 얻을 수 있도록 일련의 쿼리를 활성화하려는 것뿐입니다.

A사와 B사는 A사가 제품 반품 활동을 이해하고 B사 및 기타 채널에서 더 나은 제품을 제공할 수 있도록 협력하기로 결정했습니다.

공동 작업을 구축하고 집계 분석을 실행하기 위해 회사는 다음과 같은 작업을 수행합니다.

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

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

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

  4. 회사 A는 판매 구성 테이블에 다음과 같은 집계 분석 규칙을 추가합니다.

    { "aggregateColumns": [ { "columnNames": [ "identifier" ], "function": "COUNT_DISTINCT" }, { "columnNames": [ "purchases" ], "function": "AVG" }, { "columnNames": [ "purchases" ], "function": "SUM" } ], "joinColumns": [ "hashedemail" ], "dimensionColumns": [ "demoseg", "purchasedate", "productline" ], "scalarFunctions": [ "CAST", "COALESCE", "TRUNC" ], "outputConstraints": [ { "columnName": "hashedemail", "minimum": 2, "type": "COUNT_DISTINCT" }, ] }

    aggregateColumns— 회사 A는 판매 데이터와 반품 데이터가 겹치는 순 고객 수를 세려고 합니다. 또한 A 회사는 purchases 제조 건수를 합산하여 returns의 수와 비교하려고 합니다.

    joinColumns— 회사 A는 판매 데이터의 고객과 반품 데이터의 고객을 매칭하는 데 identifier을(를) 사용하려고 합니다. 이렇게 하면 회사 A가 올바른 구매에 대한 반품을 매칭하는 데 도움이 됩니다. 또한 A사가 중복되는 고객을 세분화하는 데도 도움이 됩니다.

    dimensionColumns— 회사 A는 특정 제품별로 필터링하고, 일정 기간 동안의 구매 및 반품을 비교하고, 반품 날짜가 제품 날짜 이후인지 확인하고, 중복되는 고객을 분류하기 위해 dimensionColumns을(를) 사용합니다.

    scalarFunctions— 회사 A는 회사 A가 공동 작업에 연결하는 구성 테이블을 기반으로 필요한 경우 데이터 유형 형식을 업데이트하는 데 도움이 되는 CAST 스칼라 함수를 선택합니다. 또한 필요한 경우 열 서식을 지정하는 데 도움이 되는 스칼라 함수도 추가되었습니다.

    outputConstraints— 회사 A는 최소 출력 제약 조건을 설정합니다. 분석가가 판매 테이블에서 행 수준 데이터를 볼 수 있으므로 결과를 제한할 필요가 없습니다.

    참고

    회사 A는 분석 규칙에 joinRequired을(를) 포함하지 않습니다. 이를 통해 분석가는 유연하게 판매 테이블만 쿼리할 수 있습니다.

  5. 회사 B는 반품 구성 테이블을 생성합니다.

  6. 회사 B는 반품 구성 테이블에 다음과 같은 집계 분석 규칙을 추가합니다.

    { "aggregateColumns": [ { "columnNames": [ "identifier" ], "function": "COUNT_DISTINCT" }, { "columnNames": [ "returns" ], "function": "AVG" }, { "columnNames": [ "returns" ], "function": "SUM" } ], "joinColumns": [ "hashedemail" ], "joinRequired": [ "QUERY_RUNNER" ], "dimensionColumns": [ "state", "popularpurchases", "customerserviceuser", "productline", "returndate" ], "scalarFunctions": [ "CAST", "LOWER", "UPPER", "TRUNC" ], "outputConstraints": [ { "columnName": "hashedemail", "minimum": 100, "type": "COUNT_DISTINCT" }, { "columnName": "producttype", "minimum": 2, "type": "COUNT_DISTINCT" } ] }

    aggregateColumns— 회사 B를 사용하면 회사 A의 합계를 returns 구매 건수와 비교할 수 있습니다. 집계 쿼리를 활성화하기 때문에 집계 열이 하나 이상 있습니다.

    joinColumns— 회사 B를 사용하면 회사 A가 identifier에 참여하여 반품 데이터에 있는 고객과 판매 데이터를 바탕으로 고객을 매칭할 수 있습니다. identifier 데이터는 특히 민감한 데이터이므로 이를 joinColumn(으)로 설정하면 쿼리에서 데이터가 출력되지 않습니다.

    joinRequired— 회사 B에서는 반품 데이터에 대한 쿼리가 판매 데이터와 중복되도록 요구합니다. 회사 A가 데이터 세트에 있는 모든 개인을 쿼리할 수 있도록 하고 싶지는 않습니다. 또한 공동 작업 계약에서도 이러한 제한에 동의했습니다.

    dimensionColumns— 회사 B는 회사 A에 대한 분석에 도움이 될 수 있는 고유한 속성인 state, popularpurchases, 및 customerserviceuser을(를) 기준으로 필터링 및 그룹화할 수 있도록 합니다. 회사 B는 회사 B를 통해 회사 A가 returndate을(를) 사용하여 purchasedate 이후에 발생하는 returndate의 출력을 필터링할 수 있도록 합니다. 이 필터링을 사용하면 제품 변경의 영향을 평가하는 데 더 정확한 결과를 얻을 수 있습니다.

    scalarFunctions— 회사 B는 다음을 가능하게 합니다.

    • 날짜용 TRUNC

    • 데이터에 producttype이(가) 다른 형식으로 입력된 경우 LOWER 및 UPPER를 사용합니다.

    • CAST 회사 A가 매출의 데이터 유형을 수익의 데이터 유형과 동일하게 변환해야 하는 경우

    회사 A는 다른 스칼라 함수가 쿼리에 필요하지 않다고 생각하기 때문에 다른 스칼라 함수를 활성화하지 않습니다.

    outputConstraints— 회사 B는 고객을 재식별하는 능력을 줄이기 위해 hashedemail에 최소 출력 제약 조건을 설정합니다. 또한 반품된 특정 제품을 재식별하는 능력을 줄이기 위해 producttype에 최소 생산량 제한을 추가합니다. 생산량 규모에 따라 특정 제품 유형이 더 우세할 수 있습니다 (예: state). 회사 A가 데이터에 추가한 출력 제약 조건과 관계없이 해당 출력 제약은 항상 적용됩니다.

  7. 회사 A는 공동 작업과 관련된 판매 테이블을 생성합니다.

  8. 회사 B는 공동 작업에 대한 반품 테이블 연결을 생성합니다.

  9. 회사 A는 다음 예와 같은 쿼리를 실행하여 2022년 위치별 총 구매액과 비교하여 회사 B의 반품 수량을 더 잘 파악합니다.

    SELECT companyB.state, SUM(companyB.returns), COUNT(DISTINCT companyA.hashedemail) FROM sales companyA INNER JOIN returns companyB ON companyA.identifier = companyB.identifier WHERE companyA.purchasedate BETWEEN '2022-01-01' AND '2022-12-31' AND TRUNC(companyB.returndate) > companyA.purchasedate GROUP BY companyB.state;
  10. 회사 A와 회사 B는 쿼리 로그를 검토합니다. 회사 B는 쿼리가 공동 작업 계약에서 합의한 내용과 일치하는지 확인합니다.

집계 분석 규칙 문제 해결

여기에 있는 정보를 사용하여 집계 분석 규칙으로 작업할 때 흔히 발생하는 문제를 진단하고 해결하는 데 도움을 받을 수 있습니다.

쿼리에서 결과가 반환되지 않았습니다.

일치하는 결과가 없거나 일치하는 결과가 하나 이상의 최소 집계 임계값을 충족하지 않을 때 이런 일이 발생할 수 있습니다.

최소 집계 임계값에 대한 자세한 내용은 집계 분석 규칙 - 예제 섹션을 참조하세요.