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 个结果:
向展开表格添加排序
除了限制数据之外,您还可以控制数据在展开式表格中的排序方式。例如,如果您希望在用户展开返回计数衡量值时,按促销价显示 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 根据数据预先选择。
信息中心不支持可视化钻取实验室功能。对于信息中心,您可以使用link参数创建直观的展开式体验,而无需启用 Labs 功能。以下部分提供了使用link参数创建直观钻研体验的示例。
例如,若要按天显示已售商品数量,您可以创建一个指标,以便深入钻取创建日期和总销售价格字段:
measure: count {
type: count_distinct
sql: ${id} ;;
drill_fields: [created_date, total_sale_price]
}
视觉钻取是最简单的选项;不过,如果您想控制在用户钻取时向其显示哪种类型的可视化图表,该怎么办?以下部分提供了有关如何进一步自定义展开细目可视化图表的示例。
展开包含上限和移动平均值的散点图
您可以让用户钻取到包含移动平均值趋势线的散点图。例如,假设您想以散点图的形式显示每天售出商品数量,并带有 30 天的移动平均值:
为此,您可以使用 Liquid 变量在网址中指定可视化设置。以下设置控制着数据透视中显示的可视化图表:
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 }}"
}
}