루커 스튜디오에서 하나의 컨트롤로 여러 소스의 차트 필터링하기
루커 스튜디오는 다양한 컨트롤을 제공합니다. 이러한 컨트롤을 활용하면 원하는 데이터만 선별적으로 필터링 할 수 있어 필요에 따라 다양하게 분석할 수 있습니다.

컨트롤을 추가할 때는 데이터 소스를 지정해야 합니다. 일반적으로 특정 컨트롤은 특정 데이터 소스를 제어하는 데만 사용합니다. 그렇기 때문에 데이터 소스가 다른 차트들이 하나의 페이지에 존재하는 경우, 각 차트를 제어하기 위해 보통 차트별로 컨트롤을 추가합니다.
하지만 데이터 소스는 다르지만 같은 측정기준을 사용하는 경우에는 컨트롤을 하나만 사용할 수 있으면 좋지 않을까요? 다시 말해, 하나의 컨트롤로 여러 데이터 소스로 만들어진 차트들을 한번에 제어할 수 있다면 좋지 않을까요?
이번 포스트에서는 하나의 컨트롤로 여러 데이터 소스를 필터링하는 원리와 방법에 대해 살펴봅니다.
1. 필터링 기본 원리
하나의 컨트롤로 여러 데이터 소스의 차트를 필터링 하려면 충족되어야 하는 조건이 있습니다.
❗ 서로 다른 데이터 소스 간에 동일한 스키마 구조를 가져야 한다는 것입니다.
빅쿼리와 연동한 루커 스튜디오를 예로 설명해보겠습니다.
아래는 A 데이터 소스의 스키마 구조를 보여줍니다. salesDate
, productName
, customerName
, year
필드를 가지고 있지요.

아래는 B 데이터 소스의 스키마를 보여줍니다. orderDate
, product
,
, customerName
필드를 가지고 있지요. 여기서 A 데이터 소스와 이름이 동일한 필드는 year
, customerName
필드입니다.year

A, B 두 개의 데이터 소스를 가지고 아래와 같은 차트와 드롭다운 컨트롤을 생성하였습니다. 좌측의 노란색 차트와 드롭다운은 A 데이터 소스, 우측의 파란색 차트와 드롭다운은 B 데이터 소스입니다.

여기서
필드는 좌측의 A 데이터 소스에만 있는 필드입니다. 이 드롭다운을 조작하면 어떻게 될까요? ‘품목1’를 선택하면 A 데이터 소스의 차트에만 영향을 주는 것을 확인할 수 있습니다.productName

그럼 A 데이터 소스와 B 데이터 소스에 공통적으로 존재하는
필드를 필터링하면 어떻게 될까요? ‘거래처1’을 선택하면 아래와 같이 두 데이터 소스의 차트가 동일하게 필터링 되는 것을 확인할 수 있습니다.customerName

필드의 이름을 직접 동일하게 수정해보면 어떻게 될까요? 루커 스튜디오 수정 화면에서 상단 메뉴의 ‘리소스’ → ‘추가된 데이터 소스 관리’ 메뉴에서는 필드의 이름을 변경할 수 있습니다. 아래 이미지와 같이 B 데이터 소스의
필드를 A 데이터 소스와 동일하게 product
으로 수정 후 드롭다운으로 데이터를 필터링해보겠습니다.productName

드롭다운을 ‘품목1’만 필터링 해보았지만, A 데이터 소스와 B 데이터 소스의 필드명을 동일하게 맞추었음에도 필터가 두 차트에 적용되지 않는 것을 확인할 수 있습니다. 이유가 무엇일까요? 루커 스튜디오는 데이터를 필터링 할 때에, 각 데이터 소스의 기반인 스키마의 구조로부터 내부적으로 필드 ID를 부여하고, 해당 값을 기준으로 필터링하기 때문입니다.

