Looker 有一项独特功能,那就是它可以直接连接到您的数据库。这意味着,您可以随时访问最新的数据,并且可以随时展开,以查看最精细的数据。因此,虽然您可以查看年度或月度摘要,但 Looker 还提供即时深入到天、小时或秒级数据的选项。
本页提供了一些示例,说明如何自定义和利用数据钻取功能,为用户打造更强大的分析体验,包括:
- 自定义基本数据透视表中值的呈现方式
- 自定义钻研可视化图表,打造可视化钻研体验
自定义基本深入数据表中的值的显示方式
借助 Looker 的原生 Web 现代架构,您不仅可以从一个层级钻取到下一个最精细的层级,还可以执行更多操作。只需几个参数即可构建任何自定义深入分析路径。
以下示例演示了如何自定义数据在深入分析表中的呈现方式,包括:
- 向展开表格添加自定义行数限制(最多 5,000 行)
- 向展开表格添加排序条件
- 向展开表格添加数据透视表
向深入分析表添加行数上限(最多 5,000 行)
通过向深入分析表添加行数上限,您可以控制在用户深入分析测量值时如何向其呈现数据。例如,当用户深入到返回的数量测量值时,如果您希望在深入分析表中仅显示前 20 条结果,该怎么办?您可以使用 link
参数并将 url
子参数设置为 "{{ link }}&limit=20"
,如以下 LookML 代码所示:
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 个结果:
向深入分析表添加排序
除了限制数据之外,您还可以控制数据在展开式表格中的排序方式。例如,如果您希望在用户深入到“Returned Count”衡量值时按 Sale Price 显示 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} ;; }
这样,当用户从“订单数量”指标的展开菜单中选择每个年龄段按月总销售价格时,便可以深入了解每个年龄段的年份和毛利润百分比:
创建直观的钻研体验
数据表可以有效地传达数据,但如果您希望直观了解用户在深入分析时看到的数据,该如何操作呢?除数据表格外,还有多种在可视化图表中显示深入分析数据的方法。本部分包含以下示例:
- 使用可视化深入分析实验室功能进行深入分析
- 展开包含上限和移动平均值的散点图
- 深入查看包含数据透视的堆叠折线图
- 钻取到自定义可视化图表
- 展开采用条件格式的表格计算结果
使用可视化深入分析实验室功能进行深入分析
借助直观钻研实验室功能,用户可以深入探索或“探索”。无需进行任何自定义,只需使用有限的展开集,您就可以以不同的可视化图表类型显示展开数据,这些可视化图表类型由 Looker 根据数据预先选择。
信息中心不支持 Visual Drilling Labs 功能。对于信息中心,您可以使用link
参数创建可视化深入分析体验,而无需启用实验室功能。以下部分提供了使用link
参数创建直观钻研体验的示例。
例如,要显示按天销售的商品数量,您可以创建一个深入探究“创建日期”和“总售价”字段的度量方式:
measure: count { type: count_distinct sql: ${id} ;; drill_fields: [created_date, total_sale_price] }
视觉钻取是最简单的选项;不过,如果您想控制在用户钻取时向其显示哪种类型的可视化图表,该怎么办?以下部分提供了有关如何进一步自定义展开式视觉化图表的示例。
深入到设定了极限值和移动平均值的散点图
您可以允许用户深入分析包含移动平均趋势线的散点图。例如,假设您希望以散点图的形式显示每天的售出商品数量,并采用包含 30 天移动平均值的图表:
为此,您可以使用液态变量在网址中指定可视化设置。以下设置控制着数据透视中显示的可视化图表:
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 }}" } }