如何分别在 Azure Data Lake Analytics 上下文中使用 JSON 文件格式 usql
How to use JSON file formats in the context of Azure Data Lake Analytics respectively usql
我有一个 JSON 输入看起来像
{
"sessionId": 1234,
"deviceId": "MAC:1234",
"IoTHub": {
"MessageId": "1234-1234-1234-1234"
}
}
如何在 Azure Data Lake Analytics u sql 脚本中提取 sessionId
、deviceId
和 MessageId
的值?
如何在 Azure Data Lake Analytics 上下文中分别使用 JSON 文件格式 usql
设置过程
- 从 [1] 下载存储库
- 在
.\Examples\DataFormats\Microsoft.Analytics.Samples.sln
中打开解决方案
- 构建解决方案
- 获取
.\Examples\DataFormats\Microsoft.Analytics.Samples.Formats\bin\Debug\Microsoft.Analytics.Samples.Formats.dll
- 获取
.\Examples\DataFormats\Microsoft.Analytics.Samples.Formats\bin\Debug\Newtonsoft.Json.dll
- 在 ADLS 中创建一个用于存储程序集的文件夹(例如
.\assemblies
)
- 如果它消失了(发生在我身上),请在文件夹中创建一个示例文件
- 与Visual Studio:
- 将这两个文件添加到 ADLA 解决方案的文件夹中(例如
.\lib\...
)
- 打开
Cloud Explorer
,导航到 ADLA 数据库 -> 程序集 -> 右键单击并注册程序集
- 将程序集存储在之前在 ADLS 中创建的文件夹中
- 引用程序集如下所示
用法
JSON 输入数据
- 使用提取器,例如如下所示
- 有关详细信息,请参阅 [2] 和 [3]
资源
[2]GitHub Azure USQL DataFormats
[3] U-SQL - Extract data from json-array
U-SQL 脚本
DECLARE @localDevelopment bool = true;
IF @localDevelopment == true THEN
DROP ASSEMBLY IF EXISTS [Newtonsoft.Json];
DROP ASSEMBLY IF EXISTS [Microsoft.Analytics.Samples.Formats];
CREATE ASSEMBLY [Newtonsoft.Json] FROM @"/lib/Newtonsoft.Json.dll";
CREATE ASSEMBLY [Microsoft.Analytics.Samples.Formats] FROM @"/lib/Microsoft.Analytics.Samples.Formats.dll";
DECLARE @input string = @"/data/input.json";
DECLARE @output string = @"/data/output.csv";
ELSE
DECLARE @input string = @"/data/input.json";
DECLARE @output string = @"/data/output.csv";
END;
REFERENCE ASSEMBLY [Newtonsoft.Json];
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];
//Define schema of file, must map all columns
//Names must match keys
@extractDataFirstLevel =
EXTRACT sessionId int,
deviceId string,
IoTHub string
//Date DateTime
FROM @input
USING new Microsoft.Analytics.Samples.Formats.Json.JsonExtractor();
@selectData =
SELECT sessionId,
deviceId,
Microsoft.Analytics.Samples.Formats.Json.JsonFunctions.JsonTuple(IoTHub)["MessageId"] AS messageId
FROM @extractDataFirstLevel;
OUTPUT @selectData
TO @output
USING Outputters.Csv();
我有一个 JSON 输入看起来像
{
"sessionId": 1234,
"deviceId": "MAC:1234",
"IoTHub": {
"MessageId": "1234-1234-1234-1234"
}
}
如何在 Azure Data Lake Analytics u sql 脚本中提取 sessionId
、deviceId
和 MessageId
的值?
如何在 Azure Data Lake Analytics 上下文中分别使用 JSON 文件格式 usql
设置过程
- 从 [1] 下载存储库
- 在
.\Examples\DataFormats\Microsoft.Analytics.Samples.sln
中打开解决方案
- 构建解决方案
- 获取
.\Examples\DataFormats\Microsoft.Analytics.Samples.Formats\bin\Debug\Microsoft.Analytics.Samples.Formats.dll
- 获取
.\Examples\DataFormats\Microsoft.Analytics.Samples.Formats\bin\Debug\Newtonsoft.Json.dll
- 在
- 在 ADLS 中创建一个用于存储程序集的文件夹(例如
.\assemblies
)- 如果它消失了(发生在我身上),请在文件夹中创建一个示例文件
- 与Visual Studio:
- 将这两个文件添加到 ADLA 解决方案的文件夹中(例如
.\lib\...
) - 打开
Cloud Explorer
,导航到 ADLA 数据库 -> 程序集 -> 右键单击并注册程序集- 将程序集存储在之前在 ADLS 中创建的文件夹中
- 将这两个文件添加到 ADLA 解决方案的文件夹中(例如
- 引用程序集如下所示
用法
JSON 输入数据
- 使用提取器,例如如下所示
- 有关详细信息,请参阅 [2] 和 [3]
资源
[2]GitHub Azure USQL DataFormats
[3] U-SQL - Extract data from json-array
U-SQL 脚本
DECLARE @localDevelopment bool = true;
IF @localDevelopment == true THEN
DROP ASSEMBLY IF EXISTS [Newtonsoft.Json];
DROP ASSEMBLY IF EXISTS [Microsoft.Analytics.Samples.Formats];
CREATE ASSEMBLY [Newtonsoft.Json] FROM @"/lib/Newtonsoft.Json.dll";
CREATE ASSEMBLY [Microsoft.Analytics.Samples.Formats] FROM @"/lib/Microsoft.Analytics.Samples.Formats.dll";
DECLARE @input string = @"/data/input.json";
DECLARE @output string = @"/data/output.csv";
ELSE
DECLARE @input string = @"/data/input.json";
DECLARE @output string = @"/data/output.csv";
END;
REFERENCE ASSEMBLY [Newtonsoft.Json];
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];
//Define schema of file, must map all columns
//Names must match keys
@extractDataFirstLevel =
EXTRACT sessionId int,
deviceId string,
IoTHub string
//Date DateTime
FROM @input
USING new Microsoft.Analytics.Samples.Formats.Json.JsonExtractor();
@selectData =
SELECT sessionId,
deviceId,
Microsoft.Analytics.Samples.Formats.Json.JsonFunctions.JsonTuple(IoTHub)["MessageId"] AS messageId
FROM @extractDataFirstLevel;
OUTPUT @selectData
TO @output
USING Outputters.Csv();