LookML 信息中心的饼图参数

本页面演示了如何在 dashboard.lkml 文件中使用 LookML 信息中心参数添加和自定义 type: looker_pie 的 LookML 信息中心元素。

如需了解如何通过 Looker 界面构建饼图,请参阅饼图选项文档页面。

用法示例


## BASIC PARAMETERS
name: element_name
title: 'Element Title'
type: looker_pie
height: N
width: N
top: N
left: N
row: N
col: N
refresh: N (seconds | minutes | hours | days)
note:
  text: 'note text'
  state: collapsed | expanded
  display: above | below | hover

## QUERY PARAMETERS
model: model_name
explore: explore_name
dimensions: view_name.field_name
measures: view_name.field_name
sorts: [view_name.field_name asc | desc, view_name.field_name, …]
limit: N
column_limit: N
filters:
  view_name.field_name: 'Looker filter expression' | 'filter value'
listen:
  dashboard_filter_name: dimension_or_measure_name
query_timezone: 'specific timezone' | user_timezone
merged_queries:
- 'primary query definition'
- 'next source query definition'
  join_fields:
  - field_name: view_name.field_name
    source_field_name: view_name.field_name

## PLOT PARAMETERS
value_labels: none | legend | labels
label_type: lab | val | labVal | per | labPer
inner_radius: N
hidden_fields: [view_name.field_name, view_name.field_name, …]

## SERIES PARAMETERS
colors: [css_color, css_color, …]
series_colors:
  series_name: css_color
  # Possibly more series color assignments
series_labels:
  'Series Name': desired series label
  # Possibly more series label assignments

参数定义

参数名称 说明
基本参数
name(适用于元素) 创建元素
title(适用于元素) 更改元素名称向用户的显示方式
type(适用于元素) 确定要在元素中使用的可视化图表类型
height(适用于元素) 以 tile_size 为单位定义 layout: tile 和 layout: static 信息中心内元素的高度
width(适用于元素) 以 tile_size 为单位定义 layout: tile 和 layout: static 信息中心内元素的宽度
top 定义元素在 layout: static 信息中心内从上到下的位置,以 tile_size 为单位
left 以 tile_size 为单位定义元素在 layout: static 信息中心内从左到右的位置
row 定义 layout: newspaper 信息中心内元素从上到下的位置(以行为单位)
col 以列为单位定义 layout: newspaper 信息中心内元素的从左到右位置
refresh(适用于元素) 设置元素自动刷新的间隔
note 开始 LookML 部分,以定义元素的备注。此参数具有子参数 text、state 和 display。
查询参数
model 定义要用于元素查询的模型
explore(适用于元素) 定义要用于元素查询的探索
dimensions 定义要用于元素查询的维度
measures 定义要用于元素查询的测量
sorts 定义要用于元素查询的排序
limit 定义要用于元素查询的行数上限
filters(适用于元素) 定义无法为元素查询更改的过滤条件
listen 定义可以为元素的查询更改的过滤条件(如果已创建 filters [针对信息中心])
query_timezone 定义运行查询时应使用的时区
merged_queries 定义合并结果查询
绘图参数
value_labels 更改饼图各个部分的标签
label_type 自定义用于标记饼图不同部分的标签格式
inner_radius 确定饼图的内半径,从而将其转换为圆环图
hidden_fields 指定要在查询中使用但在图表中隐藏的所有字段
系列参数
colors 根据图表系列出现的顺序设置其颜色
series_colors 根据系列名称设置图表系列的颜色
series_labels 更改系列名称向用户显示的方式

基本参数

定义 LookML 信息中心元素时,您必须至少为 name 和 type 基本参数指定值。其他基本参数(例如 title、height 和 width)会影响元素在信息中心内的外观和位置。

name

本部分介绍 name 参数,该参数是信息中心元素的一部分。

name 也可以用作信息中心过滤条件的一部分,如信息中心参数文档页面中所述。

每个 name 声明都会创建一个新的信息中心元素并为其分配一个名称。 元素名称必须是唯一的。当您使用 layout: grid 信息中心时,有时会在 elements 参数中引用名称;当您将元素整理到图块组 (type: group) 中时,有时会在子元素的 group 参数中引用名称。

- name: orders_by_date

title

本部分介绍 title 参数,该参数是信息中心元素的一部分。

