다음을 통해 공유


필터를 사용하여 보고서 성능 개선

 

게시 날짜: 2017년 1월

적용 대상: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

큰 데이터 집합을 반환하는 보고서는 사용하기 어렵고 성능 문제가 발생할 수 있습니다. 보고서에 표시되는 데이터를 제한하려면 데이터 필터를 사용합니다.

Reporting Services에서 지원되는 데이터 필터링 외에도 Microsoft Dynamics 365은 데이터 사전 필터링을 지원합니다. 다음과 같은 경우 데이터 사전 필터링을 사용할 수 있습니다.

  • 보고서의 범위를 축소하여 보고서를 상황에 맞도록 관련 많은 데이터를 반환합니다.

  • 관련 많은 데이터만 반환되므로 빠르게 결과 집합을 검색하고 표시합니다.

  • 상세하게 찾기 기능을 사용하여 보고서를 필터링할 수 있습니다.

중요

현재 Under 연산자 같은 계층적 연산자를 사용한 보고서 쿼리는 보고서 필터링에 사용할 수 없습니다. 계층적 연산자를 사용하는 보고서를 실행하려고 하면 보고서가 렌더링되지 않습니다.

이 항목의 내용

Fetch 기반 보고서에서 데이터 사전 필터링 설정

SQL 기반 보고서에서 데이터 사전 필터링 활성화(Dynamics 365 온-프레미스만 해당)

필터 요약에서 필터 전달

기본 필터

Fetch 기반 보고서에서 데이터 사전 필터링 설정

Fetch 기반 보고서는 자동 데이터 사전 필터링만 지원합니다. 보고서는 여러 데이터 집합과 FetchXML 쿼리를 사용할 수 있습니다. 하나의 데이터 집합은 하나의 FetchXML 쿼리를 지원합니다. Fetch 기반 보고서의 기본 엔터티 또는 연결된 엔터티에 대해 사전 필터링을 설정하려면 enableprefiltering 매개 변수 값을 "1"로 설정하고 prefilterparametername 속성의 매개 변수 이름을 지정해야 합니다. 매개 변수 이름은 숨겨진 매개 변수로 지정하는 “CRM_”으로 시작해야 합니다.Microsoft SQL Server 기반 보고서와 함께 FetchXML 쿼리에 지정된 이 매개 변수는 FetchXML 쿼리 내에서 하위 쿼리로 작동하고, 보고서를 실행하는 동안 하위 쿼리는 상세하게 찾기 영역에서 사용자가 지정한 값으로 구성됩니다.

다음 예제는 FetchXML 쿼리의 기본 엔터티에 대해 사전 필터링을 설정하는 방법을 나타냅니다.

<CommandText
 <fetch distinct="false" mapping="logical">
   <entity name="account" enableprefiltering="1" prefilterparametername="CRM_FilteredAccount">
      <attribute name="name" />
      <attribute name="accountid" />
   </entity>
 </fetch>
</CommandText>
<DataSourceName>CRM</DataSourceName>

마찬가지로 연결된 엔터티에 대해 사전 필터링을 사용할 수 있습니다.prefilterparametername 속성의 매개 변수 이름에 고유한 다른 이름을 지정하여 FetchXML 쿼리의 연결된 엔터티에 대해 다른 사전 필터링 조건을 지정할 수도 있습니다.

Microsoft Dynamics 365 웹 응용 프로그램 또는 SQL Server 데이터 도구에서 보고서 마법사를 사용하지 않고 Fetch 기반 보고서 정의를 수동으로 수정하면 기본 엔터티 및 연결된 엔터티에 대해 사전 필터링을 설정할 수 있습니다. 다음을 확인하십시오.

  1. 마찬가지로 연결된 엔터티에 대해 사전 필터링을 사용할 수 있습니다.prefilterparametername 속성의 매개 변수 이름에 고유한 다른 이름을 지정하여 FetchXML 쿼리의 연결된 엔터티에 대해 다른 사전 필터링 조건을 지정할 수도 있습니다.

    Microsoft Dynamics 365 웹 응용 프로그램 또는 SQL Server 데이터 도구에서 보고서 마법사를 사용하지 않고 Fetch 기반 보고서 정의를 수동으로 수정하면 기본 엔터티 및 연결된 엔터티에 대해 사전 필터링을 설정할 수 있습니다. 다음을 확인하십시오.

    <fetch distinct="false" mapping="logical">
       <entity name="account" enableprefiltering="1" prefilterparametername="CRM_FilteredAccount">
    
  2. prefilterparametername 속성에 지정된 것과 같은 이름으로 해당 쿼리 매개 변수를 만듭니다. 매개 변수 이름은 숨겨진 매개 변수로 지정하도록 CRM_으로 시작해야 합니다.

    <QueryParameters>
       <QueryParameter Name="CRM_FilteredAccount">
       <Value>=Parameters!CRM_FilteredAccount.Value</Value>
    </QueryParameter>
    
  3. 이름이 같은 해당 보고서 매개 변수를 만듭니다.

    <ReportParameters>
        <ReportParameter Name="CRM_FilteredAccount">
          <DataType>String</DataType>
          <Prompt>CRM Filtered Account</Prompt>      
        </ReportParameter>
      </ReportParameters>
    

