더욱 강력한 데이터 드릴

Looker의 고유한 기능 중 하나는 데이터베이스에 바로 연결된다는 점입니다. 즉, 항상 최신 데이터에 액세스할 수 있으며 사용 가능한 가장 세분화된 수준으로 드릴다운할 수 있습니다. 따라서 연간 또는 월간 요약을 확인할 수 있지만 Looker는 일, 시간, 초 단위로 즉시 상세히 살펴볼 수 있는 옵션도 제공합니다.

이 페이지에서는 데이터 드릴링을 맞춤설정하고 활용하여 다음과 같이 사용자를 위한 더 강력한 분석 환경을 만드는 방법의 예시를 제공합니다.

  • 기본 드릴 데이터 테이블에 값이 표시되는 방식 맞춤설정
  • 시각적 드릴 환경을 만들기 위해 드릴 시각화 맞춤설정

기본 드릴 데이터 테이블에 값이 표시되는 방식 맞춤설정

Looker의 웹 기반 최신 아키텍처에서는 한 수준에서 차상위 수준으로 드릴하는 것 이상의 작업을 수행할 수 있습니다. 몇 가지 매개변수만으로 커스텀 드릴 경로를 빌드할 수 있습니다.

다음 예시는 다음을 포함하여 드릴 테이블에 데이터가 표시되는 방식을 맞춤설정하는 방법을 보여줍니다.

  • 드릴 테이블에 커스텀 행 한도(최대 5,000행) 추가
  • 드릴 테이블에 정렬 추가
  • 드릴 테이블에 피벗 추가

드릴 테이블에 행 한도(최대 5,000행) 추가

드릴 테이블에 행 한도를 추가하면 사용자가 측정 값을 드릴할 때 데이터가 표시되는 방식을 제어할 수 있습니다. 예를 들어 사용자가 반환된 개수 측정값에 대해 자세히 알아볼 때 드릴 테이블에 처음 20개의 결과만 표시하려면 어떻게 해야 할까요? 다음 LookML 코드에서와 같이 link 매개변수를 사용하고 url 하위 매개변수를 "{{ link }}&limit=20"로 설정할 수 있습니다.

measure: returned_count {
  type: count_distinct
  sql: ${id} ;;
  filters: [is_returned: "yes"]
  drill_fields: [detail*]
  link: {
    label: "Explore Top 20 Results"
    url: "{{ link }}&limit=20"
  }
}

set: detail {
  fields: [id, order_id, status, created_date, sale_price, products.brand, products.item_name, users.email]
}

이렇게 하면 사용자는 반환된 개수 측정의 드릴 메뉴에서 상위 20개 결과 살펴보기를 선택하여 상위 20개 결과를 상세히 살펴볼 수 있습니다.

드릴 테이블에 정렬 추가

데이터 제한 외에도 드릴 테이블에서 데이터가 정렬되는 방식을 제어할 수도 있습니다. 예를 들어 사용자가 반환된 개수 측정값을 자세히 알아볼 때 할인가별로 20개 결과를 표시하려면 어떻게 해야 할까요? link 매개변수를 사용하고 url 하위 매개변수를 "{{ link }}&sorts=order_items.sale_price"로 설정할 수 있습니다. 다음 LookML 코드는 커스텀 정렬과 커스텀 행 한도를 결합합니다.

measure: returned_count {
  type: count_distinct
  sql: ${id} ;;
  filters: [is_returned: "yes"]
  drill_fields: [detail*]
  link: {
    label: "Explore Top 20 Results by Sale Price"
    url: "{{ link }}&sorts=order_items.sale_price+desc&limit=20"
  }
}

set: detail {
  fields: [id, order_id, status, created_date, sale_price, products.brand, products.item_name, users.email]
}

이렇게 하면 사용자는 할인가 측정의 드릴 메뉴에서 할인가별 상위 20개 결과 살펴보기를 선택하여 할인가별 상위 20개 결과를 상세히 살펴볼 수 있습니다.

드릴 테이블에 피벗 추가

