다음을 통해 공유


매개 변수를 사용하여 보고서 데이터 제어

보고서 매개 변수는 일반적으로 데이터 원본에서 검색된 보고서 데이터를 필터링합니다. 데이터 원본에서 데이터를 필터링하면 보고서 처리 및 표시 성능을 개선할 수 있습니다. 원본에서 데이터를 필터링할 수 없는 경우에는 보고서 데이터가 검색된 후 매개 변수를 사용하여 필터링할 수 있습니다. 보고서 매개 변수를 기반으로 보고서의 데이터를 정렬 및 그룹화할 수도 있습니다.

데이터 원본에서 데이터 필터링

데이터 원본에서 데이터를 필터링하려면 데이터 집합 쿼리에 쿼리 매개 변수를 사용합니다. Reporting Services는 각 쿼리 매개 변수에 대해 해당하는 보고서 매개 변수를 만듭니다. 사용자가 보고서 매개 변수에 대한 값을 선택하면 값이 쿼리로 전달됩니다. 데이터 원본에서 쿼리를 실행하면 사용자가 지정한 값만 보고서용으로 검색됩니다. 사용자 프롬프트 및 기본값과 같은 속성은 보고서 매개 변수에 적용됩니다.

쿼리 매개 변수

보고서 매개 변수는 쿼리 매개 변수를 정의할 때 자동으로 생성됩니다. 보고서 작성기에서 보고서 매개 변수는 사용자가 필터 절에서 프롬프트를 설정할 때 자동으로 생성됩니다.

데이터 집합을 정의할 때 사용자는 특정 유형의 데이터 원본(예: MicrosoftSQL Server)을 지정합니다. 보고서 디자이너는 해당 데이터 원본 유형에 대한 작업을 수행하도록 설계된 쿼리 디자이너를 엽니다. 각 데이터 집합에 대한 쿼리를 정의할 때 쿼리 디자이너는 쿼리 명령 텍스트 내의 변수를 식별하고 각 변수에 대한 쿼리 매개 변수를 만듭니다. 변수가 있는 쿼리가 지원되지 않는 데이터 원본 및 데이터 공급자 조합도 있습니다. 데이터 원본에서 예상되는 쿼리 구문에 대한 자세한 내용은 특정 데이터 원본에 쿼리 매개 변수 사용(Reporting Services)을 참조하십시오.

SQL Server 데이터 원본의 경우 일반적으로 쿼리는 Transact-SQL 문의 WHERE 절에 변수를 포함하여 쿼리가 실행될 때 반환되는 데이터의 범위를 제한합니다. 이와 비슷한 방식으로 Analysis Services 데이터 원본 쿼리는 일반적으로 FILTER 절에 사용되는 MDX 변수를 포함합니다. 또한 쿼리는 입력으로서 저장 프로시저 또는 사용자 정의 함수에 전달된 변수를 포함할 수 있습니다.

데이터 집합에 대한 쿼리를 수정할 때마다 쿼리가 다시 처리됩니다. 변수를 제거하거나 변수 이름을 바꾸어 쿼리를 변경하면 쿼리 매개 변수에 해당 변경 사항이 반영됩니다.

데이터 집합 속성 대화 상자의 매개 변수 페이지에서 데이터 집합 매개 변수를 추가로 만들 수 있습니다. 직접 만든 매개 변수는 쿼리가 변경될 때 변경되지 않습니다.

각 쿼리 매개 변수의 기본값은 해당 보고서 매개 변수로 계산되는 식으로 설정됩니다. 기본값을 변경하려면 데이터 집합 속성 대화 상자의 매개 변수 페이지를 사용합니다. 예를 들어 SQL Server 데이터 원본의 경우 쿼리 매개 변수가 @MyParameter이면 보고서 매개 변수는 MyParameter이고 @MyParameter의 값은 식 [@MyParameter]로 설정됩니다. 자세한 내용은 데이터 집합 속성 대화 상자, 매개 변수을 참조하십시오. 사용자는 쿼리 매개 변수를 직접 편집하고 해당 기본값을 설정할 수 있습니다. 자세한 내용은 방법: 보고서 매개 변수와 쿼리 매개 변수 연결을 참조하십시오.

자동으로 만들어지는 보고서 매개 변수는 다음 기본값을 사용합니다.

  • 단일 값

  • Text 데이터 형식

  • 매개 변수의 이름으로 설정된 프롬프트

  • 기본값 없음

  • 사용할 수 있는 값 없음

쿼리 매개 변수가 나타내는 데이터의 형식에 따라 이러한 속성을 변경해야 할 수 있습니다. 자세한 내용은 보고서 매개 변수 만들기 및 보고서 매개 변수 속성 설정을 참조하십시오.

[!참고]

쿼리 매개 변수의 이름을 제거하거나 변경하더라도 해당 보고서 매개 변수는 자동으로 제거 또는 변경되지 않습니다. 쿼리 매개 변수를 제거한 상태에서 해당 보고서 매개 변수가 필요 없는 경우에는 이를 수동으로 삭제해야 합니다. 쿼리 매개 변수의 이름을 변경하면 쿼리를 저장할 때 변경된 이름에 해당하는 새로운 보고서 매개 변수가 생성됩니다. 새 쿼리 매개 변수 이름과 일치하도록 보고서 매개 변수의 이름을 변경하고 데이터 집합 매개 변수 속성을 업데이트하여 쿼리 매개 변수를 보고서 매개 변수에 연결할 수 있습니다.

