이 페이지에서는 뷰의 일부인
sql_table_name매개변수를 설명합니다.
sql_table_name은 조인의 일부로도 사용할 수 있으며,sql_table_name(조인용) 매개변수 문서 페이지에 설명되어 있습니다.
sql_table_name은 Explore의 일부로도 사용할 수 있으며,sql_table_name(Explore용) 매개변수 문서 페이지에 설명되어 있습니다.
사용
view: view_name {
sql_table_name: table_name ;;
}
sql_table_name |
기본값
뷰의 이름
허용
데이터베이스의 테이블 이름
특수 규칙
|
정의
sql_table_name 매개변수는 뷰에서 쿼리할 데이터베이스의 테이블을 지정합니다.
파생 테이블을 기반으로 뷰를 만들려면
sql_table_name매개변수를 사용하지 마세요. 대신derived table문서 페이지에 설명된derived_table매개변수를 사용하세요. 뷰 파일에sql_table_name과derived_table이 모두 있으면 Looker IDE에서 오류를 반환합니다.
뷰에 sql_table_name 또는 derived_table 매개변수가 포함되어 있지 않으면 Looker는 뷰가 데이터베이스 테이블을 기반으로 하며 데이터베이스 테이블의 이름이 뷰의 이름과 일치한다고 가정합니다. 즉, 다음은
view: my_name { ... }
다음과 논리적으로 동일합니다.
view: my_name {
sql_table_name: my_name ;;
}
이 기본 동작으로 되돌아가 sql_table_name을 사용하지 않는 것이 일반적입니다. 하지만 유용할 수 있는 몇 가지 주요 상황이 있습니다. 첫째, 지저분한 테이블 이름을 정리하는 등 기본 테이블과 다른 이름을 뷰에 지정하려는 경우가 있습니다.
view: orders {
sql_table_name: prod_orders_2 ;;
}
또한 뷰가 데이터베이스 사용자의 기본 검색 경로에 없는 데이터베이스 또는 스키마를 기반으로 해야 하는 경우가 있습니다. 그런 다음 다음과 같이 <schema_name>.<table_name> 형식을 사용하여 테이블 이름을 범위 지정할 수 있습니다.
view: desired_view_name {
sql_table_name: database_name.schema_name.table_name ;;
}
테이블 이름 범위 지정
테이블 이름만 사용하여 테이블을 참조하면 Looker는 Looker 관리자가 데이터베이스 연결의 연결 설정에서 구성한 기본 검색 경로 (데이터베이스 및 스키마)를 사용합니다. 자세한 내용은 이 페이지의 고려사항 섹션을 참고하세요.
데이터베이스 사용자의 기본 검색 경로에 없는 다른 데이터베이스 및 스키마의 테이블을 참조해야 하는 경우 <database_name>.<schema_name>.<table_name> 형식을 사용하여 테이블 이름을 범위 지정하여 다른 데이터베이스 또는 스키마를 가리킬 수 있습니다.
- 다른 스키마의 테이블을 참조하려면 이 페이지의 예시에 표시된 대로
<schema_name>.<table_name>을 사용합니다. - 다른 데이터베이스의 테이블을 참조하려면 전체
<database_name>.<schema_name>.<table_name>을 사용합니다.
Google BigQuery 연결의 경우 <project_name>.<dataset_name>.<table_name> 형식을 사용하여 테이블 이름을 범위 지정하여 다른 프로젝트 및 데이터 세트의 테이블을 참조할 수 있습니다. 자세한 내용은 Google BigQuery 연결 문서 페이지를 참고하세요.
제휴 조인
서로 다른 데이터베이스의 두 테이블을 조인하는 것을 제휴 조인이라고 합니다. 두 데이터베이스가 동일한 SQL 언어에 있고, 언어가 제휴 조인을 지원하며, 두 데이터베이스가 모두 Looker의 동일한 연결에서 액세스할 수 있는 경우 Looker를 사용하여 제휴 조인을 실행할 수 있습니다. 데이터베이스 구성에 따라 테이블이 동일한 물리적 머신에 있어야 할 수도 있습니다.
이러한 조건에서 뷰의 sql_table_name 매개변수에 각 테이블의 데이터베이스 이름을 지정하여 제휴 조인을 만들 수 있습니다.
view: view_1 {
sql_table_name: database_name.table_1 ;;
}
view: view_2 {
sql_table_name: another_database_name.table_2 ;;
}
그런 다음 sql_on 매개변수를 사용하여 이러한 뷰를 조인합니다.
explore: view_1 {
join: view_2 {
sql_on: ${view_1.view_1_ID} = ${view_2.view_2_ID} ;;
}
}
서로 다른 SQL 언어에 있는 데이터베이스를 조인하려면 단일 소스에서 모든 데이터를 가져올 수 있도록 한 데이터베이스를 다른 데이터베이스에 복제하는 것이 좋습니다.
예시
이 예시에서는 customers 뷰가 기본 스키마의 customer_1 테이블을 사용하도록 합니다.
view: customers {
sql_table_name: customer_1 ;;
}
이 예시에서는 테이블 이름을 범위 지정하여 스키마 이름을 포함하도록 하여 (<schema_name>.<table_name> 형식 사용) customers 뷰가 analytics의 customer_1 테이블을 사용하도록 합니다.
view: customers {
sql_table_name: analytics.customer_1 ;;
}
고려사항
view에서 참조하는 테이블은 현재 연결에서 액세스할 수 있어야 함
sql_table_name 매개변수가 view 객체 내에서 사용되면 해당 view 객체는 explore 객체에서 참조할 수 있으며, 이 객체는 model 객체에서 참조됩니다. 모델 객체에는 데이터베이스 connection이 정의되어 있습니다. sql_table_name 매개변수에서 데이터베이스 테이블을 참조할 때는 모델 파일에 지정된 연결 내에서 테이블에 액세스할 수 있어야 합니다.
기본 데이터베이스 및 스키마 (또는 Google BigQuery의 경우 결제 프로젝트 및 데이터 세트)는 Looker 관리자가 데이터베이스에 대한 Looker 연결을 만들 때 정의합니다.
친숙하지 않은 테이블 이름에는 추가 서식이 필요할 수 있음
일부 언어에서는 지원되지 않는 문자가 포함된 테이블 이름(일명 '친숙하지 않은' 테이블 이름)을 대괄호, 큰따옴표 또는 작은따옴표로 묶어야 합니다. 예를 들어 테이블 이름 Customers.PaymentInfo에는 테이블 이름에 마침표가 포함되어 있으며, 이는 Customers 스키마의 PaymentInfo라는 테이블로 해석될 수 있습니다. 이를 수정하려면 언어에 대괄호가 필요한 경우 다음과 같이 테이블 이름을 대괄호로 묶을 수 있습니다.
sql_table_name: [Customers.PaymentInfo] ;;
언어에 큰따옴표 또는 작은따옴표가 필요한 경우 해당 문자의 대괄호를 대체합니다.