데이터 제한 및 정렬 외에도 드릴 테이블에서 측정기준을 피벗할 수도 있습니다. 예를 들어 연령대 필드에 피벗을 추가하여 사용자가 주문 수 측정값에 대해 자세히 알아볼 때 각 연령대의 연도와 총 마진율 등급을 표시하려면 어떻게 해야 할까요? link 매개변수를 사용하고 url 하위 매개변수를 "&pivots=users.age_tier"로 설정할 수 있습니다.

measure: order_count {
  type: count_distinct
  drill_fields: [created_year, item_gross_margin_percentage_tier, users.age_tier, total_sale_price]
  link: {
    label: "Total Sale Price by Month for Each Age Tier"
    url: "{{link}}&pivots=users.age_tier"
  }
  sql: ${order_id} ;;
}

이렇게 하면 사용자는 주문 수 측정의 드릴 메뉴에서 연령대별 월별 총 판매가를 선택할 때 각 연령대의 연도와 총 마진율을 상세히 살펴볼 수 있습니다.

시각적 드릴 환경 만들기

데이터 테이블은 데이터를 효과적인 방식으로 전달합니다. 하지만 사용자가 드릴할 때 표시되는 데이터를 시각화하려면 어떻게 해야 할까요? 데이터 테이블 외에도 시각화에 드릴 데이터를 표시하는 방법에는 여러 가지가 있습니다. 이 섹션에는 다음 예시가 포함되어 있습니다.

  • 시각적 드릴 실험실 기능을 사용하여 드릴링
  • 한도 및 이동 평균을 사용한 분산형 차트로 드릴링
  • 피벗을 사용한 누적 선 차트로 드릴링
  • 커스텀 시각화로 드릴링
  • 조건부 서식이 있는 테이블 계산으로 드릴링

시각적 드릴 실험실 기능을 사용하여 드릴링

시각적 드릴 실험실 기능을 사용하면 사용자가 Explore 또는 Look을 상세히 살펴볼 수 있습니다. 맞춤설정이 필요 없고 제한된 드릴 세트를 사용하면 Looker의 데이터를 기반으로 미리 선택된 다양한 시각화 유형에 드릴 데이터를 표시할 수 있습니다.

시각적 드릴 실험실 기능은 대시보드에서 지원되지 않습니다. 대시보드의 경우 실험실 기능을 사용 설정하지 않아도 link 매개변수를 사용하여 시각적 드릴 환경을 만들 수 있습니다. 다음 섹션에서는 link 매개변수를 사용하여 시각적 드릴 환경을 만드는 방법의 예시를 보여줍니다.

예를 들어 하루에 판매된 상품의 수를 표시하기 위해 생성일총 판매가 필드를 자세히 분석하는 방법을 만들 수 있습니다.

measure: count {
  type: count_distinct
  sql: ${id} ;;
  drill_fields: [created_date, total_sale_price]
}

시각적 드릴은 가장 간단한 옵션입니다. 하지만 사용자가 드릴할 때 표시되는 시각화 유형을 제어하려면 어떻게 해야 할까요? 다음 섹션에서는 드릴 시각화를 추가로 맞춤설정하는 방법에 대한 예시를 제공합니다.

한도 및 이동 평균을 사용한 분산형 차트로 드릴링

사용자가 이동 평균 추세선을 포함하는 분산형 차트를 살펴볼 수 있습니다. 예를 들어 하루에 판매된 상품 수를 30일 이동 평균이 포함된 분산형 차트로 표시한다고 가정해 보겠습니다.

이렇게 하려면 Liquid 변수를 사용하여 URL에 시각화 설정을 지정하면 됩니다. 다음 설정은 드릴에 표시되는 시각화를 제어합니다.

