Skip to content

Commit

Permalink
Merge branch 'main' into Modern-controls-GA-part-1
Browse files Browse the repository at this point in the history
  • Loading branch information
mduelae authored Nov 8, 2023
2 parents 7c4c2b1 + f7e4b17 commit 73ed937
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title: "Behavior and format of the Date and Time column in Microsoft Dataverse | MicrosoftDocs"
description: Understand the format of date and time columns.
ms.custom: ""
ms.date: 11/11/2022
ms.date: 11/07/2023
ms.reviewer: ""
ms.suite: ""
ms.tgt_pltfrm: ""
Expand All @@ -12,12 +12,12 @@ applies_to:
- "Dynamics 365 Version 9.x"
- "powerapps"
author: "Mattp123"
ms.assetid: 73d691c7-344e-4c96-8979-c661c290bf81
caps.latest.revision: 47
ms.subservice: dataverse-maker
ms.author: "matp"
search.audienceType:
- maker
contributors:
- tahoon-ms
---
# Behavior and format of the date and time column

Expand Down Expand Up @@ -92,13 +92,15 @@ If the user enters just the date `October 14th, 2023`, the time portion is assum

### Enter invalid values in an app

Different clients have different ways to handle invalid input. For example, in Pacific time zone, daylight savings started on March 12th, 2023 at 2:00 AM, moving the time forward 1 hour to 3:00 AM. The time between 2:00 AM and 3:00 AM on that day doesn't exist. When users try to enter a value in that time range, apps might do one of the following:
Different clients have different ways to handle invalid input. For example, in Pacific time zone, daylight saving started on March 12th, 2023 at 2:00 AM, moving the time forward one hour to 3:00 AM. The time between 2:00 AM and 3:00 AM on that day doesn't exist. When users try to enter a value in that time range, apps might do one of the following:

* Change to the previous or next valid time.
* Revert to the last known value.
* Show an error message.
* Don't show times between 2:00 AM and 3:00 AM in the time picker, so that users can't select them in the first place.

Similarly, different clients have different ways to handle repeated time ranges. For example, in Pacific time zone, daylight saving ended on November 5th, 2023 at 2:00 AM, moving the time backward one hour to 1:00 AM. The time between 1:00 AM and 2:00 AM on that day is repeated twice. A time like 1:30 AM could refer to either time zones. If you need to unambiguously show or enter times in that range, it's best to temporarily switch to a time zone that doesn't use daylight saving.

### Get raw values with Web API

