How looks like the log of a google sheets sourced table update in BigQuery? - google-sheets

I have several tables in BigQuery that are sourced from Google Sheets tables. When the Google Sheets table is updated then automatically the table in BigQuery is also updated. I am trying to understand how the log of this event looks like in the Operations Logging. My end idea is to create a sink of theses logs in order to create a Pub/Sub and run scheduled queries based on these events.
Thank you

When you use external Table (Google sheet or other) the data are never stored in BigQuery native storage. It's always external.
Therefore, when you update your Google Sheet, nothing happens in BigQuery. It's only when you query the data, you will read (again) the sheet document and get the latest data.
Therefore, there is no insert log that you can track when you update the data in Google Sheet. The only log that you have is when you perform a request in BigQuery to read the data (external or not), as mentioned by Sakshi.

When the external data source(Google Sheet or other) is updated and the BigQuery table associated with it is queried, BigQuery initiates an insert job which is visible in Cloud Logging.
You can find this log by applying filter resource type as BigQuery Project in Cloud Logging console, ie. you will see protoPayload.methodName set to google.cloud.bigquery.v2.JobService.InsertJob.
For more information on BigQuery Logs you can refer to this documentation.

Related

How to create external table using dbt from Google Sheet to BigQuery?

I want to create external table in BigQuery and the data source is from Google Sheet. Is it possible to do it using dbt? In the yml file, where should I put the URI?
The main problem is, I don’t have the access to create it directly in BigQuery.
One way to handle a Google Sheet as a source is by creating a new table out of it in BigQuery via Connected Sheets.
Then, you create a new source in dbt that relies on that table, and start building your downstream models from there.
As far as I know, you cannot create a source directly from dbt, unless it is a seed file, which I woul not recommend unless it is a rather static file (e.g. country names and ISO codes, which is not prone to change over time).
We have a similar situation where the data source is from Google Sheet.
The end user updates the Google sheet on a periodical basic and we replicate it using Fivetran to our Snowflake datastore.
DBT can then pick up the data seamlessly.

Finding delete entity calls to Azure storage table

Is there a way to find out if there was any delete entity call to a azure table in last 'N' minutes? Basically my goal is to find all operations that updated the table in last 'N' minutes.
Update: I am looking for a way to do it with a rest api call for a specific table in the storage.
If using Azure Portal an option, you can find this information via Metrics. For example, see the screenshot below
]
Basically here I am taking a sum of all transactions against my table storage where API call was DeleteEntity.
You can find more information about it here: https://learn.microsoft.com/en-us/azure/storage/common/storage-metrics-in-azure-monitor?toc=%2fazure%2fstorage%2fblobs%2ftoc.json.
UPDATE
If you wish to get this information programmatically, I believe you will need to use Azure Monitoring REST API. I looked up the request sent by Portal and it is sending a request to /subscriptions/<my-subscription-id>/resourceGroups/<my-resource-group>/providers/Microsoft.Storage/storageAccounts/<my-storage-account>/tableServices/default/providers/Microsoft.Insights/metrics/Transactions endpoint.
UPDATE 2
For a specific table, the only option I can think of is to fetch the data from Storage Analytics Logs which is stored in $logs blob container and then parse the CSV file manually. You may find these links helpful:
https://learn.microsoft.com/en-us/rest/api/storageservices/storage-analytics-log-format
https://learn.microsoft.com/en-us/rest/api/storageservices/storage-analytics-logged-operations-and-status-messages#logged-operations

How to remove 'edit access' from query on Google Sheets?

I have a sheet that gets data from BigQuery and everybody can edit. I tried to remove permissions in the tab with a query, but it didn't work because it's connected to a database. Here is the error:
Can't add protection to this sheet because it's connected to a database.
How do I remove query edit permission without removing edit access in all the sheet?
As pointed out in the documentation for this feature under "Change who can see & edit queries or results", to edit the BigQuery query, the user needs both a corresponding BigQuery role and at least the editor permission in the Sheet.
When users don't have a proper BigQuery role, they will get an error like this:
So, as long as the users don't have the required permissions for BigQuery in your project, then they won't be able to edit the query. A user with no role in BigQuery can only see fetched data from a BigQuery query and view the query itself.
If you have users who have BigQuery roles in your project, you can separate the Google Sheet to a file where the users only have viewer permissions for the Sheets file.

Error while querying google sheets connected permanent table in BigQuery

I am trying to set up a scheduled query on BigQuery using new UI, which includes a reference to a table which is connected to a google sheet.
I am unable to schedule the query as BigQuery throws up this error:
"Error while reading table: dataset.table_name, error message: Found corrupted data while opening file."
However, when I manually run the query or directly query the table using:
SELECT * From dataset.table_name
the query runs and shows accurate results, even though the error still pops up.
Is there a workaround to scheduling this query?
There are some known issues and limitations for scheduling queries. For instance, you might need to update your credentials to query the Google Drive data. Moreover, you need to be sure that the destination table for your scheduled query is in the same region as the source of your data as this may give you this error message.
Hope it helps.

Google Data Prep - cannot import table from BigQuery (created from Google Sheets) "Nothing found"

I created one table in BigQuery from Google Sheets, when I tried importing it in Cloud Data Prep it says that there are no tables in the dataset.
I'm not sure whether it's an issue with the Google sheet integration, because when I check the details of the table it says there are 0 rows even though there are 3 rows (it's test data).
I already tried giving Cloud Data Prep viewer permission for both the dataset and the project and nothing changes.
Print screens:
Data Prep
BigQuery table info
BigQuery entries
Well apparently when you create a table from google sheets it is not recognized as an actual table, so I made a query to replicate it to a second table and it works!

Resources