SQL 기반 보고서에서 데이터 사전 필터링 활성화(Dynamics 365 온-프레미스만 해당)

Microsoft Dynamics 365SQL 기반 보고서에서 두 가지 방법(자동 및 명시적)으로 데이터 사전 필터링을 설정할 수 있습니다.

자동 사전 필터링

자동 데이터 사전 필터링은 단순 쿼리에 적합합니다. 보고서에서 자동 데이터 사전 필터링을 활성화하려면 쿼리에서 엔터티 테이블에 대해 별칭을 사용할 수 있습니다.CRMAF_로 시작하는 별칭 이름을 사용하여 이 작업을 수행합니다.

예를 들어 다음 표는 Account 엔터티에서 사전 필터링을 설정하여 수정된 간단한 쿼리를 보여 줍니다.

사전 필터링 없이 쿼리

자동 사전 필터링이 설정된 수정된 쿼리

```sql SELECT

CRMAF_ 접두사를 사용하여 자동 데이터 사전 필터링 기능을 설정하면 다음 표와 같이 Microsoft Dynamics 365은 매개 변수를 포함하도록 Microsoft Dynamics 365으로 업로드될 때 쿼리를 수정합니다(예: P1)

자동 사전 필터링된 쿼리

Microsoft Dynamics 365에서 수정

```sql SELECT

Microsoft Dynamics 365은 보고서가 필터링되는 방식에 따라 쿼리를 P1 매개 변수로 전달합니다. 즉, 자동 데이터 사전 필터링은 기존 쿼리 내에서 하위 쿼리 역할을 합니다.

다음 예제는 다른 필터링 요구 사항에 따라 Microsoft Dynamics 365에서 쿼리를 매개 변수(P1)로 전달하는 방식을 보여 줍니다. 이러한 예제에서는 Microsoft Dynamics 365의 보고서 영역에서 보고서를 실행하고 데이터 필터링 옵션을 사용하고 있다고 가정합니다.

예제 1: 활성 계정만 보려면 결과 쿼리는 다음과 같습니다.

SELECT <column1>, <column2>, <columnN>
FROM (SELECT FilteredAccount.* FROM FilteredAccount WHERE statecode = 0)
AS CRMAF_FilteredAccount

예제 2: 특정 계정에서 보고서를 실행할 경우 결과 쿼리는 다음과 같습니다.

SELECT <column1>, <column2>, <columnN>
FROM (SELECT FilteredAccount.* FROM FilteredAccount WHERE AccountId = '<CurrentAccountId>')
AS CRMAF_FilteredAccount

예제 3: 선택한 계정 3개로 구성된 목록을 보고 선택한 레코드에 대해 보고서를 실행하는 옵션을 선택한 경우 결과 쿼리는 다음과 같습니다.

