---
schema_version: "1"
id: 9eed2268f366a6195c4e002c6c0cd7a8f68cb2cdd146a021d9baa320b3233eaa
title: Projection Interactions
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/analytics/bi_dev_guide_bindings/guides/bi-dashboard-bindings-wave-designer-use-case-projection.md
canonical_url: https://developer.salesforce.com/docs/analytics/bi-dev-guide-bindings/guide/bi-dashboard-bindings-wave-designer-use-case-projection.html
source_site: developer.salesforce.com
content_type: documentation
content_hash: dff149ff720a3e02d88c9a89df4b93c5dc4c6b22ae6486e3c08787485ac1e3c8
products:
  - Analytics Interactions
  - analytics
---
# Projection Interactions

Use the `asProjection()` serialization function to specify the projection of a field in a SAQL query.

Given this data from a source query:

```json
[
    {expression: "first", alias: "foo"}
    {expression: "second", alias: "bar"}
]
```

You can bind the projection of a field in a target query.

```javascript
q = foreach q generate {{row(stepFoo.selection, [0], ["expression", "alias"]).asProjection()}};
```

After CRM Analytics evaluates the interaction, the projection becomes:

```javascript
q = foreach q generate first as 'foo';
```

To return all rows in the interaction, create this filter.

```javascript
q = foreach q generate {{row(stepFoo.selection, [], ["expression", "alias"]).asProjection()}};
```

After CRM Analytics evaluates the interaction, the filter becomes:

```javascript
q = foreach q generate first as 'foo', second as 'bar';
```
