Synapse是否有能力处理半结构化数据?

问题描述

我的数据湖中有Web应用程序日志。一些日志条目具有其他字段没有的字段。我可以直接在Synapse中使用此数据,还是必须先使用ADF对其进行规范化以匹配Synapse中的架构?

解决方法

简短的回答是“否”(假设它不是json日志)。您不能使用Azure Synapse的T-SQL加载此类数据。您必须先对其进行转换。


Azure Synapse不仅是一个数据库。它是提供与Analytics(分析)相关的服务的保护伞。 SQL Pool(Synapse DB)就是其中之一。

https://docs.microsoft.com/en-us/azure/synapse-analytics/overview-what-is

它还提供编排功能:https://docs.microsoft.com/en-us/azure/synapse-analytics/get-started-pipelines

这对你来说是个大问题。

如果不是一次性的东西,ADF可能会变得昂贵。

,

您应该真正了解的一个Azure Synapse功能是SQL on-demand,目前处于预览状态。它可以处理数据湖中的JSON,镶木地板和csv文件。

在数据湖中的同一位置,您是否有不同的Web日志,它们的文件名不同,或者各个文件中的记录不同?如果是前者,则只需编写一个SQL按需T-SQL语句并使用filename函数对文件名进行过滤,例如:

SELECT
    r.filename() AS [filename],*
FROM OPENROWSET(
    BULK 'csv/taxi/yellow_tripdata_2017-*.csv',DATA_SOURCE = 'SqlOnDemandDemo',FORMAT = 'CSV',PARSER_VERSION = '2.0',FIRSTROW = 2) 
        WITH (C1 varchar(200) ) AS [r]
WHERE
    r.filename() IN ('yellow_tripdata_2017-10.csv','yellow_tripdata_2017-11.csv','yellow_tripdata_2017-12.csv');

示例查询改编自Microsoft文章here。您可以看到您不必事先知道该模式。

会有一些区别,例如逗号数量,记录开头的某种标识符等,如果是这种情况,请发布更多详细信息和示例数据。