缺失字段的 Azure 流分析默认字段值
Azure Stream analytics default field values for missing fields
我有一些 json 值来自 IOT 数据源以进行流分析。他们想在更高版本中更改 json 以包含额外的字段,但旧版本不会有这些字段。有没有一种方法可以检测到该字段丢失并在它到达输出之前为其设置默认值?例如,他们想添加一个 e.OSversion,如果它不存在,则默认为 "unknown"。输出是一个 sql 数据库。
WITH MetricsData AS
(
SELECT * FROM [MetricsData]
PARTITION BY LID
WHERE RecordType='UseList'
)
SELECT
e.LID as LID
,e.EventEnqueuedUtcTime AS SubmitDate
,CAST (e.UsedDate as DateTime) AS UsedDate
,e.Version as Version
,caUsedList.ArrayValue.Module AS Module
,caUsedList.ArrayValue.UsageCount AS UsedCount
INTO
[ModuleUseOutput]
FROM
Usagedata as e
CROSS APPLY getElements (e.UsedList) as caUsedList
请使用case..when..运算符。
示例:
select j.id, case when j.version is null then 'unknown' else j.version end as version
from jsoninput as j
输出:
或者您可以直接在 sql 数据库列中设置默认值。
我有一些 json 值来自 IOT 数据源以进行流分析。他们想在更高版本中更改 json 以包含额外的字段,但旧版本不会有这些字段。有没有一种方法可以检测到该字段丢失并在它到达输出之前为其设置默认值?例如,他们想添加一个 e.OSversion,如果它不存在,则默认为 "unknown"。输出是一个 sql 数据库。
WITH MetricsData AS
(
SELECT * FROM [MetricsData]
PARTITION BY LID
WHERE RecordType='UseList'
)
SELECT
e.LID as LID
,e.EventEnqueuedUtcTime AS SubmitDate
,CAST (e.UsedDate as DateTime) AS UsedDate
,e.Version as Version
,caUsedList.ArrayValue.Module AS Module
,caUsedList.ArrayValue.UsageCount AS UsedCount
INTO
[ModuleUseOutput]
FROM
Usagedata as e
CROSS APPLY getElements (e.UsedList) as caUsedList
请使用case..when..运算符。
示例:
select j.id, case when j.version is null then 'unknown' else j.version end as version
from jsoninput as j
输出:
或者您可以直接在 sql 数据库列中设置默认值。