title 也可以用作信息中心的一部分,如信息中心参数文档页面中所述。

title 也可以用作信息中心过滤条件的一部分,如信息中心参数文档页面中所述。

借助 title 参数,您可以更改元素名称向用户显示的方式。如果未指定,标题默认为元素 name。

请参考下面的示例:

- name: sales_overview
  title: '1) Sales Overview'

如果您使用此格式,则该元素不会显示为销售概览,而是显示为1) 销售概览。

type

本部分介绍 type 参数,该参数是信息中心元素的一部分。

type 也可以用作信息中心过滤条件的一部分,如信息中心参数文档页面中所述。

type 也可以用作联接的一部分,如 type(用于联接)参数文档页面中所述。

type 也可以用作维度的一部分,如维度、过滤条件和参数类型文档页面中所述。

type 也可以用作测量的一部分,如测量类型文档页面中所述。

type 参数用于确定要在元素中使用的可视化图表类型。

- name: element_name
  type: text | looker_grid | table | single_value | looker_single_record |
        looker_column | looker_bar | looker_scatter | looker_line | looker_area |
        looker_pie | looker_donut_multiples | looker_funnel | looker_timeline |
        looker_map | looker_google_map | looker_geo_coordinates | looker_geo_choropleth |
        looker_waterfall | looker_wordcloud | looker_boxplot | button | group

如需简要了解不同类型的 LookML 信息中心元素,请参阅 type(适用于 LookML 信息中心)文档页面。

height

本部分介绍 height 参数,该参数是信息中心元素的一部分。

height 也可以用作信息中心行的一部分,如信息中心参数文档页面中所述。

对于采用 tile 或 static 布局的信息中心

height 参数用于定义元素的高度,单位为 tile_size(以像素为单位),适用于 layout: tile 和 layout: static 信息中心。

例如,以下代码指定了 tile_size: 100 和 height: 4,使 orders_by_date 元素的高度为 400 像素。

- dashboard: sales_overview
  tile_size: 100
  ...

  elements:
  - name: orders_by_date
    height: 4
    ...

对于采用 newspaper 布局的信息中心

height 参数以行为单位定义 layout: newspaper 信息中心内元素的高度。

采用报纸布局的信息中心默认元素高度为 6 行,即大约 300 像素。对于 preferred viewer 参数设置为 dashboards-next 的信息中心,最小高度为 1 行。对于 preferred viewer 参数设置为 dashboards 的信息中心,最小高度为 2 行。

例如,以下代码会将一个元素设置为 12 行高,即其他设置为默认值的元素的两倍高:

- dashboard: sales_overview
  layout: newspaper
  ...

  elements:
  - name: orders_by_date
    height: 12
    ...

width

本部分介绍 width 参数,该参数是信息中心元素的一部分。

width 也可以用作信息中心的一部分,如信息中心参数文档页面中所述。

width 参数用于定义 layout: tile 和 layout: static 信息中心内元素的宽度,单位为 tile_size。

例如,以下代码指定了 tile_size: 100 和 width: 4,使 orders_by_date 元素的宽度为 400 像素。

- dashboard: sales_overview
  tile_size: 100
  ...

  elements:
  - name: orders_by_date
    width: 4
    ...

width 参数用于定义 layout: newspaper 信息中心内元素的宽度(以列为单位)。

采用报纸布局的信息中心默认宽度为 24 列。

例如,以下代码会将元素设置为信息中心宽度的一半:

- dashboard: sales_overview
  layout: newspaper
  ...

  elements:
  - name: orders_by_date
    width: 12
    ...

top

top 参数定义元素从上到下的位置,单位为 tile_size,适用于 layout: static 信息中心。

例如,以下代码指定了 tile_size: 100 和 top: 4,将 orders_by_date 元素的上边缘定位在距离信息中心顶部 400 像素的位置。

- dashboard: sales_overview
  tile_size: 100
  ...

  elements:
  - name: orders_by_date
    top: 4
    ...

left

left 参数用于定义元素在 layout: static 信息中心内从左到右的位置,以 tile_size 为单位。

例如,以下代码指定了 tile_size: 100 和 left: 4,将 orders_by_date 元素的左边缘定位在距离信息中心左侧 400 像素的位置。

