type还可以用作指标的一部分,如指标类型文档页面中所述。
type还可以用作维度组的一部分,如dimension_group参数文档页面中所述。
用法
view: view_name {
dimension: field_name {
type: field_type
}
}
|
层次结构
type |
可能的字段类型
维度、过滤条件、参数
默认值
string
接受
维度、过滤条件或参数类型
|
此页面详细介绍了可分配给 dimension、filter 或 parameter 的各种类型。维度、过滤条件或参数只能有一种类型,如果未指定类型,则默认为 string。
某些类型具有支持参数,这些参数将在相应部分中进行说明。
类型定义
| 类型 | 说明 | 有效的字段类型 |
|---|---|---|
bin |
添加了 21.14 对于将数值分组为多个范围的字段 | D |
date |
对于包含日期的字段 | D F P |
date_time |
对于包含日期和时间的字段 | D F P |
distance |
对于计算两个 type: location 维度之间最直接路径(“直线距离”)的字段 |
D |
duration |
与 dimension_group 搭配使用,可根据单个表列创建多个基于时长的维度。如需了解维度组,请参阅 dimension_group 参数文档页面。 |
DG |
location |
对于基于经纬度且将用于可视化的字段 | D |
number |
对于包含数字的字段 | D F P |
string |
对于包含字母或特殊字符的字段 | D F P |
tier |
对于将数值分组为多个范围的字段 | D |
time |
与 dimension_group 搭配使用,可根据单个表列创建多个基于时间的维度。如需了解维度组,请参阅 dimension_group 参数文档页面。 |
DG |
unquoted |
对于值将直接插入到 SQL 中的 parameter 字段,不应添加英文引号(与 type: string 的情况不同) |
P |
yesno |
对于显示某项内容是 true 还是 false 的字段 | D F P |
zipcode |
对于包含邮政编码且将用于可视化图表的字段 | D |
| 各个时间和日期类型 | 一种很少使用的替代方法,可用于创建单个基于时间的维度,替代方法为 type: time |
D F |
| 各个时长类型 | 一种很少使用的替代方案,可用于创建计算时间差的单个基于时间的维度,替代方案为 type: duration |
D |
int |
移除了 5.4
已替换为 type: number |
D |
bin
type: bin是type: tier的别名。这两种类型可以互换使用。
type: bin 与 bins 参数搭配使用,可将数值维度划分为一组数值范围。例如,您可以将年龄维度分箱为不同的年龄范围。您可以使用 style 参数更改箱在 Looker 界面中的显示方式。
使用模式如下:
view: view_name {
dimension: field_name {
type: bin
bins: [numeric_value, numeric_value, ... ]
style: interval
sql: ${my_field_name} ;;
}
}
对于 type: bin 维度,sql 参数可以采用任何计算结果为数字或整数的有效 SQL 表达式。
以下是使用年龄的示例:
dimension: age_bin {
type: bin
bins: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
style: interval
sql: ${age} ;;
}
有关此参数在 Looker 界面中的显示方式,请参阅本页上的 type: tier 参数的 style 部分。
bin 类型是 type: tier 的别名。这两种类型可以互换使用,并且行为相同:
style子参数用于自定义 Looker 界面中箱的外观。Dimensions of type: bin无法在自定义过滤条件中使用。- 将
type: bin与维度填充搭配使用可能会导致出现意外的层级分桶。
distance
type: distance 用于计算两个 type: location 维度之间最直接路径(直线距离)的距离。
系统会排除 type: distance 维度的 sql 参数。您需要在 start_location_field 和 end_location_field 参数中提供对 type: location 维度的引用。
用法如下:
view: view_name {
dimension: field_name {
type: distance
start_location_field: field_name_1
end_location_field: field_name_2
units: kilometers
}
}
距离单位由 units 参数确定,该参数可采用以下值:
feetkilometersmetersmilesnautical_milesyards
例如,您可以按如下方式计算客户前往取车点取车的距离:
dimension: distance_to_pickup {
type: distance
start_location_field: customer.home_location
end_location_field: rental.pickup_location
units: miles
}
计算出的距离将是两点之间的最直接路径,不一定是道路行驶距离。
请勿在 start_location_field 和 end_location_field 参数中使用 ${view_name.field_name} 语法。请改为单独使用视图名称和字段名称,例如 view_name.field_name。
duration
type: duration 与 dimension_group 结合使用,可创建一组维度和/或 SQL 表达式之间的计算时间差。
type: duration 仅适用于 dimension_group,而不适用于常规 dimension。不过,您可以指定基于时长的各个维度,如各个时长类型中所述。
如需了解包含 type: duration 的维度组,请参阅 dimension_group 参数文档页面。
location
type: location 与 sql_latitude 和 sql_longitude 参数搭配使用,可创建要在地图或静态地图(点)可视化图表(使用州/省或国家/地区字段创建静态地图(区域))中绘制的坐标,或要在 type: distance 计算中使用的坐标。
使用模式如下:
view: view_name {
dimension: field_name {
type: location
sql_latitude:${field_name_1} ;;
sql_longitude:${field_name_2} ;;
}
}
系统会排除 type: location 维度的 sql 参数。您需要改为向 sql_latitude 和 sql_longitude 参数提供任何有效的 SQL 表达式,以生成十进制纬度或经度。这些表达式通常是对包含纬度或经度信息的 LookML 字段的引用,但如果您想使用总部的位置或类似位置,也可以使用静态值。
例如,您可以创建如下所示的 store_location 维度:
dimension: store_location {
type: location
sql_latitude: ${store_latitude} ;;
sql_longitude: ${store_longitude} ;;
}
如果您不想绘制位置或计算距离,可以使用更简单的字段类型,例如 type: number。当您在表格中查看某个位置时,Looker 会显示数据库中的相应值,并自动生成指向 Google 地图中该位置的链接。
location 支持的数据库方言
为了让 Looker 在您的 Looker 项目中支持 type: location,您的数据库方言也必须支持它。下表显示了在最新版 Looker 中哪些方言支持 type: location:
| 方言 | 是否支持? |
|---|---|
| Actian Avalanche | |
| Amazon Athena | |
| Amazon Aurora MySQL | |
| Amazon Redshift | |
| Amazon Redshift 2.1+ | |
| Amazon Redshift Serverless 2.1+ | |
| Apache Druid | |
| Apache Druid 0.13+ | |
| Apache Druid 0.18+ | |
| Apache Hive 2.3+ | |
| Apache Hive 3.1.2+ | |
| Apache Spark 3+ | |
| ClickHouse | |
| Cloudera Impala 3.1+ | |
| Cloudera Impala 3.1+ with Native Driver | |
| Cloudera Impala with Native Driver | |
| DataVirtuality | |
| Databricks | |
| Denodo 7 | |
| Denodo 8 & 9 | |
| Dremio | |
| Dremio 11+ | |
| Exasol | |
| Google BigQuery Legacy SQL | |
| Google BigQuery Standard SQL | |
| Google Cloud AlloyDB for PostgreSQL | |
| Google Cloud PostgreSQL | |
| Google Cloud SQL | |
| Google Spanner | |
| Greenplum | |
| HyperSQL | |
| IBM Netezza | |
| MariaDB | |
| Microsoft Azure PostgreSQL | |
| Microsoft Azure SQL Database | |
| Microsoft Azure Synapse Analytics | |
| Microsoft SQL Server 2008+ | |
| Microsoft SQL Server 2012+ | |
| Microsoft SQL Server 2016 | |
| Microsoft SQL Server 2017+ | |
| MongoBI | |
| MySQL | |
| MySQL 8.0.12+ | |
| Oracle | |
| Oracle ADWC | |
| PostgreSQL 9.5+ | |
| PostgreSQL pre-9.5 | |
| PrestoDB | |
| PrestoSQL | |
| SAP HANA | |
| SAP HANA 2+ | |
| SingleStore | |
| SingleStore 7+ | |
| Snowflake | |
| Teradata | |
| Trino | |
| Vector | |
| Vertica |
number
type: number 可与数字或整数搭配使用。
对于 type: number 维度,sql 参数可以采用任何计算结果为数字或整数的有效 SQL 表达式。
您可以使用 value_format 或 value_format_name 参数设置 type: number 字段的格式。
例如,以下 LookML 基于 revenue 和 cost 字段创建了一个名为 profit 的字段,然后以货币格式(1,234.56 美元)显示该字段:
dimension: profit {
type: number
sql: ${revenue} - ${cost} ;;
value_format_name: usd
}
维度只能对其他维度执行算术运算,而不能对度量执行算术运算。此外,即使您使用
type: number维度来显示 ID 号,系统也不会向用户提供建议。
string
type: string 通常用于包含字母或特殊字符的字段。它也可以与数字字段搭配使用,但如果您改用 type: number,Looker 会提供更好的数字处理功能。
type: string 维度的 sql 参数可以采用任何有效的 SQL 表达式。
例如,以下 LookML 通过组合名为 first_name 和 last_name 的字段来创建字段 full_name:
dimension: full_name {
type: string
sql: CONCAT(${first_name}, ' ', ${last_name}) ;;
}
在此示例中,可以省略 type: string,因为 string 是 type 的默认值。
tier
您可以使用
type: bin作为type: tier的别名。这两种类型可以互换使用。
type: tier 与 tiers 参数搭配使用,可将数字维度划分为一组数字范围。例如,您可以将年龄维度分层为不同的年龄范围。您可以使用 style 参数更改层级在 Looker 界面中的显示方式。
使用模式如下:
view: view_name {
dimension: field_name {
type: tier
tiers: [numeric_value, numeric_value, ... ]
style: interval
sql: ${my_field_name} ;;
}
}
对于 type: tier 维度,sql 参数可以采用任何计算结果为数字或整数的有效 SQL 表达式。
年龄示例可能如下所示:
dimension: age_tier {
type: tier
tiers: [0, 10, 20, 30, 40, 50, 60, 70, 80]
style: classic # the default value, could be excluded
sql: ${age} ;;
}
本页的 style 部分介绍了此功能在 Looker 界面中的显示方式。
type: tier的维度无法在自定义过滤条件中使用。
style
借助 style 参数,您可以更改分层在 Looker 界面中的显示方式。虽然以下各部分的示例中未显示负数,但如果数据中存在负数,则会有一个起始层级,其中包含从负无穷大到 0(不含)之间的所有数字。有以下四种可能的值:
classic(默认值)intervalintegerrelational
classic
默认值为 style: classic,如下所示:
| 用户年龄段(传统) | 用户数 |
|---|---|
| T02 [10,20) | 949 |
| T03 [20,30) | 2,161 |
| T04 [30,40) | 2,114 |
| T05 [40,50) | 2,081 |
| T06 [50,60) | 2,024 |
| T07 [60,70) | 1,511 |
| T08 [70,inf) | 1,450 |
- 您可以按如下方式解读此层级表示法:
- T02 [10,20) 是指包含 10,但不包含 20 的范围
- T09 [80,inf) 是包含 80 且上限为无穷大的范围
interval
style: interval 与 style: classic 类似,但没有开头的 TXX 标签。它看起来像这样:
| 用户年龄段(区间) | 用户数 |
|---|---|
| [10,20) | 949 |
| [20,30) | 2,161 |
| [30,40) | 2,114 |
| [40,50) | 2,081 |
| [50,60) | 2,024 |
| [60,70) | 1,511 |
| [70,inf) | 1,450 |
integer
style: integer 必须与离散的整数值(例如年龄)搭配使用。如果您尝试使用非整数来定义层级,系统会显示错误。此样式的格式如下:
| 用户年龄段(整数) | 用户数 |
|---|---|
| 10 到 19 人 | 949 |
| 20 至 29 | 2,161 |
| 30 至 39 | 2,114 |
| 40 至 49 | 2,081 |
| 50 至 59 | 2,024 |
| 60 至 69 | 1,511 |
| 70 或更高 | 1,450 |
relational
style: relational 最适合用于连续数字(例如美元),其格式如下所示:
| 用户年龄段(关联型) | 用户数 |
|---|---|
| >=10 且 < 20 | 949 |
| >=20 且 < 30 | 2,161 |
| >=30 且 < 40 | 2,114 |
| >=40 且 < 50 | 2,081 |
| >=50 且 < 60 | 2,024 |
| >=60 且 < 70 | 1,511 |
| >=70 | 1,450 |
您还可以使用 value_format 为层级设置样式。例如:
dimension: amount_tier {
type: tier
tiers: [0, 10, 20, 30, 40, 50, 60, 70, 80]
style: integer
sql: ${amount} ;;
value_format: "$#,##0"
}
此示例将生成 $10 to $19、$20 to $29 等层级标签。
注意事项
将 tier 与维度填充搭配使用可能会导致出现意外的层级分桶。
例如,如果维度为 type: tier(年龄段),则在启用维度填充功能后,即使数据不包含“低于 0”和“0 至 9”这两个年龄段的数据,系统也会显示这两个年龄段的桶:
| 用户年龄段 |
|---|
| 低于 0 |
| 0 至 9 |
| 10 到 19 人 |
| 20 至 29 |
| 30 至 39 |
| 40 至 49 |
| 50 至 59 |
| 60 至 69 |
| 70 至 79 |
| 80 或更高 |
如果停用年龄段的维度填充,各个分桶将更准确地反映数据中可用的年龄值:
| 用户年龄段 |
|---|
| 10 到 19 人 |
| 20 至 29 |
| 30 至 39 |
| 40 至 49 |
| 50 至 59 |
| 60 至 69 |
| 70 至 79 |
| 80 或更高 |
您可以通过以下方式启用或停用维度填充:在“探索”中将鼠标悬停在维度名称上,点击字段级齿轮图标,然后选择移除填充的层级值以停用,或选择填充缺失的层级值以启用。
time
type: time 与 dimension_group 和 timeframes 参数结合使用,可创建一组基于时间的维度。例如,您可以基于单个时间戳列创建日期、周和月份维度。
type: time 仅适用于 dimension_group,而不适用于常规 dimension。不过,您可以指定各个基于时间的维度,如各个时间和日期类型部分中所述。
如需了解维度组,请参阅 dimension_group 参数文档页面,其中还包含有关 timeframes、convert_tz 和 datatype 参数的信息,以及使用基于时间的数据时需要考虑的常见挑战和注意事项。
unquoted
type: unquoted 仅与 parameter 字段搭配使用。unquoted 类型与 type: string 类似,不同之处在于,当 parameter 的值插入到 {% parameter %} Liquid 变量中时,不会添加引号。这在将值插入到 SQL(例如列名或表名)时非常有用,因为这些值不能添加引号才能正常运行。
直接将未加引号的值插入到 SQL 中可能会导致出现不必要的 SQL 操作。为解决此问题,type: unquoted 的参数值仅限使用 A 到 Z 和 0 到 9 之间的字符(不得包含空格或其他特殊字符)。
例如,以下 LookML 会创建一个名为 table_name 的 parameter,该 parameter 将生成不带引号的值:
parameter: table_name {
type: unquoted
}
yesno
type: yesno 会创建一个字段,用于指明某个事物是 true 还是 false。这些值在探索界面中显示为是和否。
type: yesno 维度的 sql 参数接受计算结果为 TRUE 或 FALSE 的有效 SQL 表达式。如果条件计算结果为 TRUE,系统会向用户显示是;否则,系统会显示否。
type: yesno 维度的 SQL 表达式不能包含任何聚合。这意味着它不能包含 SQL 聚合或对 LookML 度量的任何引用。如果您想创建包含 SQL 聚合或引用 LookML 度量的 yesno 字段,请使用带有 type: yesno 的度量,而不是维度。
例如,以下 LookML 会创建一个字段,用于根据 status 字段指示订单是否已付款:
dimension: is_order_paid {
type: yesno
sql: ${status} = 'paid' ;;
}
如需在其他字段中引用 type: yesno 字段,请将 type: yesno 字段视为布尔值(换句话说,就好像它已包含 true 或 false 值)。例如:
dimension: is_big_order {
type: yesno
sql: ${order_size} = 'big' ;;
}
# This is correct
measure: total_boxes_needed {
type: number
sql: SUM(CASE WHEN ${is_big_order} THEN 2 ELSE 1 END) ;;
}
# This is NOT correct
measure: total_boxes_needed {
type: number
sql: SUM(CASE WHEN ${is_big_order} = 'Yes' THEN 2 ELSE 1 END) ;;
}
如果您将 type: yesno 与基于时间的数据搭配使用,则当日期时间有值时,该维度会返回 是;否则会返回否。
zipcode
type: zipcode 与您要绘制在静态地图(点)可视化图表中的邮政编码维度搭配使用(对于静态地图(区域),请使用州或国家/地区字段)。type: zipcode 的任何维度都会自动获得 us_zipcode_tabulation_areas 的 map_layer_name。如果您不想绘制邮政编码,可以使用更简单的类型,例如 type: number。
对于 type: zipcode 维度,sql 参数可以采用任何有效的 SQL 表达式,只要该表达式的结果是五位数的美国邮政编码即可。
为了能够按邮政编码维度进行过滤,某些数据库方言要求邮政编码维度引用的数据库字段是 varchar 或字符串类型的字段,而不是整数类型的字段。
例如:
dimension: zip {
type: zipcode
sql: ${TABLE}.zipcode ;;
}
各个时间和日期类型
通常,日期会作为使用 type: time 的 dimension_group 来处理。
您可以为要纳入的每个时间段分别创建一个 dimension 或 filter 字段,而不是在单个 dimension_group 中生成所有这些字段。除非您已在数据库中预先计算时间列,或者想要更改 Looker 时间段命名惯例(例如,将字段命名为 created_date_of_purchase 而不是 created_date),否则一般应避免这样做。
基于时间的可用类型中列出了许多基于时间的个别类型。
举例来说,对于以下 dimension_group 定义:
dimension_group: created {
type: time
timeframes: [week, month, year]
sql: ${TABLE}.created_at ;;
}
您可以将此用作等效的逻辑:
dimension: created_week {
type: date_week
sql: ${TABLE}.created_at ;;
}
dimension: created_month {
type: date_month
sql: ${TABLE}.created_at ;;
}
dimension: created_year {
type: date_year
sql: ${TABLE}.created_at ;;
}
可用的基于时间的类型
以下类型用于单个维度的 type 参数中,以创建基于时间或日期的字段。请勿将这些类型与 dimension_group 文档页面中记录的 timeframe 参数搭配使用。
所有单独的时间和日期类型都需要从数据库中获取时间戳作为输入。
特殊类型
| 类型 | 说明 | 输出示例 |
|---|---|---|
date_raw
|
数据库中的原始值(不含类型转换或时区转换)不会显示在“探索”页面上(通常不需要,除非在联接或时间比较中) |
2014-09-03 17:15:00 +0000
|
时间类型
| 类型 | 说明 | 输出示例 |
|---|---|---|
date_time |
基础字段的日期时间(某些 SQL 方言会显示数据库中包含的尽可能高的精确度,而其他方言仅显示到秒) | 2014-09-03 17:15:00 |
date_time_of_day |
时段 | 17:15 |
date_hour |
截断为最接近的小时的日期时间 | 2014-09-03 17 |
date_hour_of_day |
底层字段的整数小时 | 17 |
date_hourX |
将每一天划分为指定小时数的间隔。 | 请参阅使用 date_hourX。 |
date_minute |
截断为最接近的分钟的日期时间 | 2014-09-03 17:15 |
date_minuteX |
将每小时划分为指定分钟数的间隔。 | 请参阅使用 date_minuteX。 |
date_second |
截断为最接近的秒的日期时间 | 2014-09-03 17:15:00 |
date_millisecond |
截断为最接近的毫秒的日期时间(如需了解方言支持,请参阅毫秒和微秒的方言支持部分) | 2014-09-03 17:15:00.000 |
date_millisecondX |
将每秒拆分为具有指定毫秒数的间隔(如需了解方言支持,请参阅毫秒和微秒的方言支持部分)。 | 2014-09-01 01:00:00.250 |
date_microsecond |
截断为最接近的微秒的日期时间(如需了解方言支持,请参阅毫秒和微秒的方言支持部分) | 2014-09-03 17:15:00.000000 |
日期类型
| 类型 | 说明 | 输出示例 |
|---|---|---|
date |
基础字段的日期 | 2017-09-03 |
date_date |
移除了 4.6
已替换为 date |
周类型
| 类型 | 说明 | 输出示例 |
|---|---|---|
date_week |
相应日期时间中从星期一开始的一周的日期 | 2017-09-01 |
date_day_of_week |
仅限周几 | Wednesday |
date_day_of_week_index |
周几指数(0 = 周一,6 = 周日) | 2 |
请注意,date_week、date_day_of_week 和 date_day_of_week_index 类型取决于 week_start_day 的值,该值默认为星期一。
月份类型
| 类型 | 说明 | 输出示例 |
|---|---|---|
date_month |
基础日期时间的年份和月份 | 2017-09 |
date_month_num |
基础日期时间的月份的整数值 | 9 |
date_month_name |
月份名称 | September |
date_day_of_month |
一个月中的第几天 | 3 |
date_fiscal_month_num |
基础日期时间的月份的整数值 | 9 |
如需使用 date_fiscal_month_num 类型,必须在模型中设置 fiscal_month_offset 参数。
季度类型
| 类型 | 说明 | 输出示例 |
|---|---|---|
date_quarter |
基础日期时间的年份和季度 | 2017-Q3 |
date_quarter_of_year |
季度,前面带有“Q” | Q3 |
date_fiscal_quarter |
基础日期时间的财政年度和季度 | 2017-Q3 |
date_fiscal_quarter_of_year |
年份的财政季度,前面带有“Q” | Q3 |
如需使用 date_fiscal_quarter 和 date_fiscal_quarter_of_year 类型,必须在模型中设置 fiscal_month_offset 参数。
年类型
| 类型 | 说明 | 输出示例 |
|---|---|---|
date_year |
底层日期时间的整数年份 | 2017 |
date_day_of_year |
一年中的日 | 143 |
date_week_of_year |
以数值形式表示的一年中的周数 | 17 |
date_fiscal_year |
基础日期时间的整数形式的财政年度 | 2017 |
如需使用 date_fiscal_year 类型,必须在模型中设置 fiscal_month_offset 参数。
使用 date_hourX
在 date_hourX 中,X 会替换为 2、3、4、6、8 或 12。
这会将每一天划分为指定小时数的间隔。例如,date_hour6 会将每一天划分为 6 小时的时段,如下所示:
2014-09-01 00:00:002014-09-01 06:00:002014-09-01 12:00:002014-09-01 18:00:00
例如,如果某行的 time 为 2014-09-01 08:03:17,则其 date_hour6 为 2014-09-01 06:00:00。
使用 date_minuteX
在 date_minuteX 中,X 会替换为 2、3、5、10、15 或 30。
使用 date_minuteX 会将每小时划分为指定分钟数的间隔。例如,date_minute15 会将每小时拆分为 15 分钟的片段,如下所示:
2014-09-01 01:00:002014-09-01 01:15:002014-09-01 01:30:002014-09-01 01:45:00
举例来说,如果某行的 time 为 2014-09-01 01:17:35,则其 date_minute15 为 2014-09-01 01:15:00。
时区和 convert_tz
一般来说,只有在对已全部转换为同一时区的时间值进行操作时,时间计算(差值、时长等)才能正常运行,因此在编写 LookML 时,请务必注意时区。
Looker 具有多种时区设置,可在不同时区之间转换基于时间的数据。Looker 默认会转换时区。如果您不希望 Looker 对特定维度或维度组执行时区转换,可以使用convert_tz 参数文档页面上介绍的 convert_tz 参数。
对毫秒和微秒的方言支持
Looker 支持精确到微秒;不过,某些数据库仅支持精确到秒。如果数据库遇到比其支持的精度更高的时间类型,则会向上舍入到秒。
在最新版本的 Looker 中,以下方言支持毫秒:
| 方言 | 是否支持? |
|---|---|
| Actian Avalanche | |
| Amazon Athena | |
| Amazon Aurora MySQL | |
| Amazon Redshift | |
| Amazon Redshift 2.1+ | |
| Amazon Redshift Serverless 2.1+ | |
| Apache Druid | |
| Apache Druid 0.13+ | |
| Apache Druid 0.18+ | |
| Apache Hive 2.3+ | |
| Apache Hive 3.1.2+ | |
| Apache Spark 3+ | |
| ClickHouse | |
| Cloudera Impala 3.1+ | |
| Cloudera Impala 3.1+ with Native Driver | |
| Cloudera Impala with Native Driver | |
| DataVirtuality | |
| Databricks | |
| Denodo 7 | |
| Denodo 8 & 9 | |
| Dremio | |
| Dremio 11+ | |
| Exasol | |
| Google BigQuery Legacy SQL | |
| Google BigQuery Standard SQL | |
| Google Cloud AlloyDB for PostgreSQL | |
| Google Cloud PostgreSQL | |
| Google Cloud SQL | |
| Google Spanner | |
| Greenplum | |
| HyperSQL | |
| IBM Netezza | |
| MariaDB | |
| Microsoft Azure PostgreSQL | |
| Microsoft Azure SQL Database | |
| Microsoft Azure Synapse Analytics | |
| Microsoft SQL Server 2008+ | |
| Microsoft SQL Server 2012+ | |
| Microsoft SQL Server 2016 | |
| Microsoft SQL Server 2017+ | |
| MongoBI | |
| MySQL | |
| MySQL 8.0.12+ | |
| Oracle | |
| Oracle ADWC | |
| PostgreSQL 9.5+ | |
| PostgreSQL pre-9.5 | |
| PrestoDB | |
| PrestoSQL | |
| SAP HANA | |
| SAP HANA 2+ | |
| SingleStore | |
| SingleStore 7+ | |
| Snowflake | |
| Teradata | |
| Trino | |
| Vector | |
| Vertica |
在最新版 Looker 中,以下方言支持微秒:
| 方言 | 是否支持? |
|---|---|
| Actian Avalanche | |
| Amazon Athena | |
| Amazon Aurora MySQL | |
| Amazon Redshift | |
| Amazon Redshift 2.1+ | |
| Amazon Redshift Serverless 2.1+ | |
| Apache Druid | |
| Apache Druid 0.13+ | |
| Apache Druid 0.18+ | |
| Apache Hive 2.3+ | |
| Apache Hive 3.1.2+ | |
| Apache Spark 3+ | |
| ClickHouse | |
| Cloudera Impala 3.1+ | |
| Cloudera Impala 3.1+ with Native Driver | |
| Cloudera Impala with Native Driver | |
| DataVirtuality | |
| Databricks | |
| Denodo 7 | |
| Denodo 8 & 9 | |
| Dremio | |
| Dremio 11+ | |
| Exasol | |
| Google BigQuery Legacy SQL | |
| Google BigQuery Standard SQL | |
| Google Cloud AlloyDB for PostgreSQL | |
| Google Cloud PostgreSQL | |
| Google Cloud SQL | |
| Google Spanner | |
| Greenplum | |
| HyperSQL | |
| IBM Netezza | |
| MariaDB | |
| Microsoft Azure PostgreSQL | |
| Microsoft Azure SQL Database | |
| Microsoft Azure Synapse Analytics | |
| Microsoft SQL Server 2008+ | |
| Microsoft SQL Server 2012+ | |
| Microsoft SQL Server 2016 | |
| Microsoft SQL Server 2017+ | |
| MongoBI | |
| MySQL | |
| MySQL 8.0.12+ | |
| Oracle | |
| Oracle ADWC | |
| PostgreSQL 9.5+ | |
| PostgreSQL pre-9.5 | |
| PrestoDB | |
| PrestoSQL | |
| SAP HANA | |
| SAP HANA 2+ | |
| SingleStore | |
| SingleStore 7+ | |
| Snowflake | |
| Teradata | |
| Trino | |
| Vector | |
| Vertica |
各个时长类型
通常,时长会作为使用 type: duration 的 dimension_group 来处理。
您可以为要纳入的每个单独时长创建一个 dimension,而不是在单个 dimension_group 中生成所有时长。除非您想更改 Looker 时段命名惯例(例如,将字段命名为送达天数,而不是送达时长),否则一般应避免这样做。
各个时长类型中列出了几种不同的时长类型。
为维度使用时长类型时,您还必须添加 sql_start 和 sql_end 参数,以提供用于计算时间差的开始时间和结束时间。
sql_start 和 sql_end 参数可以采用任何有效的 SQL 表达式,其中包含时间戳、日期时间、日期、纪元或 yyyymmdd 格式的数据。sql_start 和 sql_end 字段可以是以下任一字段:
- 对现有维度组(属于
type: time)中的raw时间范围的引用。 - 对维度为
type: date_raw的实体的引用。 - 一个时间戳 SQL 表达式,例如对时间戳 SQL 列的引用。
- 一种 SQL 表达式,用于从数据库中提取时间,并使用适合您所用方言的表达式。
举例来说,对于以下 dimension_group 定义:
dimension_group: to_delivery {
type: duration
intervals: [day, hour]
sql_start: ${created_raw} ;;
sql_end: ${delivered_raw};;
}
您可以将这些 dimension 参数用作逻辑等效参数:
dimension: number_of_days_to_delivery {
type: duration_day
sql_start: ${created_raw} ;;
sql_end: ${delivered_raw};;
}
dimension: number_of_hours_to_delivery {
type: duration_hour
sql_start: ${created_raw} ;;
sql_end: ${delivered_raw};;
}
在探索界面中,这将创建名为送达所需天数和送达所需小时数的维度。
可用的时长类型
以下类型用于单个维度的 type 参数中,以创建基于时长的字段。请勿将这些类型与 dimension_group 文档页面中记录的 intervals 参数搭配使用。
所有单独的时长类型都需要从数据库中获取时间戳作为输入。
| 类型 | 说明 | 输出示例 |
|---|---|---|
duration_day |
计算以天为单位的时间差 | 9 days |
duration_hour |
以小时为单位计算时间差 | 171 hours |
duration_minute |
以分钟为单位计算时间差 | 10,305 minutes |
duration_month |
计算以月为单位的时间差 | 3 months |
duration_quarter |
计算以季度为单位的时间差 | 2 quarters |
duration_second |
计算以秒为单位的时间差 | 606,770 seconds |
duration_week |
计算以周为单位的时间差 | 6 weeks |
duration_year |
计算以年为单位的时间差 | 2 years |