Azure Synapse数据流过滤行无输出,请求技术排查
核对列名与数据细节
Parquet列名区分大小写,先确认Filter里的SCTSTCO和SelectColumns输出的列名完全一致(包括大小写)。另外,检查该列实际数据:如果是字符串类型,看看ABCD是否带前后空格、全角字符或不可见符号——可以在SelectColumns后加个Derived Column,用trim(SCTSTCO)或length(SCTSTCO)查看真实值的长度和内容。修正Filter条件语法
Synapse Data Flow的Filter用的是Spark表达式,字符串比较必须用双引号,单引号会被识别为单个字符常量。比如正确写法是SCTSTCO == "ABCD",而不是SCTSTCO=='ABCD',这是最容易踩的语法坑,会直接导致条件永远不成立。排除Null值干扰
如果SCTSTCO列存在Null值,直接用==比较会返回Null(视为不满足条件),可以把条件改成isNotNull(SCTSTCO) && SCTSTCO == "ABCD",先过滤掉Null行再匹配目标值。验证数据实际存在性
数据预览可能只加载了部分样本,试试运行完整的Debug管道,看Filter的实际输出行数。另外,在SelectColumns后加个Aggregate组件,用count(SCTSTCO)统计总行数,collect_set(SCTSTCO)列出该列所有唯一值,确认ABCD确实在数据里。检查读取配置与分区
如果Parquet是分区存储的,确认数据源读取时没过滤掉包含目标数据的分区。另外,查看数据源的Allow schema drift设置,要是开启了schema drift,可能出现列名被自动转换的情况,导致Filter里的列名实际不存在。
内容的提问来源于stack exchange,提问作者kaintxu

