Looker 独自の 1 つの特長は、データベースに直接接続できることです。つまり、いつでも最新のデータにアクセスでき、最もきめ細かいレベルにドリルダウンできます。そのため、年または月ごとのサマリーを表示できますが、Looker では日、時間、秒などからすぐにドリルダウンすることもできます。
このページでは、データ ドリルのカスタマイズや活用によって、次のようなさらに強力な分析エクスペリエンスをユーザーに提供する方法の例を示します。
- 基本的なドリルデータ テーブルでの値の表示方法のカスタマイズ
- ドリル表示をカスタマイズして視覚的なドリル エクスペリエンスを作成
基本的なドリルデータ テーブルでの値の表示方法のカスタマイズ
Looker のウェブ ネイティブの最新のアーキテクチャを使用すれば、単に 1 つのレベルから次の詳細なレベルまでドリルダウン以上のことを行うことができます。いくつかのパラメータを使用するだけで、任意のカスタム ドリルパスを作成できます。
次の例は、ドリルテーブルでのデータの表示方法をカスタマイズする方法を示しています。以下にその例を示します。
- ドリルテーブルへのカスタム行制限(最大 5,000 行)の追加
- ドリルテーブルへの並べ替えの追加
- ドリルテーブルへのピボットの追加
ドリルテーブルに行の上限(最大 5,000 行)を追加する
ドリルテーブルに行の上限を追加すると、ユーザーが測定値にドリルダウンしたときに、データの表示方法を制御できます。たとえば、ユーザーが [返品数] measure にドリルダウンしたときに、最初の 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] }
これにより、ユーザーは[返品数] measure のドリルメニューから [上位 20 件の結果を調べる] を選択して、上位 20 件の結果をドリルダウンできます。
ドリルテーブルに並べ替えを追加する
データを制限するだけでなく、ドリルテーブルでのデータの並べ替え方法を制御することもできます。たとえば、ユーザーが返品数 measure にドリルダウンしたときに、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] }
この場合、ユーザーは [セール価格] measure のドリルメニューから [上位 20 件の結果をセール価格別に調べる] を選択して、セール価格で上位 20 件の結果をドリルダウンできます。
ドリルテーブルへのピボットの追加
データの制限や並べ替えに加えて、ドリルテーブルでピボットのディメンションを使用することもできます。たとえば、年齢層フィールドにピボットを追加して、ユーザーが注文数 measure にドリルダウンしたときに、各年齢グループの年度および総利益率の層を表示する場合はどうすればよいでしょうか。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} ;; }
これにより、注文数 measure ドリルメニューから各年齢層の合計セール価格(月別)を選択すれば、各年齢層の年度と総利益率をドリルダウンできます。
視覚的なドリル エクスペリエンスの作成
データテーブルは効果的な方法でデータを伝えるものですが、ユーザーがドリルダウンしたときに目にするデータを表示するにはどうすればよいでしょうか。データテーブル以外にも、目に見えるようにドリルデータを表示するには、いくつかの方法があります。このセクションでは、次の例について説明します。
- ビジュアル ドリル ラボ機能を使用してドリルダウンする
- 限界と移動平均を使用した散布図へのドリルダウンする
- ピボット付きの積み上げ折れ線グラフにドリルダウンする
- カスタム表示にドリルダウンする
- 条件付き書式を含むテーブル計算にドリルダウンする
ビジュアル ドリル ラボ機能でドリルダウン
ビジュアル ドリルラボ機能を使用すると、ユーザーはExplore や Look をドリルダウンできます。ゼロ カスタマイズと限定的なドリルセットを使用し、データに基づいて Looker で事前選択したさまざまな可視化タイプのドリルデータを表示できます。
ビジュアル ドリル Labs 機能は、ダッシュボードではサポートされていません。ダッシュボードの場合、ラボ機能を有効にしなくても、link
パラメータを使用して視覚的なドリル エクスペリエンスを作成できます。次のセクションでは、link
パラメータを使用してビジュアル ドリル エクスペリエンスを作成する例を示します。
たとえば、1 日で販売されたアイテムの数を示すには、[作成日] フィールドと [合計セール価格] フィールドにドリルダウンする measure を作成できます。
measure: count { type: count_distinct sql: ${id} ;; drill_fields: [created_date, total_sale_price] }
ビジュアル ドリルが最も簡単なオプションです。しかし、ユーザーがドリルダウンしたときに表示される表示の種類を制御する場合、どうすればよいでしょうか。次のセクションでは、ドリル表示をさらにカスタマイズする方法の例を示します。
限界と移動平均を使用した散布図へのドリルダウンする
移動平均トレンドラインを含む散布図にユーザーがドリルダウンできるようにします。たとえば、1 日の販売されている商品の数を 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 }}" } }