measure: count {
  type: count_distinct
  sql: ${id} ;;
  drill_fields: [created_date, total_sale_price]
  link: {
    label: "Show as scatter plot"
    url: "
    {% assign vis_config = '{
     \"stacking\" : \"\",
     \"show_value_labels\" : false,
     \"label_density\" : 25,
     \"legend_position\" : \"center\",
     \"x_axis_gridlines\" : true,
     \"y_axis_gridlines\" : true,
     \"show_view_names\" : false,
     \"limit_displayed_rows\" : false,
     \"y_axis_combined\" : true,
     \"show_y_axis_labels\" : true,
     \"show_y_axis_ticks\" : true,
     \"y_axis_tick_density\" : \"default\",
     \"y_axis_tick_density_custom\": 5,
     \"show_x_axis_label\" : false,
     \"show_x_axis_ticks\" : true,
     \"x_axis_scale\" : \"auto\",
     \"y_axis_scale_mode\" : \"linear\",
     \"show_null_points\" : true,
     \"point_style\" : \"circle\",
     \"ordering\" : \"none\",
     \"show_null_labels\" : false,
     \"show_totals_labels\" : false,
     \"show_silhouette\" : false,
     \"totals_color\" : \"#808080\",
     \"type\" : \"looker_scatter\",
     \"interpolation\" : \"linear\",
     \"series_types\" : {},
     \"colors\": [
     \"palette: Santa Cruz\"
     ],
     \"series_colors\" : {},
     \"x_axis_datetime_tick_count\": null,
     \"trend_lines\": [
      {
      \"color\" : \"#000000\",
      \"label_position\" : \"left\",
      \"period\" : 30,
      \"regression_type\" : \"average\",
      \"series_index\" : 1,
      \"show_label\" : true,
      \"label_type\" : \"string\",
      \"label\" : \"30 day moving average\"
      }
     ]
    }' %}
     {{ link }}&vis_config={{ vis_config | encode_uri }}&toggle=dat,pik,vis&limit=5000"
  }
}

피벗을 사용한 누적 선 차트로 드릴링

사용자가 생성 연도를 기준으로 피벗된 각 월 번호총 판매가를 표시하는 누적 선 차트와 같이 누적 선 차트로 드릴할 수도 있습니다.

다음 LookML에서는 위 시각화에 대한 설정을 지정합니다.

measure: total_sale_price {
  type: sum
  value_format_name: usd
  sql: ${sale_price} ;;
  drill_fields: [total_sale_price, created_month_name, created_year]
  link: {
    label: "Show as stacked line"
    url: "
    {% assign vis_config = '{
     \"stacking\" : \"normal\",
     \"legend_position\" : \"right\",
     \"x_axis_gridlines\" : false,
     \"y_axis_gridlines\" : true,
     \"show_view_names\" : false,
     \"y_axis_combined\" : true,
     \"show_y_axis_labels\" : true,
     \"show_y_axis_ticks\" : true,
     \"y_axis_tick_density\" : \"default\",
     \"show_x_axis_label\" : true,
     \"show_x_axis_ticks\" : true,
     \"show_null_points\" : false,
     \"interpolation\" : \"monotone\",
     \"type\" : \"looker_line\",
     \"colors\": [
     \"#5245ed\",
     \"#ff8f95\",
     \"#1ea8df\",
     \"#353b49\",
     \"#49cec1\",
     \"#b3a0dd\"
     ],
     \"x_axis_label\" : \"Month Number\"
    }' %}
     {{ link }}&vis_config={{ vis_config | encode_uri }}&sorts=order_items.created_year+asc,order_items.created_month_name+asc&pivots=order_items.created_year&toggle=dat,pik,vis&limit=500&column_limit=15"
  } # NOTE the &pivots=
}

커스텀 시각화로 드릴링

사용자가 커스텀 시각화를 드릴하도록 허용할 수도 있습니다.

이렇게 하려면 link 매개변수에 지정한 시각화 설정에 커스텀 시각화를 포함하면 됩니다.