- dashboard: sales_overview
  tile_size: 100
  ...

  elements:
  - name: orders_by_date
    left: 4
    ...

row

对于 layout: newspaper 信息中心,row 参数定义元素上边缘所在的行。如果使用 group 参数将元素放置在图块组内,则 row 会定义元素相对于组容器 (row: 0) 顶部的行位置。

信息中心从顶部的第 0 行开始。采用报纸布局的信息中心默认元素高度为 6 行,这意味着信息中心顶部的元素 (row: 0) 默认会占用第 0-5 行。

每行高 50 像素,这意味着默认元素高度(6 行)为 300 像素。

例如,以下代码会将一个元素设置为位于信息中心内的第二行元素中(假设元素设置为默认高度):

- dashboard: sales_overview
  layout: newspaper
  ...

  elements:
  - name: orders_by_date
    row: 6
    ...

col

对于 layout: newspaper 信息中心,col 参数定义元素左边缘所在的列。如果使用 group 参数将元素放置在图块组内,则 col 会定义元素相对于组容器 (col: 0) 左边缘的列位置。

信息中心分为 24 列。信息中心从左侧的第 0 列开始。采用报纸布局的信息中心默认元素宽度为 8 列,这意味着信息中心左侧的信息中心元素 (col: 0) 默认会占用第 0-7 列。

例如,以下代码会将一个元素设置为信息中心内第三列元素:

- dashboard: sales_overview
  layout: newspaper
  ...

  elements:
  - name: orders_by_date
    col: 16
    ...

refresh

本部分介绍 refresh 参数,该参数是信息中心元素的一部分。

refresh 也可以用作信息中心的一部分,如信息中心参数文档页面中所述。

refresh 参数允许元素定期自动重新加载,从而检索最新数据。这在持续显示信息中心的环境中(例如在办公室电视上)通常很有用。请注意,信息中心必须在浏览器窗口中打开,此参数才能生效。此设置不会在后台运行以“预热”信息中心缓存。

刷新频率可以是任意秒数、分钟数、小时数或天数(不含小数)。例如:

- name: orders_by_date
  refresh: 2 hours

设置较短的刷新间隔时,请务必谨慎。如果元素背后的查询需要大量资源,某些元素可能会给数据库带来超出预期的压力。

note

您可以向元素添加说明性备注,如下所示:

- name: element_name
  note:
    text: 'note text'
    state: collapsed | expanded
    display: above | below | hover

note 具有子参数 text、state 和 display。

text

text 子参数用于指定备注中显示的文本。文本可以本地化。

state

state 子参数决定了当备注过大而无法在元素宽度内单行显示时,是collapsed还是expanded。如果您选择 collapsed,并且备注过长,则备注末尾会显示一个可点击的省略号 (...),点击该省略号即可阅读完整备注。

display

display 子参数决定了备注在元素上的显示位置。above 会将备注放在元素顶部,below 会将备注放在元素底部,hover 则需要用户将鼠标悬停在元素上才能看到备注。

查询参数

定义 LookML 信息中心元素时,您必须至少为 model 和 explore 查询参数指定值,并使用 dimensions 和 measures 参数指定一个维度和一个测量。您还可以使用其他查询参数来控制数据在信息中心元素中的显示方式。

model

model 参数定义要用于元素查询的模型。如果未指定,则默认为信息中心所在的模型。

- name: orders_by_date
  model: ecommerce

model 参数接受 LookML 常量。您可以在项目的清单文件中定义一个常量,然后使用语法 "@{constant_name}" 将该常量设置为 model 的值。使用常量可让您在一个位置定义模型名称,如果您要更新多个信息中心元素所使用的模型名称,此功能尤为实用。

如需详细了解如何将常量与 LookML 信息中心搭配使用,并查看相关示例,请参阅 constant 参数文档页面。

explore

本部分介绍 explore 参数,该参数是信息中心元素的一部分。

explore 也可以用作模型的一部分,如 explore 参数文档页面中所述。

explore 也可以用作信息中心过滤条件的一部分,如信息中心参数文档页面中所述。

explore 参数定义了要用于元素查询的探索。

- name: orders_by_date
  explore: order

