Application Insights 和 Azure 流分析查询将整个自定义维度导出为字符串

Posted

技术标签:

【中文标题】Application Insights 和 Azure 流分析查询将整个自定义维度导出为字符串【英文标题】:Application Insights and Azure Stream Analytics Query export the whole custom dimensions as string 【发布时间】:2019-11-12 06:36:05 【问题描述】:

我已设置从 Application Insights 到博客的连续导出。通过数据流,我可以将 JSON 文件导出到 SQL DB 中。到现在为止还挺好。 此外,在 Phani Rahul Sivalenka 的帮助下,我能够查询自定义维度的各个属性,如下所述:Application Insights and Azure Stream Analytics Query a custom JSON property

手动导出到 CSV 文件时,我的自定义尺寸如下所示: """OperatingSystemVersion"":""10.0.18362.418"",""OperatingSystem"":""WINDOWS"",""RuntimePlatform"":""UWP"",""Manufacturer"":""LENOVO"",""ScreenHeight"":""696"",""IsSimulator"":""False"",""ScreenWidth"":""1366"",""Language"":""it"",""IsTablet"":""False"",""Model"":""LENOVO_BI_IDEAPAD4Q_BU_idea_FM_"""

除了单个列之外,我还希望将整个自定义维度作为 SQL 表列中的字符串 (varchar(max))。 在我的数据流输出查询的“测试结果”中,我看到了上述格式的列 - 但是当真正导出/写入 SQL DB 时,我所有的测试结束时只有值“数组”或“记录”作为我的 SQL 表中的值列。

我必须在数据流查询中做什么才能将整个自定义维度值作为一个字符串来获取,并且我可以将其作为一个完整的字符串写入 SQL 表中?

【问题讨论】:

好吧,我看到了你的更新答案。你可以标记你的答案来结束这个案例。 【参考方案1】:

我必须在数据流查询中做什么才能获得整个自定义 维度值作为字符串,我可以将其写入 SQL 表 作为一个完整的字符串?

您可以使用 UDF 将单个 raw 的所有键值合并为一个 json 格式字符串。

UDF:

function main(raw) 
    let str = "";
    for(let key in raw) 
      str = str + "\""+ key+"\":\""+raw[key]+"\",";
    
    str += "";
    return str;

SQL:

SELECT udf.jsonstring(INPUT1) FROM INPUT1

输出:

【讨论】:

【参考方案2】:

答案让我走上了正轨。 上面的脚本不包含预期的值。所以我修改了脚本以使其根据需要工作:

function main(dimensions) 
    let str = "";
    for (let i in dimensions)
    
      let dim = dimensions[i];
      for (let key in dim)
      
        str = str + "\"" + key+ "\":\""+dim[key]+"\",";
      
    
    str += "";
    return str;

选择:

WITH pageViews as (
SELECT
    V.ArrayValue.name as pageName
    , *
    , customDimensions       = UDF.flattenCustomDimensions(A.context.custom.dimensions)
    , customDimensionsString = UDF.createCustomDimesionsString(A.context.custom.dimensions)
    FROM [AIInput] as A
    CROSS APPLY GetElements(A.[view]) as V
)

有了这个,我在我的 SQL 表中得到了如下的自定义维度字符串:

"Language":"tr","IsSimulator":"False","ScreenWidth":"1366","Manufacturer":"Hewlett-Packard","OperatingSystem":"WINDOWS","IsTablet":"False","Model":"K8K51ES#AB8","OperatingSystemVersion":"10.0.17763.805","ScreenHeight":"696","RuntimePlatform":"UWP",

【讨论】:

以上是关于Application Insights 和 Azure 流分析查询将整个自定义维度导出为字符串的主要内容,如果未能解决你的问题,请参考以下文章

API Application Insights 使用的良好实践

使用 ServiceFabric StatefulServices 和 .Net Core 2.1 的 Application Insights

如何为 Application Insights NLog 目标设置上下文

使用Application Insights监控应用程序性能

Visual Studio 中类库的 Application Insights

使用 Application Insights 监控我的 Azure 功能