Прежде всего, если вы используете метод .Configure
, вы не будете вводить MyConfigPath
, но IOptions
(посмотрите еще на свою первую ссылку). Таким образом, ваша инъекция становится примерно такой:
public MyClass(IOptions myConfigPathOptions)
Во-вторых, configuration.GetSection
предназначен для доступа к целому разделу, а не только к строке. Если вы хотите напрямую получить доступ к «MyConfigPath» из JSON, вы можете использовать configuration["AppSettings:MyConfigPath"]
. Вы можете использовать GetSection
как configuration.GetSection("AppSettings")
, чтобы получить все настройки приложения в целом.
Предлагаю вам ознакомиться с документацией для IConfiguration и IOptions
Я предполагаю, что вы действительно пытаетесь сделать что-то например:
У вас есть класс для всех ваших настроек:
public class MyAppSettings {
public string MyConfigPath {get; set;}
public int MyOtherSetting { get; set; } // sample of how you could have more
}
Json для вышеупомянутого с добавленным «MyOtherSetting» будет выглядеть примерно так:
{
"AppSettings": {
"MyConfigPath": "C:\\EmployeeUpload",
"MyOtherSetting" : 501
}
}
В вашем классе запуска вы можете использовать это:
services.Configure(configuration.GetSection("AppSettings")
Теперь для инъекций вам нужно будет использовать что-то вроде этого:
MyClass(IOptions settingOptions)
{
_myConfigPath = myConfigPath.Value.MyConfigPath;
}
Примечание: Когда мы создаем группу, строки, имеющие Null
, игнорируются. Если у нас есть 3 строки, одна из которых имеет значение Null
, то среднее значение делится на 2, а не на 3, потому что третье значение было Null
. Ключевым моментом здесь является использование функции Window () .
from pyspark.sql.functions import avg, col, when
from pyspark.sql.window import Window
w = Window().partitionBy('fruit')
#Replace negative values of 'qty' with Null, as we don't want to consider them while averaging.
df = df.withColumn('qty',when(col('qty')<0,None).otherwise(col('qty')))
df = df.withColumn('qty',when(col('qty').isNull(),avg(col('qty')).over(w)).otherwise(col('qty')))
df.show()
+-----+---+---+
|fruit| id|qty|
+-----+---+---+
| Pear| 04|6.0|
| Pear| 05|2.0|
|Mango| 06|6.0|
|Mango| 07|4.0|
|Mango| 08|2.0|
|Apple| 01|5.0|
|Apple| 02|1.0|
|Apple| 03|3.0|
+-----+---+---+