I am trying to setup a data-driven subscription and it works fine except when 2 of the parameters are set to take dynamic values instead of static ones.
The strucutre is basically
Param1 -> read from database
Param2 -> read from database
Param3s -> read from database
Param3 -> split Param3s (multivalued parameter, allowed values depend on Params 1 and 2)
Note that Param3 is a multi-value parameter and therefore it's value is populated by proxy from a string parameter (param3s) that is split.
The above does not work and gives the following error when saving the subscription
This report requires a default or user-defined value for the report parameter 'Param3'. To run or subscribe to this report, you must provide a parameter value. (rsReportParameterValueNotSet)
However, when setting Param1 and Param2 to static values it works.
There is nothing useful in the ReportServer logs to help in identifying what is going on.
Anyone have any clue??
Apparently all parameters need to have a default value set to them, otherwise it won't work.
I had parameters 1 and 2 set without the default values in the report so it didn't work.
Related
I'm trying to make Azure monitor workbook with Azure Resource Graph (ARG) query as backend. There is dropdown presented to use to choose datetime value which is passed as parameter to ARG to filter results. It's expressed as {dateCreated:start} value in query. This works fine as long as there is something selected by user in dropdown, problem is that if nothing is selected in datetime field then condition essentially becomes coalesce(todatetime(),todatetime('2016-11-09T02:53:17.4582226Z')) which obviously fails validation logic since todatetime() expects something being passed to it. Is there something in KQL which will allow to overcome this?
Resources
| where type == 'microsoft.compute/virtualmachines'
| where tags['datecreated'] > coalesce(todatetime({dateCreated:start}),todatetime('2016-11-09T02:53:17.4582226Z') )
iff() and isempty() will do the trick for you:
Resources
| where type == 'microsoft.compute/virtualmachines'
| where tags['datecreated'] > iff(isempty({dateCreated:start}), todatetime('2016-11-09T02:53:17.4582226Z'), todatetime({dateCreated:start}))
I am a newbie to Datafctory. As part of my pipeline, I execute an sp to fetch the next record to process using Lookup and then use the returned value in a Set Variable.
If the SP returns noting then the Set Variable fails with the following error
Activity SetBatchId failed: The expression 'activity('usp_get_next_archive_batch').output.firstRow.id' cannot be evaluated because property 'firstRow' doesn't exist, available properties are 'effectiveIntegrationRuntime'.
Is there a way in DF to check the property exists before using it
thanks
Please add a question mark after ‘output’. Means ‘output?.firstRow’.
See also this post.
Azure Data Factory: For each item() value does not exist for a particular attribute
The expression should be 'activity('usp_get_next_archive_batch').output['firstRow'].['id']
Please forgive me if my question does not make sense.
What im trying to do is to inject in values for query parameters
GET1 File
Scenario:
Given path 'search'
And param filter[id] = id (default value or variable from another feature file)
POST1 File
Scenario:
def newid = new id made by a post call
def checkid = read call(GET1) {id : newid}
like if one of my feature files creates a new id then i want to do a get call with the above scenario. therefore i need a parameter there which takes in the new id.
On the other hand if i do not have an id newly created or the test creating it is not part of the suite. i want to still be able to run the above mentioned scenario but this time it has a default value to it.
Instead of param use params. It is designed so that any keys with null values are ignored.
After the null is set on the first line below, you can make a call to another feature, and overwrite the value of criteria. If it still is null, no params will be set.
* def criteria = null
Given path 'search'
And params { filter: '#(criteria)' }
There are multiple other ways to do this, also refer to this set of examples for data-driven search params: dynamic-params.feature
The doc on conditional logic may also give you some ideas.
I am trying to modify the code of an exsisting SQL report. This report uses a command object. Currently the SQl codes says the following:
WHERE **dept.definition_id ={?Measure}**
AND (({?Period Interval}=2
AND dept_qd_later.sum_facts_id IS NULL
AND dept_qd.DENOMINATOR_QUARTER IS NOT NULL)
OR ({?Period Interval}=3
AND dept_md_later.sum_facts_id IS NULL
AND dept_md.DENOMINATOR_MONTH IS NOT NULL))
LAST
I would like to modify the "Measure Parameter" to accept multiple values. I have updated the command parameter box to accept multiple values. I have tried to modify the SQL to the below in statement:
WHERE **dept.definition_id in({?Measure})**
AND (({?Period Interval}=2
AND dept_qd_later.sum_facts_id IS NULL
AND dept_qd.DENOMINATOR_QUARTER IS NOT NULL)
OR ({?Period Interval}=3
AND dept_md_later.sum_facts_id IS NULL
AND dept_md.DENOMINATOR_MONTH IS NOT NULL)))
LAST
However, when I try to insert multiple measure IDs, the report does not run. Can someone help me figure out what I am doing wrong? I am a Crystal novice so please respond in plain language. Thanks!
I think David is right. I tried something similar with a command object and it works when entering a comma separated list into the parameter prompt. Which means that you don't need to set the "allow multiple values" option on the parameter.
If the field were a string, you would have to enter the values with quotes as if they were part of the SQL statement.
I'm converting some RDO code to ODBC Provider code in .NET.
The problem is parameter names were not specified in the orignal code, but param values were retrieved by parameter name after the command was executed.
Is there anyway to have parameter names populated by the provider once the command is executed so calling code can access params by name.
Let me show you an example of the declaration of param and accessing of it.
With rdqryClntBasic
.Parameters.Add(.CreateParameter) : .Parameters(0).Direction = ParameterDirection.Input
.Parameters(0).DbType = DbType.String
.Parameters(0).Value = sClntProdCd
End With
.EffectiveDate = ToDate(rdqryClntBasic.Parameters("dtEffDt").Value)
You can now see how this "used to work in RDO/VB". For some reason it would accept this and know what the param names were after execution. I imagine it had to do another round trip to the db to get this info.
Is there anyway to mimic this behaviour in .NET for ODBC Provider (using Oracle)? Or am I stuck manually specifying the param names in the code (I understand this is the better option, but wondering what the alternative is to match the original code as closely as possible).
No, parameters in ODBC are positional not by name.