Dataverse stores `2023-10-15T07:30:00Z` (or `2023-10-15` for **Date only** behavior). Users in all time zones get these with a [Web API request for the value](../../developer/data-platform/webapi/query-data-web-api.md#select-columns):
Expand Down
24 changes: 14 additions & 10 deletions powerapps-docs/maker/data-platform/create-edit-elastic-tables.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,29 +52,29 @@ Use standard tables when:
- Your application requires relational modeling and needs transactional capability across tables and during plugin execution stages.
- Your application requires complex joins.

The choice of table should be based on the specific needs of your application. A combination of both types of tables may be appropriate.
The choice of table should be based on the specific needs of your application. A combination of both types of tables might be appropriate.

## Horizontal scaling and performance

As your business data grows, elastic tables provide unlimited auto scalability based on your application workload, both for storage size and throughput, such as the number of records created, updated, or deleted in a given timeframe.

If your business scenario requires very large volume of data writes, application makers can make use of Dataverse multiple request API's, such as `CreateMultiple`, `UpdateMultiple`, and `DeleteMultiple`, to achieve more throughput within Dataverse throttling limits. More information: [Developer guide: Bulk Operation messages (preview)](../../developer/data-platform/bulk-operations.md) and [Optimize performance for bulk operations](/power-apps/developer/data-platform/optimize-performance-create-update)
If your business scenario requires very large volume of data writes, application makers can make use of Dataverse multiple request APIs, such as `CreateMultiple`, `UpdateMultiple`, and `DeleteMultiple`, to achieve more throughput within Dataverse throttling limits. More information: [Developer guide: Bulk Operation messages (preview)](../../developer/data-platform/bulk-operations.md) and [Optimize performance for bulk operations](/power-apps/developer/data-platform/optimize-performance-create-update)

### Automatic removal of data

Time to live (TTL) policies ensure that you're always working with the most up-to-date and accurate information, while optimizing resources and reducing risk. The TTL live value is set in seconds on a record, and it's interpreted as a delta from the time that a record was last modified.

### Flexible schema with JSON columns

Elastic tables enable you to store and query data with varying structures, without the need for pre-defined schemas or migrations. There's no need to write custom code to map the imported data into a fixed schema. More information: [Developer guide: Query JSON columns in elastic tables (Preview)](../../developer/data-platform/query-json-columns-elastic-tables.md)
Elastic tables enable you to store and query data with varying structures, without the need for predefined schemas or migrations. There's no need to write custom code to map the imported data into a fixed schema. More information: [Developer guide: Query JSON columns in elastic tables (Preview)](../../developer/data-platform/query-json-columns-elastic-tables.md)

## Considerations when you use elastic tables

Although elastic tables are great for handling large volume of requests at scale, the advantages come with a few trades offs, which should be kept in mind:

- Elastic tables don't support multi-record transactions. This means that multiple write operations happening as part of a single request execution aren't transactional with each other. For example, if you have a synchronous plug-in step registered on the `PostOperation` stage for `Create message` on an elastic table, any error in your plug-in won't roll back the created record in Dataverse. Validations in preplug-ins will still work as expected since they run before the main stage.
- Elastic tables support strong consistency only within a logical session. Outside session context, you might not see changes to a row immediately. More information: [Developer guide: Consistency level](../../developer/data-platform/elastic-tables.md#consistency-level)
- Elastic tables don't support filters on related tables when creating views, advanced find, or any query in general using API. If you frequently need to filter on related table columns, we recommend that you denormalize columns from related tables, which needs filtering into the main table itself. Consider a retailer with two elastic tables: customer and address. One customer has many addresses. You want to return query results for all customers from the customer table whose city value in the address table is New York. In this example, when querying customer table, you want to apply a filter on the city column of the related address table. This isn't supported for elastic tables. One way to make this work is to denormalize the city column into the Customer table so that all customers city values are present in the customer table itself.
- Elastic tables don't support filters on related tables when creating views, advanced find, or any query in general using API. If you frequently need to filter on related table columns, we recommend that you denormalize columns from related tables, which need filtering into the main table itself. Consider a retailer with two elastic tables: customer and address. One customer has many addresses. You want to return query results for all customers from the customer table whose city value in the address table is New York. In this example, when querying customer table, you want to apply a filter on the city column of the related address table. This isn't supported for elastic tables. One way to make this work is to denormalize the city column into the Customer table so that all customers city values are present in the customer table itself.

## Elastic tables feature support

Expand Down Expand Up @@ -139,28 +139,32 @@ You create an elastic table just like any other new table in Dataverse.
1. Select **New table** > **New table** on the command bar.
1. On the right properties pane, expand **Advanced options**.
1. Select **Elastic** as the table **Type**.
:::image type="content" source="media/elastic-table-type.png" alt-text="Select Elastic as the table Type":::
1. Select the properties you want, and then select **Save**. More information: [Advanced options](create-edit-entities-portal.md#advanced-options)

## Known issues

- Currently Power Apps (make.powerapps.com) allows you to set a many-to-one (N:1) relationship with an elastic table where the N table is a standard table. Standard table will have a lookup column pointing to an elastic table row. While retrieving rows for a standard table in such a relationship, the lookup column that points to an elastic table row won't have the formatted value returned when the elastic table row has the `partitionid` set. More information: [Developer Guide: Partitioning and horizontal scaling](../../developer/data-platform/elastic-tables.md#partitioning-and-horizontal-scaling)
- Getting related rows when making a query on an elastic table currently doesn't work. However, getting related rows works when retrieving a single elastic table row.
- When [time to live (TTL)](#automatic-removal-of-data) is used on a row, the row will get deleted from the elastic table when TTL has expired. If it's synchronized to a data lake using [Synapse Link for Dataverse](export-to-data-lake.md) before TTL expiry, it won't be deleted from the data lake.
- When [time to live (TTL)](#automatic-removal-of-data) is used on a row, the row will get deleted from the elastic table when TTL has expired. If it's synchronized to a data lake using [Azure Synapse Link for Dataverse](export-to-data-lake.md) before TTL expiry, it won't be deleted from the data lake.

## Import data into elastic tables

To import data, use the bulk API (../../developer/data-platform/bulk-operations-elastic-tables). This allows you to achieve 10 times the throughput with the same Dataverse API throttling limits.

## For developers

Elastic tables have different behaviors and capabilities than standard tables when developers use them with Dataverse APIs. The following articles for developers describe these differences:

- [Elastic tables (preview)](../../developer/data-platform/elastic-tables.md)
- [For developers: Elastic tables (preview)](../../developer/data-platform/elastic-tables.md)
- [Create elastic tables using code (preview)](../../developer/data-platform/create-elastic-tables.md)
- [Use elastic tables using code (preview)](../../developer/data-platform/use-elastic-tables.md)
- [Query JSON columns in elastic tables (preview)](../../developer/data-platform/query-json-columns-elastic-tables.md)
- [Bulk Operation messages (preview)](../../developer/data-platform/bulk-operations.md)
- [Elastic table sample code (preview)](../../developer/data-platform/elastic-table-samples.md)


- [Send parallel requests](../../developer/data-platform/send-parallel-requests.md)
- [Service protection API limits](../../developer/data-platform/api-limits.md)

## See also

[Create and edit tables using Power Apps](create-edit-entities-portal.md)

[Create and edit tables using Power Apps](create-edit-entities-portal.md)
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 73ed937

Please sign in to comment.