Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Next up in the FabCon + SQLCon recap series: The roadmap for Microsoft SQL and Maximizing Developer experiences in Fabric. All sessions are available on-demand after the live show. Register now

Reply
Ira_27
Helper I
Helper I

Using aifunc in notebook to extract csv data

Hi Microsoft Fabric Community,

 

I am testing the new AI Functions in Microsoft Fabric notebooks and using df.ai.extract() with aifunc.ExtractLabel() to extract values from a csv file that has comma seperated value where data starts from 10th row.

 

My code looks like this:

from synapse.ml.spark import aifunc
df = spark.read.text("Files/xxx.csv")
dfcsv = df.ai.extract(
    labels=[
        aifunc.ExtractLabel(
            "Name",
            description="Return only the Name without brackets or quotes."
        ),
        "Name",
        "Age",
        "Total %"
    ],
    input_col="value"
)

The extraction works, but the returned values often come back like:

["ABC123"]
"ABC123"
['ABC123']

Instead of plain text: "ABC123"

My Questions:

  1. Is this expected behavior for aifunc.extract()?
  2. Is there a parameter or setting to force scalar/plain text output instead of arrays or quoted strings?
  3. What is the recommended production approach for cleaning or normalizing these outputs in Fabric notebooks?
  4. If multiple values are detected, how does the function decide array vs string return type?

I’d appreciate any best practices or examples from others using AI Functions in Fabric.

Thank you.

1 REPLY 1
arabalca
Resolver IV
Resolver IV

Hi @Ira_27 ,

The behavior you're describing is expected. By default, ai.extract returns a list for each label, even if only one value is found. That's why you see ["ABC123"] instead of ABC123 — it's not a bug, it's how it works internally.

 

The fix is max_items=1 (https://learn.microsoft.com/en-us/fabric/data-science/ai-functions/pyspark/extract?tabs=labels#retur...) That parameter tells the function to return a scalar instead of a list. Give this a try this:

labels=[
        aifunc.ExtractLabel(
            "Name",
            description="Return only the Name without brackets or quotes.",
            max_items=1,
            type="string"
        ),
        aifunc.ExtractLabel("Age", max_items=1, type="integer"),
        aifunc.ExtractLabel("Total %", max_items=1, type="number"),
    ]

 

For other hand If your data starts at row 10, it's worth filtering those rows out before calling ai.extract — otherwise the model will try to extract values from lines that aren't actual data, which can produce empty or incorrect results for those rows.

 

If my comment helped solve your question, it would be great if you could like the comment and mark it as the accepted solution. It helps others with the same issue and also motivates me to keep contributing.

 

Thanks a lot, I really appreciate it.

Helpful resources

Announcements
FabCon and SQLCon Highlights Carousel

FabCon &SQLCon Highlights

Experience the highlights from FabCon & SQLCon, available live and on-demand starting April 14th.

New to Fabric survey Carousel

New to Fabric Survey

If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.

March Fabric Update Carousel

Fabric Monthly Update - March 2026

Check out the March 2026 Fabric update to learn about new features.