종속 매개 변수 또는 연계 매개 변수

여러 쿼리 매개 변수를 사용하는 쿼리를 만들 때는 연계 매개 변수 집합을 만들 수 있습니다. 연계 매개 변수를 사용하면 필터링을 통해 매우 많은 수의 매개 변수 값을 용이하게 관리할 수 있을 정도의 수로 줄일 수 있습니다. 예를 들어 쿼리에 @Category, @Subcategory@Product 매개 변수가 포함되고 하위 범주 목록은 @Category에 종속되고 제품 목록은 @Subcategory에 종속되는 경우를 가정해 보겠습니다. 사용자가 보고서 매개 변수 Category의 값을 선택하면 Subcategory의 값은 선택한 범주에 대해 유효한 값으로 제한됩니다. 사용자가 Subcategory의 값을 선택한 후 Product에 대한 선택은 범주 및 하위 범주에 대한 선택에 의해 필터링됩니다. 이 방법을 사용하면 매개 변수에 대해 선택 가능한 유효한 값의 수를 적절한 수준으로 줄일 수 있습니다.

연계 매개 변수를 디자인하려면 보고서에 다음 항목을 포함해야 합니다.

  • 여러 연결된 쿼리 매개 변수가 있는 기본 데이터 집합 쿼리

  • 각각 쿼리 매개 변수에 바인딩된 보고서 매개 변수의 정렬된 목록. 일반적으로 이러한 항목은 기본 쿼리에서 자동으로 생성됩니다. 각 종속 매개 변수는 종속된 매개 변수를 따라야 합니다. 매개 변수의 순서는 보고서 데이터 창에서 변경할 수 있으며 여기에서 매개 변수를 컬렉션의 위아래로 이동할 수 있습니다. 자세한 내용은 방법: 보고서 매개 변수의 순서 변경(Reporting Services)을 참조하십시오.

  • 사용할 수 있는 값을 제공하는 각 보고서 매개 변수에 대한 별도의 데이터 집합. 각 쿼리 매개 변수에 대해 철자의 대/소문자 구분을 동일하게 사용하여 쿼리 매개 변수와 보고서 매개 변수가 올바르게 연결되도록 해야 합니다. 각 보고서 매개 변수에 대해 사용할 수 있는 각각의 값 집합에 대한 쿼리는 기본 쿼리의 컨텍스트에서 의미가 있는 값만 제공해야 합니다.

예에서 보고서 매개 변수 Product는 Subcategory에 종속되며 이는 다시 Category에 종속됩니다. Category가 가장 먼저 나오고 그 뒤에 Subcategory와 Product가 차례로 나와야 합니다. Category에 사용할 수 있는 값을 제공하는 데이터 집합에 대한 쿼리는 기본 쿼리에 유효한 모든 범주를 표시해야 합니다. ㅅ범주를 선택하면 Subcategory에 사용할 수 있는 값을 제공하는 쿼리는 지정된 Category에 대해 유효한 값과 기본 쿼리에 있는 모든 제약 조건을 제공해야 합니다.

자세한 내용은 방법: 보고서에 연계 매개 변수 추가(Reporting Services)를 참조하십시오.

쿼리를 실행한 후의 보고서 데이터 필터링

보고서 매개 변수를 만들고 이를 필터 식에 사용하여 보고서 데이터 집합, 데이터 영역 또는 테이블릭스 그룹의 데이터를 필터링할 수도 있습니다. 자세한 내용은 보고서에서 데이터 필터링방법: 필터 추가(Reporting Services)를 참조하십시오.

보고서 매개 변수는 보고서를 작성할 때 보고서 정의의 일부이지만 보고서를 게시한 후에 독립적으로 관리할 수 있습니다. 보고서 정의를 게시한 후에도 보고서 관리자를 사용하여 매개 변수 속성을 수정할 수 있습니다. 자세한 내용은 게시된 보고서에 대한 속성 설정을 참조하십시오.

매개 변수에 대한 변동이 빠른 유효한 값 사용

사용 가능한 값을 변동이 빠른 값으로 지정하면 보고서가 실행되기 전에 값이 이미 무효한 값이 되어 버릴 수 있습니다. 따라서 사용자가 값을 전송하고 보고서를 실행할 때 더 이상 유효하지 않은 목록의 값을 선택하는 결과가 됩니다. 이를 방지하려면 일반적인 사용자가 값을 선택하여 보고서를 실행할 때 변경되지 않을 유효 값 목록의 데이터 집합을 반환하는 쿼리를 작성해야 합니다.

또한 쿼리를 사용하지 않는 빠른 변경 값을 사용하지 마십시오. 예를 들어 현재 날짜를 사용 가능한 값으로 제공하는 경우 DateTime.Now 속성 대신 DateTime.Today 속성을 사용하는 식을 작성해야 값의 시간 부분의 빠른 변동을 막을 수 있습니다. 값을 한 번 계산하고 보고서를 처리하는 동안 이 값을 그대로 유지하기 위한 방편으로 보고서 변수나 그룹 변수를 사용할 수도 있습니다. 자세한 내용은 식에서 보고서 및 그룹 변수 컬렉션 참조 사용(Reporting Services)을 참조하십시오.