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를 사용한 유동 변수

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

date_startdate_end Liquid 변수는 BigQuery와 같이 날짜별로 여러 테이블로 데이터를 파티션으로 나누는 데이터베이스 방언에 매우 유용합니다. 자세한 내용은 고객센터 도움말을 참고하세요.

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

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

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

Examples

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

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

고려사항

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

파생된 테이블이 포함된 views모델에 의해 참조되는 explore 또는 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 필터를 포함하면 됩니다.

그러지 않으면 | sql_quote와 함께 Liquid 변수를 추가하지 않으면 다음 LookML 경고가 표시됩니다.

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

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