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 }}" } }