measure: average_shipping_time {
  type: average
  value_format_name: decimal_2
  sql: ${shipping_time} ;;
  drill_fields: [products.category, users.age_tier, average_shipping_time]
  link: {
    label: "See as custom viz (heatmap)"
    url: "
    {% assign vis_config = '{
     \"minColor\" : \"#d6d6d6\",
     \"maxColor\" : \"#9a33e3\",
     \"dataLabels\" : false,
     \"custom_color_enabled\" : false,
     \"custom_color\" : \"forestgreen\",
     \"show_single_value_title\": true,
     \"show_comparison\" : false,
     \"comparison_type\" : \"value\",
     \"comparison_reverse_colors\": false,
     \"show_comparison_label\" : true,
     \"show_view_names\" : true,
     \"show_row_numbers\" : true,
     \"truncate_column_names\" : false,
     \"hide_totals\" : false,
     \"hide_row_totals\" : false,
     \"table_theme\" : \"editable\",
     \"limit_displayed_rows\" : false,
     \"enable_conditional_formatting\": false,
     \"conditional_formatting_include_totals\": false,
     \"conditional_formatting_include_nulls\": false,
     \"type\" : \"highcharts_heatmap\",
     \"stacking\" : \"\",
     \"show_value_labels\" : false,
     \"label_density\" : 25,
     \"legend_position\" : \"center\",
     \"x_axis_gridlines\" : false,
     \"y_axis_gridlines\" : true,
     \"y_axis_combined\" : true,
     \"show_y_axis_labels\" : true,
     \"show_y_axis_ticks\" : true,
     \"y_axis_tick_density\" : \"default\",
     \"y_axis_tick_density_custom\": 5,
     \"show_x_axis_label\" : true,
     \"show_x_axis_ticks\" : true,
     \"x_axis_scale\" : \"auto\",
     \"y_axis_scale_mode\" : \"linear\",
     \"ordering\" : \"none\",
     \"show_null_labels\" : false,
     \"show_totals_labels\" : false,
     \"show_silhouette\" : false,
     \"totals_color\" : \"#808080\",
     \"series_types\" : {},
     \"hidden_fields\" : [
     \"order_items.count\",
     \"order_items.total_sale_price\"
     ]
    }' %}
     {{ link }}&vis_config={{ vis_config | encode_uri }}&sorts=products.category+asc,users.age_tier+asc&toggle=dat,pik,vis&limit=5000"
  }
}

조건부 서식이 있는 테이블 계산으로 드릴링

사용자가 조건부 서식을 표시하는 테이블 계산을 드릴할 수도 있습니다.

다음과 같이 LookML에서 정의할 수 있습니다.

measure: total_sale_price {
  type: sum
  value_format_name: usd
  sql: ${sale_price} ;;
  drill_fields: [created_month, users.gender, total_sale_price]
  link: {
    label: "Table Calc & Total"
    url: "
    {% assign table_calc = '[
     { \"table_calculation\": \"percent_of_total\",
     \"label\": \"Percent of Total\",
     \"expression\": \"${order_items.total_sale_price:row_total} / sum(${order_items.total_sale_price:row_total})\",
     \"value_format\": null,
     \"value_format_name\": \"percent_2\",
     \"_kind_hint\": \"supermeasure\",
     \"_type_hint\": \"number\"
     },
     { \"table_calculation\": \"growth_rate\",
     \"label\": \"Growth Rate\",
     \"expression\": \"${order_items.total_sale_price} / offset(${order_items.total_sale_price},1) - 1\",
     \"value_format\": null,
     \"value_format_name\": \"percent_2\",
     \"_kind_hint\": \"measure\",
     \"_type_hint\": \"number\"
    }]' %}
    {% assign vis_config = '{
     \"type\": \"table\",
     \"show_view_names\": false,
     \"show_row_numbers\": false,
     \"truncate_column_names\": false,
     \"table_theme\": \"gray\",
     \"enable_conditional_formatting\": true,
     \"conditional_formatting\": [
     {
     \"type\": \"low to high\",
     \"value\": null,
     \"background_color\": null,
     \"font_color\": null,
     \"palette\": {
     \"name\": \"Custom\",
     \"colors\": [
     \"#FFFFFF\",
     \"#6e00ff\"
     ]},
     \"bold\": false,
     \"italic\": false,
     \"strikethrough\": false,
     \"fields\": [
     \"growth_rate\"
     ]},{
     \"type\": \"low to high\",
     \"value\": null,
     \"background_color\": null,
     \"font_color\": null,
     \"palette\": {
     \"name\": \"Custom\",
     \"colors\": [
     \"#FFFFFF\",
     \"#88ff78\"
     ]},
     \"bold\": false,
     \"italic\": false,
     \"strikethrough\": false,
     \"fields\": [
     \"percent_of_total\"
    ]}]}' %}
     {{link}}&total=on&row_total=right&dynamic_fields={{ table_calc |replace(') ', '' | encode_uri }}&pivots=users.gender&vis_config={{ vis_config |replace(') ', '' | encode_uri }}"
  }
}