SELECT <column1>, <column2>, <columnN>
FROM  (SELECT FilteredAccount.* FROM FilteredAccount WHERE AccountId in ('<1stAccountId>', '<2ndAccountId>', '<3rdAccountId>') 
AS CRMAF_FilteredAccount

엔터티 테이블 이름에 별칭이 지정된 경우 Microsoft Dynamics 365에서 실행될 때 상세하기 찾기 사용자 인터페이스는 자동으로 배포된 보고서에 포함됩니다.

쿼리 작성기에서 엔터티 테이블 이름 별칭을 지정하려면 보고서에서 각 테이블을 오른쪽 마우스로 클릭하고 속성을 선택한 후 CRMAF_FilteredEntity 양식에서 별칭 값을 입력합니다(예: CRMAF_FilteredAccount).

자동 사전 필터링 제한

CRMAF_ 접두사를 사용하여 자동 사전 필터링을 설정하면 Microsoft Dynamics 365은 쿼리의 매개 변수를 추가합니다.UNION 문을 사용하는 쿼리처럼 복잡한 쿼리를 사용하면 Microsoft Dynamics 365은 매개 변수를 첫 번째 쿼리에만 추가하므로 예상치 않은 결과가 발생할 수 있습니다.

예를 들어 UNION 문이 포함된 다음 쿼리를 참조하십시오.

SELECT <column1>, <column2>, <columnN>
FROM FilteredAccount AS CRMAF_FilteredAccount
WHERE address1_stateorprovince = ‘FL'
UNION
SELECT <column1>, <column2>, <columnN>
FROM FilteredAccount AS CRMAF_FilteredAccount
WHERE address1_stateorprovince = 'CA'

보고서를 업로드할 때 Microsoft Dynamics 365은 매개 변수를 사용하여 첫 번째 쿼리만 필터링할 수 있습니다. 그러면 두 번째 쿼리에는 필터링이 적용되지 않습니다.

SELECT <column1>, <column2>, <columnN>
FROM  (@P1) AS CRMAF_FilteredAccount WHERE address1_stateorprovince = 'FL'
UNION
SELECT <column1>, <column2>, <columnN>
FROM FilteredAccount AS CRMAF_FilteredAccount
WHERE address1_stateorprovince = 'CA'

앞의 예제에서 Microsoft Dynamics 365의 보고서 영역에서 보고서를 실행하고 1,000,000이 넘는 연간 수익으로 필터를 선택하면 Microsoft Dynamics 365은 다음과 같이 쿼리를 P1 매개 변수로 전달합니다.

SELECT <column1>, <column2>, <columnN>
FROM  (SELECT FilteredAccount.* from FilteredAccount where AnnualRevenue > 1000000) AS CRMAF_FilteredAccount
WHERE address1_stateorprovince = 'FL'
UNION
SELECT <column1>, <column2>, <columnN>
FROM FilteredAccount AS CRMAF_FilteredAccount
WHERE address1_stateorprovince = 'CA'

이 쿼리는 연간 수익 $1,000,000 이상의 캘리포니아의 계정과 의도하지 않은 플로리다의 모든 계정을 반환합니다. 플로리다와 캘리포니아의 연간 수익 $1,000,000 이상의 모든 계정을 보려고 했습니다.

Microsoft Dynamics 365에서 보고서를 다운로드하고 Microsoft Visual Studio에서 열면 Microsoft Dynamics 365에 업로드한 보고서의 원래 버전을 볼 수 있습니다.Microsoft SQL Server Reporting Services에서 보고서를 직접 다운로드하면 Microsoft Dynamics 365에서 쿼리를 수정했지만 있어야 하는 매개 변수는 배치되지 않습니다.

이렇게 복잡한 쿼리의 경우 명시적 사전 필터링을 사용해야 합니다.

명시적 사전 필터링

UNION 문을 사용하는 쿼리처럼 복잡한 쿼리의 경우 명시적 사전 필터링을 사용해야 할 수도 있습니다. 자동 사전 필터링과 달리 Microsoft Dynamics 365은 Microsoft Dynamics 365에 보고서를 업로드할 때와 같이 명시적 사전 필터링 중에는 값을 매개 변수로 전달하여 보고서 쿼리를 다시 작성하지 않습니다. 사전 필터링 매개 변수를 보고서에 추가한 후 쿼리에 매개 변수를 참조하여 보고서에 필요한 변경 작업을 명시적으로 수행해야 합니다. 그런 다음 동적 SQL을 사용하여 쿼리를 실행할 수 있습니다.

동적 SQL을 사용하면 숨겨진 매개 변수 CRM_FilteredEntity를 만들어(예: CRM_FilteredAccount) 이 매개 변수를 동적 SQL 쿼리 식에서 사용하여 상세하게 찾기를 통한 필터링이 설정됩니다. 이 매개 변수는 지정된 필터링된 보기에서 가져온 테이블 데이터에서 필터링할 수 있습니다.

자동 사전 필터링의 제한을 강조하기 위해 앞에서 설명한 것과 동일한 예제를 수행할 경우 다음 표에서는 동적 SQL을 사용하여 명시적 사전 필터링을 사용하기 위해 수정된 자동 사전 필터링과 함께 쿼리를 보여 줍니다.Microsoft Dynamics 365의 보고서 영역에서 보고서를 실행하는 동안 연간 수익 1,000,000 이상으로 필터가 적용된 것으로 가정합니다.

자동 사전 필터링된 쿼리

명시적 사전 필터링을 사용하기 위해 수정된 쿼리

```sql SELECT

참고

대부분의 표준 Microsoft Dynamics 365SQL 기반 보고서는 명시적 사전 필터링 옵션을 사용합니다.

필터 요약에서 필터 전달

필터 요약은 보고서를 실행할 때 사용되는 필터 값을 표시합니다.Microsoft Dynamics 365 보고서에서 필터 텍스트 값이 포함된 보고서 머리글의 텍스트 상자 보고서 항목으로 표시됩니다. 사용자가 보고서를 실행하면 보고서 뷰어에는 필터 편집 단추가 표시됩니다. 단추를 클릭하면 사용자가 데이터 필터를 정의할 수 있습니다. 필터 요약의 예제는 Microsoft Dynamics 365에 포함되어 있는 사용자 요약 보고서에서 찾을 수 있습니다.

필터 요약을 보고서에 추가하려면 다음 단계를 수행하십시오.

  1. CRM_FilterText라는 숨겨진 문자열 매개 변수를 만듭니다.

  2. 텍스트 상자 보고서 항목을 보고서에 추가하고 Value 속성을 다음과 같이 설정합니다.
    =Parameters!CRM_FilterText.Value.

보고서가 실행되면 CRM_FilterText 매개 변수의 값은 시스템에서 현재 필터의 텍스트로 설정됩니다.

기본 필터

보고서를 게시할 때 기본 필터를 설정할 수 있습니다. 보고서 마법사를 사용하여 만든 모든 보고서의 경우 기본 필터를 설정하지 않으면 마지막 30일 동안 수정된 모든 레코드에 대해 필터가 자동으로 설정됩니다. 기본 보고서 필터를 정의하는 절차는 보고서 게시를 참조하십시오.

참고 항목

Dynamics 365로 보고 및 분석
Microsoft Dynamics 365(온라인) 보고 고려 사항

© 2017 Microsoft. All rights reserved. 저작권 정보