explore 参数接受 LookML 常量。您可以在项目的清单文件中定义一个常量,然后使用语法 "@{constant_name}" 将该常量设置为 explore 的值。使用常量可让您在一个位置定义探索的名称,如果您要更新多个信息中心元素使用的探索的名称,这会特别有用。

如需详细了解如何将常量与 LookML 信息中心搭配使用,并查看相关示例,请参阅 constant 参数文档页面。

dimensions

dimensions 参数定义要用于元素查询的一个或多个维度。使用语法 view_name.dimension_name 指定维度。如果查询没有任何 dimensions,请勿添加。

## single dimension example
- name: orders_by_date
  dimensions: order.order_date

## multiple dimension example
- name: orders_by_date
  dimensions: [order.order_date, customer.name]

measures

measures 参数定义要用于元素查询的一个或多个测量。使用语法 view_name.measure_name 指定测量。如果查询没有任何 measures,请勿添加。

## single measure example
- name: orders_by_date
  measures: order.count

## multiple measure example
- name: orders_by_date
  measures: [order.count, order_item.count]

sorts

sorts 参数用于定义元素查询的排序行为。先列出主要排序字段,然后列出所有次要排序字段。使用 view_name.field_name 语法指定要作为排序依据的维度或测量。

如果您省略 sorts 参数,该元素将使用 Looker 的默认排序顺序。升序排序不需要后缀,而降序排序需要 desc 后缀。

以下示例定义了单个排序:

- name: orders_by_date
  sorts: order.order_date desc

以下示例定义了多个排序:

- name: orders_by_date
  sorts: [order.order_date desc, customer.name]

如果您透视维度,则可以通过指定测量名称、排序方向和数据表中目标列的从 0 开始的索引编号来对查询结果进行排序。例如,以下元素使用索引 0 按第一个透视列排序:

- name: orders_by_category
  sorts: [orders.count desc 0]

如需按行总计排序,请指定总计列的索引。例如,以下元素使用索引 2 按行总计排序,该索引表示具有两个透视列的查询的总计列:

- name: orders_by_cohort
  sorts: [users.count desc 2]

limit

limit 参数定义了元素查询应使用的行数限制。此限制适用于应用任何透视之前的行数。

- name: orders_by_date
  limit: 100

filters

本部分介绍 filters 参数,该参数是信息中心元素的一部分。

filters 也可以用作信息中心的一部分,如信息中心参数文档页面中所述。

filters 也可以用作测量的一部分,如 filters 参数文档页面中所述。

filters 参数定义了应用于元素查询的不可更改的过滤条件。如果您希望用户可以在信息中心内更改过滤条件,则应使用filters(针对信息中心)设置过滤条件,然后使用 listen 将其应用于元素。

filters 的语法为:

- name: element_name
  filters:
    orders.created_date: 2020/01/10 for 3 days
    orders.status: Shipped
    # You can create multiple filter statements

每个过滤条件都可以接受 Looker 过滤表达式或值常量。您还可以在过滤表达式中使用 _localization 或 _user_attributes Liquid 变量,以实现灵活的过滤值。

listen

借助信息中心过滤条件,查看者可以交互式地优化信息中心元素中显示的数据。使用 filters 参数为 LookML 信息中心定义信息中心过滤条件。然后,使用 listen 参数将信息中心元素关联到信息中心过滤条件。

listen 的语法如下所示:

- name: element_name
  listen:
    filter_name_goes_here: dimension or measure on which to apply
                           the filter using view_name.field_name syntax
    # You can add more than one listen statement

向元素添加 listen 参数,然后使用 view_name.field_name 语法提供过滤条件的名称,后跟英文冒号和对过滤条件应应用到的字段的引用。例如,您可以创建一个名为日期的过滤条件,要求用户在界面的过滤条件字段中输入日期。然后,您可以将用户输入的值应用于 orders_by_date 元素,如下所示:

- dashboard: sales_overview
  ...

  filters:
  - name: date
    type: date_filter

  elements:
 - name: orders_by_date
    listen:
      date: order.order_date
    ...

如果所监听的过滤条件配置了 vis_filter: true 参数,则过滤条件控件会直接显示在该可视化图表图块顶部的过滤条件栏中,而不是显示在顶部信息中心过滤条件栏中。

如需查看使用 filters 参数和 listen 参数将信息中心过滤条件应用于各个信息中心元素的其他示例,请参阅构建 LookML 信息中心。

