in quick_start/sample_app.py [0:0]
def pre_ingestion_querying(cls, config: ConfigJson, kusto_client: KustoClient) -> None:
"""
First phase, pre ingestion - will reach the provided DB with several control commands and a query based on the configuration File.
:param config: ConfigJson object containing the SampleApp configuration
:param kusto_client: Client to run commands
"""
if config.use_existing_table:
if config.alter_table:
# Tip: Usually table was originally created with a schema appropriate for the data being ingested, so this wouldn't be needed.
# Learn More: For more information about altering table schemas,
# see: https://docs.microsoft.com/azure/data-explorer/kusto/management/alter-table-command
cls.wait_for_user_to_proceed(f"Alter-merge existing table '{config.database_name}.{config.table_name}' to align with the provided schema")
cls.alter_merge_existing_table_to_provided_schema(kusto_client, config.database_name, config.table_name, config.table_schema)
if config.query_data:
# Learn More: For more information about Kusto Query Language (KQL), see: https://docs.microsoft.com/azure/data-explorer/write-queries
cls.wait_for_user_to_proceed(f"Get existing row count in '{config.database_name}.{config.table_name}'")
cls.query_existing_number_of_rows(kusto_client, config.database_name, config.table_name)
else:
# Tip: This is generally a one-time configuration
# Learn More: For more information about creating tables, see: https://docs.microsoft.com/azure/data-explorer/one-click-table
cls.wait_for_user_to_proceed(f"Create table '{config.database_name}.{config.table_name}'")
cls.create_new_table(kusto_client, config.database_name, config.table_name, config.table_schema)
# Learn More:
# Kusto batches data for ingestion efficiency. The default batching policy ingests data when one of the following conditions are met:
# 1) More than 1,000 files were queued for ingestion for the same table by the same user
# 2) More than 1GB of data was queued for ingestion for the same table by the same user
# 3) More than 5 minutes have passed since the first file was queued for ingestion for the same table by the same user
# For more information about customizing ingestion batching policy, see: https://docs.microsoft.com/azure/data-explorer/kusto/management/batchingpolicy
# TODO: Change if needed. Disabled to prevent an existing batching policy from being unintentionally changed
if False and config.batching_policy:
cls.wait_for_user_to_proceed(f"Alter the batching policy for table '{config.database_name}.{config.table_name}'")
cls.alter_batching_policy(kusto_client, config.database_name, config.table_name, config.batching_policy)