쉽게 말하자면, 동일한 커넥터를 사용하고 스키마를 구성하는 필드의 이름이 동일한 필드만 동시에 필터링이 가능한 것입니다. 이 원리를 이해하고 스키마를 구성한다면 더 짜임새 있는 대시보드를 구현할 수 있겠죠?
💡구글 클라우드에서 제공하는 공식 문서를 참조하려면 아래 링크에 접속해보세요. 아래 공식 문서는 데이터 소스에서 컨트롤을 사용하는 원리와 방법을 소개합니다.
하지만 이미 활용중인 대시보드의 스키마를 다시 설계하는 것은 쉬운일이 아니지요. 하지만 각각의 필드에 ID를 우리가 직접 정의하고 컨트롤을 여러 데이터 소스에 적용할 수 있다면 어떨까요?
2. 계산된 필드의 필드 ID란?
루커 스튜디오에는 ‘계산된 필드’ 를 추가하는 기능이 있습니다.

계산된 필드는 기존에 있는 필드를 수식을 통해 가공 후, 원하는 값을 반환하도록 설정하는 기능입니다. 예시로, 아래 이미지의 수식은
의 값에 따라 지정해둔 텍스트를 반환하지요. 이제 빨간 박스 부분에 유의해볼까요? 필드 ID를 직접 기입할 수 있는 입력란이 있는데, 이것은 우리가 직접 필드 ID를 정의하도록 도와주는 기능입니다.product

1 2 3 4 |
CASE WHEN product = '품목1' THEN '품목1입니다.' WHEN product = '품목2' THEN '품목2입니다.' END |
데이터 소스가 다른 경우에도 스키마 구조가 동일하다면 하나의 컨트롤로 여러 데이터 소스를 필터링할 수 있다고 하였지요? 이것은 컴퓨터가 자체적으로 내부 필드 ID를 참조하기 때문에 가능한 것입니다. 하지만 여러 데이터 소스의 계산된 필드에 직접 필드 ID를 똑같이 명시해두면, 컴퓨터에게 어떤 필드를 동일하게 보아야 하는지 알려주는 것입니다. 필드 ID가 핵심인거죠.
이제 계산된 필드와 필드 ID를 사용해서 하나의 컨트롤로 여러 데이터 소스를 필터링 하는 방법을 소개하겠습니다. 다음과 같이 데이터 소스가 서로 다른 2개의 차트에 동일하게 적용되는 품목 필터를 추가해보겠습니다.

3. 필드ID를 동일하게 지정한 계산된 필드 추가
먼저 두 데이터 소스에 동일한 ID 값을 가진 필드가 필요하겠지요? A 데이터 소스에 먼저 필드를 추가해보겠습니다. 수정 화면에서 ‘필드 추가’ →‘계산된 필드 추가’ 를 클릭합니다.

‘계산된 필드 추가’를 클릭하면 필드 이름, 필드 ID, 수식을 입력하는 창이 나옵니다. 수식 창에는 아래와 같이 품목에 해당하는 필드(
)를 추가하기만 하였습니다. 이것은 필드 값을 가공하지 않고 그대로 반환한다는 뜻이지요. 필드 ID는 productName
로 정의하였습니다.filter_product
💡필드 ID가 불일치하면 필터링이 예상대로 작동되지 않을 수 있으므로 ID를 정의하기 위한 명확한 규칙을 세우고 일관되게 기입하는 것이 좋습니다.

B 데이터 소스에도 동일하게 계산된 필드를 추가해주었습니다. 이제 두 데이터 소스에는 서로 참조하는 필드는 다르지만 필드ID가 동일한 필드가 존재합니다.
⚠️필드를 생성할 때 입력한 필드ID는 변경할 수 없습니다. 컴퓨터는 최초로 입력한 필드 ID만 기억하기 때문에 필드 ID를 변경해야 한다면 필드를 다시 생성해야 합니다.

4. 컨트롤 추가
4-1. 드롭다운 목록
이제 컨트롤을 추가해볼까요? 수정 화면 상단 ‘컨트롤 추가’ → ‘드롭다운 목록’을 클릭합니다.

