sql(파생 테이블)

이 페이지에서는 파생 테이블에 포함된 sql 매개변수를 참조합니다.

sql (필드용) 매개변수 문서 페이지에 설명된 대로 필드의 일부로 sql를 사용할 수도 있습니다.

사용

view: my_derived_table {
  derived_table: {
    sql: 
      SELECT *
      FROM events
      WHERE type NOT IN ('test', 'staff')
 ;;
    ...
  }
}
계층 구조
sql
기본값
없음

수락
SQL 블록

정의

sql를 사용하면 파생 테이블을 생성하는 데 사용될 SQL을 지정할 수 있습니다. SQL 쿼리가 원시 SQL로 작성되고 Looker 필드를 참조하지 않는 한 sql 매개변수에서 유효한 SQL 쿼리를 사용할 수 있습니다. 파생 테이블에 대해 자세히 알아보려면 Looker의 파생 테이블 문서 페이지를 참고하세요.

일반 데이터베이스 테이블을 참조하는 것 외에도 sql에서 LookML 뷰나 파생 테이블을 참조할 수 있습니다. 이렇게 하려면 다음을 사용하세요.

${view_or_derived_table_name.SQL_TABLE_NAME} AS view_or_derived_table_name

이 참조의 SQL_TABLE_NAME은 리터럴 문자열입니다. 아무 것도 바꿀 필요가 없습니다. 예를 들어 key_customer_order_facts 파생 테이블에서 key_customer이라는 파생 테이블을 참조하려면 다음과 같이 작성할 수 있습니다.

view: key_customer_order_facts {
  derived_table: {
    sql:
      SELECT
        customer_id,
        COUNT( * ) AS lifetime_orders
      FROM
        order
      INNER JOIN
        ${key_customer.SQL_TABLE_NAME} AS key_customer
      ON
        order.customer_id = key_customer.id
      GROUP BY 1
      ;;
  }
}

sql를 사용하는 Liquid 변수

sql 매개변수와 함께 Liquid 변수를 사용할 수도 있습니다. Liquid 변수를 사용하면 필드의 값, 필드에 관한 데이터, 필드에 적용된 필터와 같은 데이터에 액세스할 수 있습니다.

date_startdate_end Liquid 변수는 BigQuery와 같이 날짜별로 데이터를 여러 테이블로 파티셔닝하는 데이터베이스 언어에 매우 유용합니다. 자세한 설명은 날짜 필터와 함께 date_startdate_end 사용 권장사항 페이지를 참고하세요.

특히 _in_query, _is_selected, _is_filtered Liquid 변수를 사용하면 파생 테이블에 흥미로운 기능을 추가할 수 있습니다. 필드 또는 필터가 쿼리에 포함되었는지 여부에 따라 true 또는 false를 반환합니다. 이러한 참/거짓 값을 올바르게 사용하려면 몇 가지 복잡한 사항을 고려해야 합니다. 자세한 내용은 Liquid 변수 페이지를 참고하세요.

예를 들어 이 파생 테이블은 사용자가 선택한 필드에 따라 쿼리하는 데이터베이스 테이블을 변경합니다.

view: dynamic_order_counts {
  derived_table: {
    sql:
      SELECT
        period, number_of_orders
      FROM
        {% if dates.reporting_date._in_query %}
          daily_orders
        {% elsif dates.reporting_week._in_query %}
          weekly_orders
        {% else %}
          monthly_orders
        {% endif %}
      GROUP BY 1
      ;;
  }
}

예시

customer_order_facts 파생 테이블을 만듭니다.

view: customer_order_facts {
  derived_table: {
    sql:
      SELECT
        customer_id,
        COUNT( * ) AS lifetime_orders
      FROM
        order
      GROUP BY 1
      ;;
  }
}

고려사항

sql에서 참조하는 테이블은 현재 연결에서 액세스할 수 있어야 합니다.

파생 테이블이 포함된 viewsexplore 또는 join 매개변수에 의해 참조되며, 이 매개변수는 모델에 의해 참조됩니다. 모델은 사용되는 데이터베이스 연결을 결정합니다 (connection 매개변수 문서 페이지 참고). 데이터베이스 연결 자체는 Looker의 관리 섹션에 정의되어 있습니다. sql 매개변수에서 테이블을 참조하는 경우 연결된 연결 내에서 테이블에 액세스할 수 있어야 합니다.

Looker 필드 참조가 아닌 sql를 사용하여 원시 SQL 사용

파생 테이블 sql 매개변수에 작성하는 SQL은 데이터베이스의 기본 열과 테이블을 참조하는 원시 SQL이어야 합니다. Looker 필드 이름이나 뷰 이름을 참조해서는 안 됩니다.

파생 테이블에서 _filters['view_name.field_name']를 사용하려면 sql_quote가 필요합니다.

SQL 기반 파생 테이블을 정의할 때 SQL에서 값이 렌더링되고 필터가 문자열 값을 반환하는 _filters['view_name.field_name'] Liquid 변수를 사용하는 경우 출력 주위에 작은따옴표를 추가해야 합니다. sql_quote Liquid 필터를 포함하여 이를 수행할 수 있습니다.

그렇지 않으면 Liquid 변수에 | sql_quote을 추가하지 않으면 다음과 같은 LookML 경고가 표시됩니다.

Using "_filters[]" in Derived Table SQL without "sql_quote" is discouraged.

자세한 내용은 Liquid 변수 참조 문서 페이지를 참고하세요.