query_timezone

query_timezone 参数指定运行查询的时区。时区选项显示在timezone 的值文档页面上。如果您希望查询使用查看者的时区运行,可以将该值指定为 user_timezone。

- name: orders_by_date
  query_timezone: America/Los Angeles
- name: orders_by_customer
  query_timezone: user_timezone

merged_queries

借助 merged_queries 参数,您可以将多个查询的结果合并到一个信息中心元素中。在元素的 merged_queries 参数中定义每个源查询,并使用 join_fields 子参数指定应如何合并结果。

以下 LookML 示例代码创建了一个合并结果元素 type: looker_grid。在此示例中,merged_queries 参数用于创建一个信息中心元素,该元素将两个单独查询中的数据合并到一个表格图表中:

- name: merged_results_element
  title: Merged Results Tile
  type: looker_grid
  merged_queries:
  - model: ecommerce
    explore: users
    type: table
    fields: [users.state, users.count, users.city]
    sorts: [users.count desc 0]
    limit: 5000
    column_limit: 50
    query_timezone: UTC
    listen:
    - State: users.state
  - model: ecommerce
    explore: users
    type: table
    fields: [users.state, users.city]
    sorts: [users.state]
    limit: 500
    column_limit: 50
    query_timezone: UTC
    join_fields:
    - field_name: users.state
      source_field_name: users.state
    - field_name: users.city
      source_field_name: users.city
    listen:
    - State: users.state

在此示例中,信息中心元素合并了两个源查询中的数据,这两个源查询基于 ecommerce 模型中的 users 探索。主查询包含 users.state、users.count 和 users.city 字段,并按 users.count 字段对结果进行排序。第二个源查询包含 users.state 和 users.city 字段,并按 users.state 字段对结果进行排序。

join_field 参数会根据 users.state 和 users.city 字段中的匹配值合并源查询。

listen 参数会将 State 过滤条件应用于这两个查询,这样信息中心查看者就可以通过选择特定州来优化信息中心图块中显示的查询结果。

示例:合并公司数据

假设您要创建一个合并查询,用于合并来自两个不同探索(company_info 和 companies)的公司信息。您希望将每个探索中的 ipo.stock_symbol、companies.name 和 companies.contact_email 字段上的查询联接起来,以创建一个查询,用于返回公司名称、公司联系电子邮件、IPO 年份、股票代码、员工人数和职位数量。您可以在 LookML 中定义合并查询元素,如下所示:

- name: merged_results_element
  title: Merged Results Tile
  merged_queries:
  - model: market_research
    explore: company_info
    fields: [companies.name, companies.contact_email, ipo.public_year, ipo.stock_symbol]
    filters:
      companies.contact_email: "-NULL"
      ipo.valuation_amount: NOT NULL
    sorts: [ipo.public_year desc]
  - model: company_data
    explore: companies
    fields: [companies.name, ipo.stock_symbol, companies.contact_email,
      companies.number_of_employees, jobs.job_count]
    filters:
      companies.number_of_employees: NOT NULL
      ipo.stock_symbol: "-NULL"
      companies.contact_email: "-NULL"
    sorts: [jobs.job_count desc]
    join_fields:
    - field_name: ipo.stock_symbol
      source_field_name: ipo.stock_symbol
    - field_name: companies.name
      source_field_name: companies.name
    - field_name: companies.contact_email
      source_field_name: companies.contact_email

对合并的查询元素应用过滤条件

前面的合并查询元素示例演示了如何使用 filters 参数直接在每个源查询中应用硬编码过滤条件。例如,主查询中的过滤条件 companies.contact_email: "-NULL" 和 ipo.valuation_amount: NOT NULL 会将结果限制为具有有效联系电子邮件地址和估值的公司。这些查询级过滤条件会在合并查询之前预过滤数据,用户无法更改。

您还可以通过在每个来源查询的定义中使用 listen 参数,将信息中心过滤条件应用于合并查询元素。例如,假设您有一个名为 Industry 的信息中心过滤条件,该过滤条件是您在信息中心级别使用 filters 参数为 LookML 信息中心定义的:

filters:
- name: Industry
  title: Industry
  type: field_filter
  ui_config:
    type: dropdown_menu
    display: inline
  model: market_research
  explore: company_info
  field: companies.industry