A 데이터 소스의 드롭다운 컨트롤을 적절한 곳에 배치 후, 미리 생성해두었던 ‘품목’ 계산된 필드를 컨트롤 필드에 지정하였습니다.

드롭다운 컨트롤에서 ‘품목1’만 필터링 하면 아래와 같이 A와 B 데이터 소스를 기반으로 하는 차트를 둘 다 필터링하는 것을 볼 수 있습니다. 이 컨트롤은 A 데이터 소스와 연결되어 있고, 두 데이터 소스의 필드명도 서로 달랐지만 필드 ID를 동일하게 설정하였기 때문에 컴퓨터가 같은 필드임을 인식하고 필터링한 것입니다.

⚠️ 하지만 드롭다운 컨트롤은 결국 A 데이터 소스의 품목만 참조하기 때문에 B 데이터 소스에만 존재하는 품목이 있다면 드롭다운 목록에 노출되지 않는다는 문제가 있으므로, 값의 목록이 일치하는 경우에만 활용하는 것이 좋습니다.
4-2. 버튼 컨트롤러
이 기능을 활용하면 여러 데이터 소스에 영향을 주는 버튼도 만들 수 있습니다. 각각의 데이터 소스에 동일한 필드 ID로 계산된 필드를 추가해보겠습니다. 아래는 A 데이터 소스의 ‘품목1’을 필터링하는 필드입니다. 필드 ID를
로 직접 정의했다는 점에 유의해주세요.filter_product1
1 |
productName = '품목1' |

다음은 B 데이터 소스의 ‘품목1’을 필터링하는 필드입니다. 역시 필드 ID를
로 동일하게 정의하였습니다.filter_product1
1 |
product = '품목1' |

버튼 컨트롤을 추가 후, 버튼 작업 유형을 ‘필터’로 설정하고 방금 추가해두었던 계산된 필드를 컨트롤 필드에 삽입합니다. 5개의 품목에 대하여 동일한 작업을 진행하였습니다.
💡버튼 컨트롤로 데이터를 필터링 하려면 계산된 필드의 반환 값이 부울 형태여야 합니다. 버튼이 참(True)인 값만 보여주는 필터 역할을 하기 때문입니다. 예를 들어, 사용자가 특정 조건을 만족하는 데이터를 표시하고자 할 때, 해당 조건을 계산된 필드에서
또는
TRUE
로 반환하도록 만들어야 버튼을 눌렀을 때 원하는 값만 필터링됩니다. 반환 값이 문자열이나 숫자라면 버튼 컨트롤이 이를 인식하지 못해 필터 기능이 작동하지 않으므로, 조건식의 최종 결과가
FALSE
형태인지 꼭 확인해야 합니다.
TRUE/FALSE

그리고 품목1 버튼을 클릭하면 양 쪽의 데이터 소스를 모두 필터링 하는 것을 확인할 수 있습니다.

이 방법을 활용하면 여러 데이터 소스의 연도, 월, 분기, 반기를 필터링하는 버튼을 생성할 수도 있습니다. 그 방법은 지난 포스트에서 소개하였으므로 아래 포스트를 참조해주세요.
루커 스튜디오는 다양한 컨트롤과 필터 기능을 통해 대시보드와의 상호작용을 지원합니다. 특히 데이터 소스가 다른 경우에도 필드 ID를 활용하면 하나의 컨트롤로 여러 데이터 소스를 동시에 제어할 수 있어 효율적이지요. 핵심은 스키마 구조를 동일하게 하거나, 계산된 필드의 ID를 일관되게 정의하고 활용하는 것이었습니다. 이러한 원리를 이해하고 계산된 필드와 컨트롤을 적절히 조합한다면 보다 사용자 친화적이고 직관적인 인터페이스를 구성할 수 있을 것입니다. 오늘 살펴본 내용을 꼭 적용해보시길 바랍니다!
