【发布时间】:2020-12-21 12:45:26
【问题描述】:
我的数据湖中有网络应用日志。一些日志条目具有其他人没有的字段。我可以直接在 Synapse 中处理这些数据,还是必须先使用 ADF 对其进行标准化以匹配 Synapse 中的架构?
【问题讨论】:
标签: azure-data-lake azure-synapse
我的数据湖中有网络应用日志。一些日志条目具有其他人没有的字段。我可以直接在 Synapse 中处理这些数据,还是必须先使用 ADF 对其进行标准化以匹配 Synapse 中的架构?
【问题讨论】:
标签: azure-data-lake azure-synapse
您真正应该关注的一个 Azure Synapse 功能是 serverless SQL pools, (以前称为 SQL on-demand)目前处于预览状态。它可以处理数据湖中的 JSON、parquet 和 csv 文件。
您的数据湖中的同一位置是否有不同的网络日志(按文件名区分),或者单个文件中有不同的记录?如果是前者,您可以简单地编写 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。您可以看到您不必提前知道架构。
会有一些东西可以区分它们,例如逗号的数量、记录前面的某种标识符等,如果是这种情况,请发布更多详细信息和示例数据。
【讨论】:
简短的回答是否定的(假设它不是 json 日志)。您不能使用 Azure Synapse 的 T-SQL 加载此类数据。你必须先转换它。
Azure Synapse 不仅仅是一个数据库。它是一个提供与分析相关的服务的保护伞。 SQL 池(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 可能会变得很昂贵。
【讨论】: