Skip to main content

Using Form/Workbench 2022.2, connecting to MSSQL 15 with 10.9 SDE over the top.

 

I'm not an SQL expert, and this statement was a combination of my knowledge, ChatGPT and colleagues knowledge

SELECT
    p.*,
    -- Calculate the rate of nitrogen (N) application over the entire spread.
    -- Convert the area to hectares, then multiply by the rate to get the total weight.
    -- Finally, divide by the applied area to obtain the average rate.
    SUM(p.Shape.STArea()  / 10000 * p.NutrientN / p.AppliedAreaInHa) OVER () AS  total_n_rate,
 
    -- Calculate the total fertilizer rate over the entire spread.
    -- Convert the area to hectares, then multiply by the rate to get the total weight.
    -- Finally, divide by the applied area to obtain the average rate.
    SUM(p.Shape.STArea()  / 10000 * p.RateKgPerHa / p.AppliedAreaInHa) OVER () AS total_fert_rate
FROM
    aAgtech]. MASTER]. ProofOfPlacementSwath_evw] p
WHERE
    p.ÂSwathMergeID] = '@Value(swathmerge)';

This runs fine in SSMS with no errors and returns expect results.

 

When I put this into an SQL Executor  in FME it runs and I get the expected results, but it gives me a warning:

 

imageI'm happy that the query is working, but it fills up the logs with 1000s of lines of warnings which suppresses other warnings in the logs.

 

The code snippet i've included obviously has comments. I've found advice to remove comments but I get the same result regardless of comments being there or not.

 

Any idea whats not quite right with this?

The error message threw me, because while it happens in the schema detection, the actual issue is somehow the semicolon. Solution is to either add this to the first row:

FME_SQL_DELIMITER ;

Or remove the semicolon. They're generally not needed because FME will always batch the SQL statement as one unless you tell it otherwise, which is what the FME_SQL_DELIMITER is for, to run in separate batches like a GO.

Even a statement like Select 1 as OBJECTID; will create the same warning message about being unable to detect the schema.


If it isn't the semicolon that's confusing FME, try modifying the SELECT statement to

SELECT TOP(100) PERCENT
FROM ...

FME will detect it and try to be less "intelligent" about the query.


The error message threw me, because while it happens in the schema detection, the actual issue is somehow the semicolon. Solution is to either add this to the first row:

FME_SQL_DELIMITER ;

Or remove the semicolon. They're generally not needed because FME will always batch the SQL statement as one unless you tell it otherwise, which is what the FME_SQL_DELIMITER is for, to run in separate batches like a GO.

Even a statement like Select 1 as OBJECTID; will create the same warning message about being unable to detect the schema.

Thats the problem! remove the semicolon and it works


Reply