如需将 Industry 过滤条件应用于两个源查询中的 companies.industry 字段,请将 listen 参数添加到每个合并查询的源查询定义中,如下所示:

listen:
  Industry: companies.industry

例如,以下示例代码会将 Industry 过滤条件添加到上一个示例中合并结果元素内的两个源查询。

- name: merged_results_element
  title: Merged Results Tile
  merged_queries:
  - model: market_research
    explore: company_info
    fields: [companies.name, companies.contact_email, ipo.public_year, ipo.stock_symbol]
    filters:
      companies.contact_email: "-NULL"
      ipo.valuation_amount: NOT NULL
    sorts: [ipo.public_year desc]
    listen:
      Industry: companies.industry
  - model: company_data
    explore: companies
    fields: [companies.name, ipo.stock_symbol, companies.contact_email,
      companies.number_of_employees, jobs.job_count]
    filters:
      companies.number_of_employees: NOT NULL
      ipo.stock_symbol: "-NULL"
      companies.contact_email: "-NULL"
    sorts: [jobs.job_count desc]
    join_fields:
    - field_name: ipo.stock_symbol
      source_field_name: ipo.stock_symbol
    - field_name: companies.name
      source_field_name: companies.name
    - field_name: companies.contact_email
      source_field_name: companies.contact_email
    listen:
      Industry: companies.industry

添加此参数后,当用户与 Industry 信息中心过滤条件互动时,合并查询元素中的相应来源查询也会相应地进行过滤。

绘图参数

本部分中介绍的大多数参数都对应于饼图可视化图表编辑器绘制部分中的选项。

value_labels

type: looker_pie 信息中心元素的 value_labels 参数可让您更改饼图各个部分对最终用户的标签显示方式。标签分为三种类型:

  • none:不显示标签和图例。

  • legend:默认选项。图例会显示在可视化图表的底部。

  • labels:显示标记饼图各个部分的线条。您可以使用 label_type 参数指定标签类型,从而自定义这些线条旁边显示的信息。

label_type

借助 label_type 参数,您可以自定义饼图各部分标记的格式。如需使用 label_type,必须将 value_type 设置为 labels。您可以通过以下几种方式自定义标签:

  • lab:显示系列名称。

  • val:显示与饼图切片关联的数值。

  • labVal:先以粗体显示系列名称,然后显示数值。

  • per:将饼图切片显示为占整个饼图的百分比。

  • labPer:首先以粗体显示系列名称,然后显示百分比。

inner_radius

此参数决定了饼图的内半径,从而有效地将其转换为圆环图。您提供的百分比表示圆环图的“孔”将占用的半径比例。

inner_radius: 50

## default value: 0

hidden_fields

hidden_fields 参数指示查询中使用了哪些字段(如果有),但在图表中隐藏了这些字段。所有隐藏字段都会显示在“探索”的数据表部分中。

hidden_fields: [inventory_items.count, distribution_centers.id]

系列参数

本部分中介绍的参数对应于饼图可视化图表编辑器序列部分中的选项。

colors

colors 参数用于指定系列的颜色列表。列表中的第一个颜色对应于第一个数据系列。如果系列数量多于所列颜色数量,则颜色将从头开始循环。


colors: [blue, orange, yellow, red, purple]

对于指定颜色的所有图表属性,颜色值可以采用十六进制字符串(例如 #2ca6cd)或 CSS 具名颜色字符串(例如 mediumblue)。

series_colors

使用 name: value 对,根据系列名称设置系列的颜色。

对于透视图表,系列名称即为透视名称。

series_colors:
  'Yes': skyblue
  'No': '#000000'

对于包含多个测量值的图表,系列名称即为测量值字段名称。

series_colors:
  inventory_items.count: crimson
  orders.count: green

如果系列名称未在 series_colors 中列出,图表将默认使用 colors 中提供的颜色列表。如果未设置 colors,图表将回退到默认配色方案。

series_labels

使用 name: label 对,根据系列名称设置一个或多个系列的标签。

对于透视图表,系列名称即为透视名称。

series_labels:
  'Yes': iOS Users
  'No': Android Users

对于包含多个测量值的图表,系列名称即为测量值字段名称。

series_labels:
  inventory_items.count: Inventory
  orders.count: Orders