三角洲生活表SQL语言参考
本文提供了细节的三角洲生活表的SQL编程接口。
Python API的信息,请参阅三角洲生活表Python语言参考。
关于SQL命令的更多信息,请参阅SQL语言参考。
您可以使用Python用户定义函数(udf)在您的SQL查询,但你必须定义这些udf在Python文件之前调用SQL源文件。看到用户自定义标量函数——Python。
创建一个三角洲住表物化视图或流表
您使用相同的基本的SQL语法时宣布一个流表或物化视图(也称为生活表
)。
你只能申报使用查询流表读取流源。砖建议使用自动加载程序流摄入从云对象存储的文件。看到自动加载程序SQL语法。
你必须包括流()
函数在一个数据集名称指定其他表或视图时管道流源。
下面描述了声明的语法物化视图和流媒体与SQL表:
创建或更新(临时){流表|生活表}table_name [([col_name1 col_type1[生成总是像generation_expression1][评论col_comment1], col_name2 col_type2[生成总是像generation_expression2][评论col_comment2],…][约束expectation_name_1期望(expectation_expr1)[违反{失败更新|删除行}),约束expectation_name_2期望(expectation_expr2)(在违反{失败更新|删除行}),…])][使用三角洲][分区(col_name1、col_name2…))[位置路径][评论table_comment] [TBLPROPERTIES (key1 [=] val1 key2 = val2,…))作为select_statement
创建一个三角洲住表视图
下面描述了声明视图使用SQL的语法:
创建临时(流)实时视图view_name [([col_name1[评论col_comment1], col_name2 col_comment2评论,…][约束expectation_name_1期望(expectation_expr1)[违反{失败更新|删除行}),约束expectation_name_2期望(expectation_expr2)(在违反{失败更新|删除行}),…select_statement])][评论view_comment]
自动加载程序SQL语法
下面描述了使用自动加载程序在SQL的语法:
创建或刷新流媒体表table_name作为选择*从cloud_files(“<文件路径>”,“<文件格式>”,地图(“< option键>”,“< option_value”,“< option键>”,“< option_value”,…))
你可以使用支持格式选项自动加载程序。使用map ()
功能,你可以将任意数量的选项传递给cloud_files ()
方法。选项是键值对,其中键和值都是字符串。支持格式和选项的细节,请参阅文件格式选项。
例如:定义表
您可以创建一个数据集通过阅读从外部数据源或数据集定义在一个管道中。阅读从一个内部数据集,预谋生活
关键字的数据集的名称。下面的例子定义了两个不同的数据集:一个表taxi_raw
这需要JSON文件作为输入源和一个表filtered_data
这需要的taxi_raw
表作为输入:
创建或刷新生活表taxi_raw作为选择*从json。' /砖- - - - - -数据集/nyctaxi/样本/json/ '创建或刷新生活表filtered_data作为选择…从生活。taxi_raw
例如:从流读取源
从流读取数据来源,例如,自动加载器或一个内部数据集,定义一个流媒体
表:
创建或刷新流媒体表customers_bronze作为选择*从cloud_files(“/ databricks-datasets / retail-org /客户/”,“csv”)创建或刷新流媒体表customers_silver作为选择*从流(生活。customers_bronze)
流数据的更多信息,请参阅转换数据与达美住表。
控制表是如何实现的
表也提供额外的控制他们的具体化:
指定如何表分区使用
分区通过
。您可以使用分区加快查询速度。你可以设置表属性使用
TBLPROPERTIES
。看到三角洲生活表属性表。设置存储位置使用
位置
设置。默认情况下,管道表数据存储在存储位置位置
不设置。您可以使用生成的列在你的模式定义。看到例如:指定一个模式和分区列。
请注意
表的大小小于1 TB,砖建议让三角洲生活表控制数据的组织。除非你希望你表超出tb,通常不应当指定分区列。
例如:指定一个模式和分区列
你可以指定一个模式定义一个表。下面的示例指定目标表的模式,包括使用三角洲湖生成的列和定义分区表的列:
创建或刷新生活表销售(customer_id字符串,customer_name字符串,number_of_line_items字符串,order_datetime字符串,order_number长,order_day_of_week字符串生成的总是作为(dayofweek(order_datetime)))分区通过(order_day_of_week)评论“销售原始数据”作为选择*从…
默认情况下,三角洲生活表推断的模式表
如果你不指定一个模式定义。
为一个表或视图设置配置值
使用集
指定一个表或视图的配置值,包括火花配置。任何表或视图定义在一个笔记本集
声明访问已定义的值。任何火花配置指定使用集
查询语句执行时使用引发任何表或视图设置语句。阅读一个查询的配置值,使用字符串插值语法$ {}
。下面的示例设置一个火花配置值命名startDate可以
在查询和使用价值:
设置startDate可以= ' 2020-01-01 ';创建或刷新生活表过滤从src,日期> SELECT * $ {startDate可以}
指定多个配置值,使用一个单独的集
声明为每个值。
SQL特性
创建表或视图 |
---|
创建一个临时表。不持续这个表的元数据。 |
创建一个表读取一个输入数据集作为一个流。输入数据集必须流数据来源,例如,汽车装载机或 |
一个可选的一列或多列列表用于分区表。 |
一个可选的表数据的存储位置。如果没有设置,系统将默认存储位置。 |
一个可选描述表。 |
一个可选列表表属性为表。 |
δ生活表查询定义表的数据集。 |
约束条款 |
---|
定义数据质量约束 |
可选操作失败的行:
|
改变δ生活表中数据获取与SQL
使用应用变化成
声明使用三角洲住表疾病预防控制中心功能,如以下所述:
创建或更新流表table_name;应用到生活变化。table_name从source KEYS (keys) [WHERE condition] [IGNORE NULL UPDATES] [APPLY AS DELETE WHEN condition] [APPLY AS TRUNCATE WHEN condition] SEQUENCE BY orderByColumn [COLUMNS {columnList | * EXCEPT (exceptColumnList)}] [STORED AS {SCD TYPE 1 | SCD TYPE 2}] [TRACK HISTORY ON {columnList | * EXCEPT (exceptColumnList)}]
请注意
的默认行为插入
和更新
事件是插入疾控中心事件从源:更新任何目标表中的行匹配指定的键(s)或时插入一个新行匹配的目标表中的记录不存在。处理的删除
可以指定的事件应用作为删除当
条件。
重要的
你必须声明一个目标流表应用更改。您可以选择指定目标表的模式。当指定的模式应用变化
目标表,你还必须包括__START_AT
和__END_AT
列有相同的数据类型sequence_by
字段。
条款 |
---|
列或列的组合唯一地标识源数据中的一行。这是用来确定哪些疾病预防控制中心事件适用于目标表中的特定记录。 这一条款是必需的。 |
条件应用到源和目标触发等优化分区修剪。这种情况不能用于降低源行;所有疾病预防控制中心行源必须满足这个条件或者是抛出一个错误。使用WHERE子句是可选的,应该使用当您的处理需要特定的优化。 这一条款是可选的。 |
允许摄入更新包含目标列的一个子集。当一个中心事件匹配指定一个现有的行和忽略NULL更新,列了 这一条款是可选的。 默认是覆盖现有的列 |
指定当事件应该被视为一个疾控中心 这一条款是可选的。 |
指定当一个中心事件应该被视为一个完整的表 的 这一条款是可选的。 |
疾控中心的列名称指定逻辑顺序事件源数据。三角洲生活表使用这个序列处理变更的事件到达的顺序。 这一条款是必需的。 |
指定要包含在目标表列的一个子集。你可以:
这一条款是可选的。 默认是在目标表包含所有列 |
是否保存记录SCD 1型或SCD 2型。 这一条款是可选的。 缺省值是SCD 1型。 |
当
这一条款是可选的。所有的输出列的默认跟踪历史有任何更改时,相当于 要使用这一条款,您必须设置 |